금융 서비스, 사기 방지 시스템 등과 같이 한 조각의 데이터라도 소실되면 안 되는 상황에서, 아파치 카프카(Apache Kafka)의 도입은 신중한 검토가 필요합니다.
카프카 도입 전 반드시 고려해야 할 의문점들:
- 카프카를 통해 데이터가 절대로 소실되지 않을 것이라는 것을 100% 확신할 수 있는가?
- 메시지가 소실될 가능성은 있는가? 있다면, 그 원인을 어떻게 파악하고, 대비할 수 있는가?
- 분산 시스템 환경에서 예상치 못한 장애에도 불구하고, 데이터의 안전성을 어떻게 보장할 수 있는가?
- 중복 데이터가 발생했을 때, 이를 어떻게 효과적으로 처리할 것인가?
이러한 의문들에 답하기 위해, 이번 포스트에서는 카프카의 장애 케이스, 데이터 복제, 컨슈머 처리 보증, 오프셋 관리, 데이터 손실 모니터링 및 대처 방안에 대해 알아보겠습니다. 또한, 카프카가 제공하는 신뢰성과 무손실 데이터 스트리밍을 실제로 구현하는 방법을 알아보겠습니다.
카프카 장애 케이스
- 네트워크 장애
- NIC 하드웨어 문제, 또는 Network 자체 문제 등으로 인하여 Producer Machine, Broker Machine, Consumer Machine, 그리고 Zookeeper Machine 모두 네트워크 장애가 발생할 수 있습니다.
- Disk 장애
- Broker Machine의 Disk 장애가 발생할 수 있습니다.
- Client의 application Thread 장애
- Client의 application Thread가 장애가 발생하여 멈출 수 있습니다.
- Machine down 장애
- 모든 Machine은 예상치 못하게 down 될 수 있습니다.
다중화(Replication)
Reference