개발/고민과 생각

kiensis, spark, ....

hojak99 2023. 1. 12. 19:52

chatGPT 라는 놈을 요즘 아주 유용하게 사용하고 있다. 예전엔 질문들을 할 곳이 마땅치도 않아서 블라인드 it 엔지니어 게시판에 질문글 올리거나 했는데..


나는 로그를 수집하고 프로세싱 과정을 거쳐 어딘가에 저장을 할텐데 어떤 식으로 처리를 하는지 일련의 과정들이 궁금해졌다.
kinesis 와 spark 를 사용한다는 전제 하에 얘기를 해보겠다.

kinesis 와 spark 는 어쨌든 실시간 데이터를 분석하고 처리하는 시스템인데.. 큰 차이점이 있다고 한다.
kinesis 는 aws 에서 제공하는 서비스로 실시간 데이터를 수집하고 처리 및 분석을 하고
spark 는 오픈소스이며 대량의 데이터를 병렬로 처리할 수 있다고 한다. 그리고 데이터를 처리하기 위해 여러 라이브러리들을 제공하는 것으로 보인다. 

즉 앞 단에서는 kinesis 를 통해 실시간 데이터를 수집하고 spark 를 사용해서 해당 데이터를 처리하고 분석하는 용도 또는 어딘가에 데이터를 일괄 처리하여 저장한다던가로 사용하는 것으로 생각할 수 있을 것 같다. kinesis 는 또 aws 에서 제공하는 서비스이기도 하니 s3 나 redshift, eleasticsearch 와 같은 다른 aws 서비스와 데이터소스를 통합할 수 있을 수 있다한다. 

kinesis 에서도 데이터를 처리할 수는 있지만 실시간성으로 대량의 데이터 또는 복잡한 처리 작업을 했을 때 성능 저하가 발생하기에 대용량의 데이터를 처리하고 복잡한 처리 작업을 효율적으로 수행할 수 있는 spark 를 이용하는 것으로 보면 될 것 같다.

내가 직접 구축한다고 했을 때 kinesis 의 경우 비용이 만만치 않을 것으로 보였다. 그래서 찾아보니 그 대안으로는 오픈소스 프로젝트들인 Apache Kafka, Apache Flink, Apache Storm 이 존재하는 것으로 보인다. 

Kafka 를 기준으로 비교를 했을 때 각각의 트레이드오프가 있을 것 같다. 
흔히 우리가 사용하는 aws 서비스 같이 kinesis 는 개발자의 손이 덜타고 kafka 는 구축을 해야하니 이런 부분에서 차이가 있을 것 같다. 그리고 확장 시에는 kafka 는 파티션으로, kinesis 는 샤드를 통해 확장할 수 있겠고 kinesis 의 경우 샤드 당 요청 등이 제한되어 있는 것으로 보인다. 그 외 데이터의 리텐션 기간, 요금, 확장성, 관리 등... 잘 따져서 해야 할 듯...?

아 그리고 spark 에서 kinesis 에 어떻게 접근해서 데이터를 일괄 처리하는지 보니까 kinesis 라이브러리를 통해 spark 에서 데이터를 가져와 일괄 처리를 할 수 있는 것으로 보인다.

chatGPT 와 약간의 구글링을 통해 이렇게 또 궁금증이 약간 해소되었다. 생각의 흐름대로 chatGPT 에서는 여러 질문들을 할 수 있어서 좋은 것 같다.

어쨌든 이런 쪽은 직접 구성해볼 가능성이 매우 적을 것으로 보여서 간단히 이런 식으로 구성할 수 있고, 그 대안으로는 이런 시스템들이 있으며 각각의 트레이드오프는 이렇다... 정도로만 알아보았다.


spark 를 검색해보니 이제 hadoop 이 나왔다. 
hadoop 도 비슷하게 많은 데이터를 처리해준다고 하는데 hadoop 은 HDFS(Hadoop Disitributed File System) 라는 곳에 데이터를 저장하는 것으로 보이고 spark 도 HDFS 를 지원하나 인메모리에서 동작이 가능하여 좀 더 빠르게 처리가 가능한 것으로 보인다.
잘 설명해주는 것으로 보이는 https://www.geeksforgeeks.org/difference-between-hadoop-and-spark/ 사이트다.
 
반응형