728x90

안녕하세요, 요즘 야근에 푹 빠져 살고있어서 오랜만에 글을 적습니다.

예전부터 늘  공유하고 싶었던 아파치 스톰과 카프카의 장단점에 대해 적어보도록하겠습니다.

저는 FDS(이상거래방지 시스템) 과 관련된 솔루션 회사에 근무를 하고 있고,

제가 오기전부터 대용량 처리를 위한 파이프라인의 한 축을 카프카 아닌 스톰을 데이터 스트림의 실시간 처리를 위해 채택을 했습니다.

이런식으로 데이터가 오갈때 log 를 수집하기도 하며 룰탐지를 통해서 미리 예방할수도 있습니다. 요즘은 금감원에서 더더욱 책임을 은행에  묻고 있어서  더 견고하게 만들어야하는 경우가 생기고있습니다.

왜 카프카 가 아닌 스톰을 했는지 알지는 못하여서 둘의 차이점을 살펴보면서 왜 도입하게 되었는지 알아보도록하겠습니다.

먼저, 대용량 처리에 필수적인 요소인 아차피 카프카에 대해서 알아보겠습니다.

 

Apache Kafka는 스트림 처리에 사용되는 오픈 소스 도구이며 publish-subscribe model을 기반으로 작동을 합니다.

대량의 데이터를 처리하는데 사용되고 비정형 데이터를 효율적인 방식으로 더 빠르게 처리할 수 있습니다, 또한

데이터 스트림 처리를 위해 소스와 대상 사이의 중개자로 자주 사용됩니다.  

그 외에 데이터를 수집, 처리, 저장 통합하는 데이터 수집, 처리, 통합 플랫폼입니다. (주로 Java 언어와 같이 사용됨)

우리는 카프카의 동작을 이해하려면 "이벤트 스트리밍 플랫폼" 에 대해 이해를 하고 있어야 합니다.

간략하게, 카프카는 수신된 모든 데이터를 디스크에 저장합니다. 그런 다음 데이터가 손실되지 않도록 안전하게 보관하기 위해 카프카 클러스터에 데이터를 복사합니다. 한편, 아파치 카프카에 고유한 메시지 식별자가 없기 때문에 실벽자는 메시지가 전송된 시간만 고려해양합니다.

특정 주제에 대해 누가 읽었는지 또는 특정 메시지를 보았는지도 추적하지 않습니다.

소비자는 이 데이터를 모니터링을 해야하며 데이터를 받을 때는 오프셋만 선택할 수 있습니다.

그러면 해당 오프셋부터 순차적으로 데이터가 변환됩니다.

Apache Storm은 데이터 스트림의 실시간 처리에 사용되는 분산 시스템입니다.

주요 기능은 대량의 데이터를 빠른 속도로 처리하는것에 있고, 중간 규모의 클러스터에서는 노드당 초당 백만개 이상의 레코드를 처리할 수 있습니다.

설정이 쉽고 운영이 간편합니다.또한 확장성과 내결함성 기능을 제공하고 있으며 사용이 간단하고 모든 프로그래밍 언어와 함께 사용할 수 있는 기능을 제공합니다.

공식 사이트에선 아파치 스톰을 사용하면 무제한의 데이터 스트림을 안정적으로 처리할수 있으며, 일괄 처리를 위해 Hadoop이 했던 일을 실시간 처리를 위해 수행 할 수 있다고합니다.

벤치마크에서 노드당 초당 백만 개 이상의 튜플을 처리한 것으로 기록될 정도로 Apache Storm은 빠릅니다. 확장 가능하고, 내결함성이 있으며, 데이터 처리를 보장하고, 설정과 운영이 쉽습니다.

아파치 스톰 아파치 카프카

트위터(현 X) 에서 만듬 linkedin에서 만듬
실시간 메시지 처리 플랫폼 분산 메시지 처리 플랫폼
데이터를 저장하는데 사용되지 않고 데이터를 전송하는 중개자 역할을 한다. 로컬 파일 시스템을 유지하고 데이터를 저장하는 데 사용된다.
외부 종속성을 포함하지 않습니다. 카프카 서버를 실행하기 위해 주키퍼에 대한 종속성을 포함함
보안 기능을 제공합니다. 데이터 보안 기능은 제공하지 않습니다.
스톰이 제공하는 지연 성능은 일반적으로 1-2초 미만입니다. 카프카가 제공하는 레이턴시 성능은 일반적으로 밀리초 단위입니다.
모든 프로그래밍 언어와 함께 사용할 수 있는 기능을 제공합니다. 주로 자바 언어를 함께 사용됩니다.
사용과 운영이 쉽습니다. 확장성 및 내구성 같은 기능이 제공됩니다.
자바와 같은 언어로 사용하여 작성됩니다. 스칼라 및JVM 언어를 사용하여 작성됩니다.

 

위와 같은 스톰의 장점 즉 지연 성능은 일반적으로 1-2초 미만이며 보안기능을 제공함으로써

금융거래에 이상거래방지시스템 과 같이 1초 단위가 중요하고 데이터를 저장하지 않고 이상거래를 탐지해서 데이터를 처리하는 것에 조금 더 적합하다고 생각해서 카프카 대신 아파치 스톰을 도입한것으로 보입니다. 또한, 사용과 운영이 쉬운것이 특징이고, 러닝커브가 카프카에 비해 어렵지 않는 다는 이유로 유지보수에 쉬울것으로 판단해서 도입한것으로 생각이 듭니다.

이 글은 아직 완성이 되지 않았지만 공유를 드리겠습니다.

 

 

스톰을 사용하는 회사 리스트 : Twitter(X), Spofity, infochimps, RocketFuel, Wego 

외국계 대기업들이 주로 사용하고있습니다.

제가 알고 있는 국내 기업은 : 농협은행이 사용하였지만, 2025년 이후로는 카프카로 변경되는걸로 알고있습니다.

728x90

'잡담' 카테고리의 다른 글

안녕하세요, 개발자 던킨입니다.  (0) 2024.09.20
JDBC -1  (0) 2022.01.13
API-IO (입출력 성능향상 보조 스트림)  (0) 2021.12.20
Input, Output  (0) 2021.12.20
복사했습니다!