MSK
MSK는 AWS에서 제공하는 Managed Streaming for Apache Kafka 의 약자로, 대중적인 오픈소스 분산 스트리밍 플랫폼인 Apache Kafka를 AWS가 대신 관리해 주는 서비스이다.
주요 특징과 장점
- 완전 관리형: 서버 관리, 패치, 설정 등 운영 부담이 없다. AWS가 클러스터의 상태를 모니터링하고 문제가 생기면 자동으로 복구한다.
- 고가용성: 데이터 복제와 다중 가용 영역(Multi-AZ)배치를 통해 데이터 유실 가능성을 최소화하고 안정성을 높인다.
- 보안: AWS IAM을 통한 권한 관리, VPC 내 격리, 데이터 암호화등 강력한 보안 기능을 기본으로 제공한다.
- 확장성: 트래픽이 늘어나면 클릭 몇 번으로 브로커 노드의 수나 스토리지 용량을 쉽게 확장할 수 있다.
메세지 유실 관리
- 다중 가용 영역 및 복제
MSK는 데이터를 물리적으로 떨어진 여러 데이터 센터에 분산 저장하여 하드웨어 장애나 특정 지역의 재해로부터 데이터를 보호한다
- 다중 AZ 배치: 클러스터를 생성할 때 2개 또는 3개의 AZ를 선택하면, MSK가 브로커 노드를 각 AZ에 균등하게 배치한다.
- 복제 계수: 기본적으로 데이터를 최소 2개 또는 3개의 복제본으로 유지한다. 하나의 브로커나 AZ 전체에 장애가 발생해도 다른 AZ에 있는 복제본을 통해 서비스를 계속하고 데이터를 보존할 수 있다.
- 생산자(Producer)의 데이터 전송 보장
메세지가 브로커에 도달하기 전이나 도달하는 과정에서의 유실을 막기 위해 acks 설정을 활용한다.
- acks=all: MSK 권장 설정으로, 리더(Leader)와 모든 팔로워(Follower) 복제본에 데이터가 완전히 기록되었다는 응답을 받은 후에야 전송 성공으로 간주한다. 지연 시간은 조금 늘어날 수 있지만 데이터 유실을 방지하는 가장 강력한 방법이다.
** 자동 리더 교체: Producer는 항상 리더 브로커에게 메세지를 보낸다. 그러다가 리더가 죽으면 수 초내에 팔로워가 리더로 승격된다.
- 영구 스토리지 및 자동 복구
- EBS 기반 저장: MSK 브로커는 AWS의 고성능 블록 스토리지인 EBS를 사용하여 데이터를 저장한다. 서버 자체에 문제가 생겨도 데이터가 담긴 스토리지는 독립적으로 유지된다.
- 자동 브로커 교체: 특정 브로커에 장애가 감지되면 MSK는 즉시 새로운 브로커 노드를 프로비저닝하고 기존 스토리지를 연결하여 클러스터를 정상 상태로 되돌린다.