이번 글은 Amazon 공식 사이트에서 MSK 개발자 가이드 문서를 번역/편집하여 작성 하였습니다.
참고자료 : Welcome to the Amazon MSK Developer Guide – Amazon Managed Streaming for Apache Kafka
Amazon MSK 란?
Amazon Managed Streaming for Apache Kafka (Amazon MSK) 는 Apache Kafka 클러스터 생성, 업데이트 등 구성 및 관리를 제공하는 완전 관리 형 서비스 입니다. 사용 중인 Apache Kafka 의 기존 애플리케이션, 도구 및 플러그인이 지원되므로 애플리케이션 코드를 변경할 필요가 없습니다.
Cluster 구성
- Broker Node : Amazon MSK 클러스터를 생성할 때 Amazon MSK가 각 A-Z영역에 생성할 브로커 노드 수를 지정합니다. VPC 내의 A-Z 영역에 브로커 노드를 배치 합니다.
- ZooKeeper Node : Amazon MSK는 ZooKeeper 노드를 사용할 수 있습니다. 아파치 ZooKeeper 는 안정성이 뛰어난 분산 조정을 지원합니다.
- Producer, Consumer, Topic : Amazon MSK를 사용하면 Apache Kafka 데이터 영역 작업을 사용하여 Topic을 만들고, 데이터를 Producing/Consuming 할 수 있습니다.
- 모든 클러스터 작업은 아래의 방법으로 제어 할 수 있습니다.
- AWS Management Console
- AWS CLI
- AWS SDK
Cluster 장애 복구 시나리오
- 구성 컨포넌트의 Fail Status를 감지하고 자동으로 복구
- Broker Fail 을 감지하면 비정상적 또는 연결할 수 없는 Broker를 새로 생성하여 교체
- 이전 Broker의 스토리지를 재 사용하여 Apache Kafka가 복제해야 하는 데이터를 줄여 복구 시간 감소
- 복구 이후 Broker IP가 동일 하여 Producer와 Consumer 에서 문제 없이 통신 가능
Amazon MSK 장점
- 완전 관리형 : Cluster 및 ZooKeeper 구성 및 유지 관리가 필요 없습니다.
- 고가용성 : Cluster 상태 모니터링을 하며 비정상 Broker를 자동으로 교체 및 복구를 제공하여 다운 타임이 없습니다.
- 높은 보안 : VPC 의 Private Subnet을 사용하여 망분리, Cotrol-plane API에 대한 IAM role 과 TLS 암호화를 통한 인증 및 권한 제어가 가능합니다.
- 완벽한 호환 : 기존 사용 중이던 Apache Kafka 애플리케이션 코드와 완벽하게 호환이 되어 쉽게 마이그레이션 할 수 있습니다.
- 확장성
- Cluster 확장 : Cluster 에 영향을 주지 않으며 Broker를 증설 할 수 있습니다.
- Storage 오토 스케일 : Broker 가용성에 영향 없이 EBS 스토리지 확장을 할 수 있습니다.
- Vertical 스케일링 : Kafka 파티션을 재할당 하지 않고 Broker Node 의 크기를 변경 할 수 있습니다.
Amazon MSK 가 지원하는 항목
인프라 관리 보다 스트리밍 애플리케이션 생성에 더 집중할 수 있도록 아래 주황색 음영에 해당하는 부분을 지원 하고 있습니다.
Amazon MSK 동작 방식
Amazon MSK 는 Apache kafka 를 사용하였기 때문에 Kafka 동작 방식과 동일 합니다.
- Producer 가 메세지를 생성 하여 Broker에 전송
- 각 Broker 에 메세지 데이터 복제
- Broker에 매핑 되어있는 Consumer가 메세지 데이터를 가지고 가서 처리
- Producer가 Topic 의 파티션에 데이터를 쓰는 방식은 새로운 데이터 메세지가 점점 쌓이는 Queue 방식입니다.
- Consumer 는 각 Topic의 파티션에 쌓여있는 데이터 메세지를 순차적으로 가져가서 처리 하게 됩니다.
연결 가능한 AWS 서비스
- Amazon Glue Schema Registry : 데이터 스트림을 구조와 포맷을 정의 하여 중앙에서 스키마를 검색, 제어
- Amazon Kinesis Data Analytics : 복잡한 데이터 스트림 처리
- Amazon Data Migration Service : 변경된 데이터 캡쳐
- AWS Lambda : MSK를 이벤트로 이용
- AWS Certificate Manager : Client TLS 인증을 위한 인증서
- Amazon IAM : Control-Plane API 인증
- Amazon KMS : 스토리지 볼륨 암호화
- AWS CloudFormation : IaC를 이용한 Cluster 프로비져닝
- Amazon CloudWatch : 모니터링을 위한 Metric 수집
1부 에서는 Amazon MSK 가 어떤 서비스 인지? 어떤 방식으로 동작 하는지? Amazon 에서 어떤 부분을 지원 하는지? 에 대해 알아 보았습니다. 2부 에서는 MSK 서비스를 어떻게 이용 할 수 있는지 알아 보도록 하겠습니다.
참고 사이트
- https://docs.aws.amazon.com/msk/latest/developerguide/what-is-msk.html
- https://www.reply.com/data-reply/en/kafka-on-aws
참고 문서