이벤트 스트리밍은 인체의 중추신경계에 비유할 수 있는 디지털 시스템의 핵심 개념이다.
인체의 중추 신경계는
인체의 중추신경계가 신체 곳곳에서 발생하는 모든 감각 정보를 실시간으로 수집하고 통합하여, 필요한 신체 부위가 즉각적으로 반응하도록 조절하는 것처럼, 이벤트 스트리밍 플랫폼은 기업의 다양한 데이터 소스에서 발생하는 모든 '이벤트(사건)'를 실시간으로 포착한다. 그리고 이 데이터를 필요한 시스템에 즉시 전달하여, 기업 전체가 하나의 유기체처럼 유기적으로 반응하고 의사결정을 내릴 수 있도록 돕는다.
이는 산업이 점점 더 소프트웨어로 정의되고 자동화되는 ‘always-on’(24/7) 세상과, 소프트웨어를 이용하는 주체가 점점 소프트웨어가 되어가고 있는 세상을 위한 기술 기반이다.
기술적인 맥락에서, 이벤트 스트리밍은
다양한 시스템에서 발생하는 이벤트를 실시간으로 받아오고 조회가능한 데이터로 저장한다. 데이터를 순서대로, 내구성있게 저장하여, 실시간 혹은 사후에 조작하고 화면에 나타내어 분석 결과를 다른 시스템에 전달한다.
결국 이벤트 스트리밍을 도입하면 이벤트 스트리밍을 도입한다는 것은, 애플리케이션에서 발생하는 '언제, 어디서, 누가, 무엇을 했는가' 라는 모든 사건의 흐름을 실시간으로 감지하고, 이를 바탕으로 데이터에 기반한 즉각적인 대응과 자동화된 의사결정이 가능한 디지털 신경망을 구축하는 것과 같다.
카프카가 단순히 데이터를 한 곳에서 다른 곳으로 전달하는 '파이프'가 아니라, 데이터의 발생부터 저장, 처리, 활용에 이르는 전 과정을 책임지는 하나의 완결된 생태계라는 의미를 담고 있다.
첫 번째 기능,
카프카는 다른 시스템에서 발생하는 이벤트 스트림을 실시간으로 쓰고(Write), 필요한 시스템이 이를 즉시 읽어갈(Read) 수 있는 통로를 제공한다.
두 번째 기능,
이벤트 스트림을 원하는 기간만큼(e.g., 7일, 30일, 혹은 영구적으로) 삭제하지 않고 안전하게 보관한다.
세 번째 기능,
이벤트가 발생하는 그 순간 실시간으로 처리하는 것은 물론, 저장된 과거의 데이터를 다시 처리할 수 있는 기능을 제공한다.
이 모든 기능은 여러 서버(노드)에 걸쳐 분산되어 동작하므로, 장애가 발생해도 자동으로 복구되며, 트래픽 증가에 맞춰 유연하게 확장할 수 있고, 강력한 보안이 보장된다.
또한, 카프카는 베어메탈, 가상머신, 컨테이너 등 어떤 인프라 환경에도 배포할 수 있어, 기업이 특정 클라우드에 종속되지 않는 기술적 유연성을 확보할 수 있게 해준다.
카프카 시스템은 크게 서버 클러스터와, 이 클러스터와 상호작용하는 클라이언트로 구성된다.
카프카는 하나 이상의 서버 클러스터로 실행된다.
이 중 일부는 브로커라 불리는 저장 계층을 형성하고, 또 다른 서버는 Kafka Connect를 실행해 관계형 DB나 다른 카프카 클러스터와 같은 기존 시스템과 데이터를 지속적으로 가져오고 내보낸다. 서버가 하나라도 실패하면, 나머지 서버가 역할을 이어받아 데이터 손실 없이 연속 운영을 보장한다.
클라이언트는 카프카와 연결되어 데이터를 주고받는 프로그램(또는 라이브러리)이다. 이 클라이언트를 쓰면, 네트워크가 불안정하거나 서버에 문제가 생겨도 안전하게 데이터를 읽고 쓰면서 처리할 수 있다.
프로듀서(Producer)
컨슈머 (Consumer)
카프카의 세계에서 모든 데이터는 '이벤트(Event)' 단위로 통신한다. 이벤트란, 우리의 비즈니스나 애플리케이션에서 발생한 "어떤 사건(something happened)"에 대한 기록이다. 예를 들어, 사용자의 '결제 완료', '페이지 클릭', '센서 값 측정' 등이 모두 하나의 이벤트가 될 수 있다.
프로듀서는 데이터를 보내고(write) 소비자는 데이터를 받아서 처리한다(read & process). Kafka에서는 프로듀서와 컨슈머가 완전히 분리되어 서로를 알지 못한다. 생산자와 소비자가 서로의 상태나 처리 속도를 전혀 신경 쓰지 않기 때문에, 시스템 용량을 키울 때 한쪽이 다른 쪽의 병목을 일으키지 않는다. 에컨대 생산자는 소비자의 데이터 처리 속도를 신경쓰지 않고 데이터를 kafka에 기록하기만 하면 된다.
또한 Kafka는 이벤트를 정확히 한 번만 처리할 수 있는 기능 등 다양한 보장 기능을 제공한다. 그래서 중복 처리나 누락 없이 안전하게 데이터를 전달할 수 있다.
카프카에선 이벤트를 토픽이라는 단위로 묶어서 디스크에 보관(영속적)한다. 단순하게 설명하면
전통적인 메시징 시스템과 달리, 카프카는 컨슈머가 이벤트를 한번 읽어가도 데이터를 바로 삭제하지 않는다.