[Kafka] 아파치 카프카 개요 및 설명

1. 개요

  • 참고한 강의 (Inflearn)
  • 우리 팀 (NHN COMMERCE)에서는 Kafka를 사용하고 있습니다. 코드도 알고 사용도 해보았지만, 정확히 카프카가 무엇인지 알기 위해 들어보았습니다.

2. Apache Kafka

2-1. Before Kafka

  • 처음에는 단방향 통신만 하였습니다.
  • 시간이 갈수록 Source/Target Application 갯수가 늘어나면서 데이터 전송라인이 많아졌습니다. -> 배포와 장애에 대응하기 어렵습니다.
  • Data Format의 유지보수가 어려워졌습니다!

2-2. After Kakfa

  • 링크드인에서 개발. 현재는 오픈소스

2-3. Kafka features

  • Source Application과 Target Application의 Coupling을 약하게 하기 위해 나왔습니다. 스크린샷 2021-08-11 오후 11 47 03

  • 위와 같은 플로우로 데이터를 전송합니다.
  • Source Application에서 보낼 수 있는 Data Format은 거의 제한이 없습니다. (json, tsv, avro, etc…)

2-4. Topic

  • Kafka는 각종 데이터를 담는 Topic이라는 개념이 있는데, 쉽게 말해 Queue라고 보시면 됩니다. 스크린샷 2021-08-11 오후 11 49 21

  • 큐에 데이터를 넣는 역할은 Producer가, 데이터를 가져가는 역할은 Consumer가 합니다.

3. 결론

  • Kafka는 고가용성으로서 서버에 이슈가 생기거나, 갑작스럽게 전원이 내려가도 데이터를 손실없이 복구할 수 있습니다.
  • 낮은 지연(latency), 높은 처리량(throughput)을 통해서 효과적으로 많은 데이터를 처리할 수 있습니다. (빅데이터 처리에도 많이 씀!)