기본적인 데이터 처리 방식에서는 "파일 저장 → 읽기"
데이터 전송 속도 증가와 빅데이터 처리 기술의 고도화로 "파일저장&(동시에)&읽기" ⇒ 이러한 기술을 스트리밍 서비스 라고 부름
→ 스트리밍 서비스에서 실시간으로 데이터를 처리하는 곳에서 사용하는 기술 중 하나가 카프카Kafka
⇒ 스트리밍 서비스에서 실시간으로 데이터를 처리하는 사이트 ex) 유튜브
카프카는 대규모 실시간 데이터 스트리밍을 처리하는데 사용되는 분산 이벤트 스트리밍 플랫폼이다.
"분산 이벤트"라는 말은 여러 대의 서버(노드)에 분산되어 저장된 이벤트(데이터)를 말한다. "이벤트 스트리밍"은 대량의 이벤트(데이터)를 실시간으로 처리하는 방식을 의미한다.
즉, "분산 이벤트 스트리밍 플랫폼"은 분산되어 있는 이벤트(데이터)들을 실시간으로 처리하는 플랫폼이라는 뜻이 됩니다.
카프카 개발 전 링크드인의 데이터 처리 시스템

각 애플리케이션과 DB가 도착지점까지 모든 시스템을 거치는 End - To - End 로 연결(=각 파이프라인의 파편화)되어 있어 있어 다음과 같은 문제가 발생한다.
1. 시스템 복잡도 증가 (Complexity)
2. 데이터 파이프라인 관리의 어려움
⇒ 해결책
시스템을 만들자 ⇒ 카프카
모든 이벤트와 데이터의 흐름을 중앙에서 관리하는 카프카가 개발된다.
카프카를 적용한 후 링크드인의 데이터 처리 시스템이다.

카프카는 Pub-Sub 모델의 메세지 큐 형태로 동작한다.
카프카를 이해하기 위해서는 메세지/이벤트 브로커와 메세지 큐에 대해 알아야한다.
메세지 큐는 메시지 지향 미들웨어 (MOM: 서로 다른 시스템, 애플리케이션, 서비스 간에 메시지를 교환하는 방식)"를 구현한 시스템으로 프로그램(프로세스 )간의 데이터를 교환할 때 사용하는 기술

MQ에서 메세지는 Endpoint 간에 직접적으로 통신하지 않고, 중간데 Queue를 통해 중개된다.
메세지 큐는 크게 Point to Point(P2P)와 Publish/Subscribe (Pub / Sub) 모델로 구분된다.
Point to Point(P2P) : 한 명의 발행자의 메세지는 한 명의 컨슈머에 의해 소비되는 방식으로, 즉 1:1 메시지 전송 방식
Publish/Subscribe(Pub/Sub) : Pub/Sub 모델은 비동기 메세징 전송 방식으로, 발신자의 메세지에는 수신자가 정해져 있지 않은 상태로 publish 함. 그리고 이를 Subscribe(구독)을 한 수신자만 정해진 메세지(topic)을 받을 수 있다. 이처럼 수신자는 발신자 정보가 없어도 원하는 메세지만 수신할 수 있으며, 이런 구조 덕분에 높은 확장성을 확보
Pub/Sub 모델의 구체적인 발행/구독 방식은 각 서비스 마다 다르다.

