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을 약하게 하기 위해 나왔습니다.
- 위와 같은 플로우로 데이터를 전송합니다.
- Source Application에서 보낼 수 있는 Data Format은 거의 제한이 없습니다. (json, tsv, avro, etc…)
2-4. Topic
-
Kafka는 각종 데이터를 담는 Topic이라는 개념이 있는데, 쉽게 말해 Queue라고 보시면 됩니다.
-
큐에 데이터를 넣는 역할은 Producer가, 데이터를 가져가는 역할은 Consumer가 합니다.
3. 결론
- Kafka는 고가용성으로서 서버에 이슈가 생기거나, 갑작스럽게 전원이 내려가도 데이터를 손실없이 복구할 수 있습니다.
- 낮은 지연(latency), 높은 처리량(throughput)을 통해서 효과적으로 많은 데이터를 처리할 수 있습니다. (빅데이터 처리에도 많이 씀!)