이벤트 스트리밍 플랫폼

  1. 이벤트 : 어플리케이션, 마이크로 서비스 등에서 어떤 프로세스가 작동하는 트리거
  2. 스트리밍 : 데이터의 지속적인 흐름

어플리케이션과 같은 이벤트 소스에서 발생한 데이터를 지속적으로 수집, 처리, 저장하는 플랫폼이다.

아파치 카프카는 이벤트 스트림을 지속적으로 저장하고, 실시간 또는 회고적으로 처리한다. 주식 거래 어플리케이션과 같이 실시간으로 많은 데이터를 주고 받아야 하는 경우에 사용된다.

Untitled

Server

카프카는 하나 이상의 서버의 집합으로 실행된다. 데이터를 저장하는 계층(broker), 데이터를 지속적으로 내보내고 받는 서버가 있다.

Client

이벤트 스트림을 지속적으로 읽고, 쓰는 애플리케이션. consumer 와 producer가 Client에 해당한다.

Producer

이벤트를 쓰는 클라이언트

Consumer

이벤트를 구독하는(읽는) 클라이언트

Topic

버킷 내의 스트림을 분산시켜 저장, 관리하는 네임스페이스.

Partition

토픽은 분할된다. 하나의 토픽은 다른 카프카 브로커에 있는 버킷에 분산된다. 새로운 이벤트가 토픽에 publish 될 때, 토픽 파티션 중 하나에 추가되는 것이다. 같은 이벤트 key를 가진 이벤트들은 같은 파티션에 저장된다. Kafka 는 지정된 주제 파티션의 소비자가 항상 해당 파티션의 이벤트를 작성된 순서와 정확히 동일한 순서로 읽을 것임을 보장 합니다.

kafkajs를 이용해 만드는 nest server 는 Client. consumer, producer 모두 가능한 듯..