Amazon Managed Streaming for Apache Kafka 기능

Amazon MSK를 선택해야 하는 이유

Amazon Managed Streaming for Apache Kafka(Amazon MSK)는 완전관리형 Apache Kafka, Kafka Connect, Amazon MSK Replicator를 제공합니다. Apache Kafka는 실시간으로 스트리밍 데이터를 수집하고 처리하는 데 최적화된 분산 데이터 스토어입니다. Amazon MSK는 클러스터 인프라를 프로비저닝하고, Apache Kafka 클러스터를 구성하고, 장애 시 서버를 대체하고, 서버 패치 및 업그레이드를 오케스트레이션하며, 고가용성 클러스터를 설계하고, 데이터 저장 및 보안의 내구성을 보장하고, 모니터링 및 경보를 설정하고, 규모 조정을 실행하여 로드 변경을 지원합니다. Amazon MSK를 사용하면 Apache Kafka 클러스터를 관리하는 것보다 스트리밍 이벤트 애플리케이션을 개발하고 실행하는 데 더 많은 시간을 할애할 수 있습니다.

도로의 조감도

확장 가능한 통합

Amazon MSK는 데이터 수집 및 처리 서비스의 중심에 있는 현대적인 메시징 및 이벤트 중심 애플리케이션을 위한 통합 핵심 요소이며 마이크로서비스 애플리케이션 아키텍처입니다. 다양한 다른 AWS 서비스를 비롯한 여러 가지 방법으로 다른 시스템과 통합할 수 있으므로 애플리케이션을 더 간단하고 빠르게 개발할 수 있습니다. 자체 커넥터를 가져와서 Amazon MSK Connect를 통해 완전관리형 인프라에 배포할 수 있습니다. 또는 Amazon S3, Amazon Redshift, Amazon Managed Service for Apache Flink, AWS Lambda 등 계속 늘어나고 있는 다른 AWS 서비스와의 네이티브 통합 목록에서 선택할 수 있습니다. 또한 Amazon MSK는 AWS Identity and Access Management(AWS IAM), AWS Certificate Manager(ACM), AWS Key Management Service(AWS KMS)와 통합하여 데이터에 대한 안전하고 인증되고 승인된 클라이언트 액세스를 제공합니다. AWS Glue 스키마 레지스트리를 통해 스키마 거버넌스를 적용할 수도 있습니다.

도시 풍경

Apache Cassandra와 호환

Amazon MSK는 Apache Kafka의 모든 기능을 기본적으로 지원하며, 정식 출시 후 몇 주 내에 새 버전의 Apache Kafka를 사용할 수 있습니다.

Amazon MSK는 Apache Kafka의 오픈 소스 클라이언트 프로토콜과의 완벽한 호환성을 유지하므로 Apache Kafka용으로 구축된 애플리케이션 및 도구를 애플리케이션 코드 변경 없이 즉시 Amazon MSK와 함께 사용할 수 있습니다.

몇 단계만 거치면 프로비저닝된 클러스터의 Apache Kafka 버전을 업그레이드할 수 있으므로 새 Apache Kafka 버전에 제공되는 기능 및 버그 수정을 활용할 시기를 결정할 수 있습니다. Amazon MSK는 실행 중인 클러스터의 버전 업그레이드 배포를 자동화하여 클라이언트 I/O 가용성을 유지합니다.

자체 클러스터 유형 선택

Amazon MSK 프로비저닝은 Apache Kafka 클러스터에 대한 세밀한 제어를 제공합니다. 브로커 유형을 선택하고, 서버 인스턴스를 사전 프로비저닝하며, 원하는 스토리지 유형을 선택하고, 원하는 Apache Kafka 버전을 선택할 수 있습니다. 워크로드 변동에 따라 클러스터 규모를 조정할 시기와 용량을 선택할 수도 있습니다.

Amazon MSK Serverless는 Apache Kafka 클러스터를 완전히 관리하므로 워크로드에 필요한 용량을 추정하거나 트래픽 변화에 따라 워크로드를 확장할 시기를 결정할 필요가 없습니다.

관리할 서버 없음

어떤 클러스터 유형을 선택하든 AWS Management Console에서 몇 단계만 거치면 가용성이 높고 안전하며 클러스터의 운영 상태를 자동으로 유지 관리하는 Amazon MSK 고급 모니터링 및 탐지 시스템이 지원되는 완전관리형 클러스터를 생성할 수 있습니다.

Apache Kafka는 메타데이터 관리를 위해 Apache Kafka Raft(KRaft) 또는 Apache ZooKeeper를 사용합니다. Amazon MSK를 사용하면 지원되는 Apache Kafka 버전에서 두 가지 모드 중 하나로 클러스터를 생성할 수 있습니다. 또한 Amazon MSK는 추가 비용 없이 이러한 추가 메타데이터 노드를 관리합니다.

다양한 브로커 유형

Express 브로커는 MSK 프로비저닝에 따라 제공되는 브로커 유형 중 하나입니다. Express 브로커를 사용하면 Apache Kafka를 더 간단하게 관리하고 더 비용 효율적으로 대규모로 실행할 수 있으며 기대한 대로 지연 시간이 짧고 더 탄력적입니다. Express 브로커에는 관리 오버헤드가 필요 없고 브로커당 최대 3배 더 많은 처리량을 제공하며 최대 20배 더 빠르게 확장할 수 있는 사실상 무제한의 탄력적인 스토리지 용량이 포함되어 있습니다. 또한 Amazon Managed Streaming for Apache Kafka(Amazon MSK) 서비스의 Standard Apache Kafka 브로커보다 최대 90% 빠르게 복구할 수 있습니다.

MSK 프로비저닝의 Standard 브로커는 클러스터의 성능을 구성할 수 있는 최고의 유연성을 제공합니다. 클러스터의 다양한 구성 중에서 선택하여 가용성, 내구성, 처리량, 지연 시간을 비롯한 차원을 조정할 수 있습니다. Standard 브로커에서는 클러스터의 스토리지 구성도 제어하고 스토리지 프로비저닝 및 사용률 관리도 담당합니다.

스토리지 옵션

Express 브로커에는 크기 조정, 프로비저닝 또는 지속적인 용량 관리가 필요 없는 사실상 무제한의 탄력적인 스토리지 용량이 포함되어 있습니다. 스토리지 용량은 데이터 보존 요구 사항에 맞게 자동으로 확장되며 사용한 스토리지에 대해서만 비용을 지불하면 됩니다.

계층형 스토리지를 사용하면 스토리지 용량을 프로비저닝하고 관리할 필요 없이 거의 무제한의 데이터를 Amazon MSK에 저장할 수 있습니다. 기존 클러스터에 대해 몇 단계만 거치면 계층형 스토리지를 활성화할 수 있고 사용한 만큼만 비용을 지불하면 됩니다. 먼저 성능 최적화 기본 스토리지 티어에 데이터를 저장한 후 Amazon MSK가 더 오래 보존할 데이터를 저비용 티어로 자동 이동하도록 설정할 수 있습니다. 이 기능은 Amazon MSK가 제공되는 모든 AWS 리전에서 지원됩니다. 계층형 스토리지 사용을 시작하는 방법에 대해 알아보려면 Amazon MSK 개발자 안내서를 참조하세요.

뛰어난 복원력

모든 클러스터는 여러 가용 영역(기본값 3개)에 분산되며 Amazon MSK는 추가 비용 없이 이러한 가용 영역 전체에 대한 데이터 복제를 제공합니다. 또한 클러스터 가용성은 99.9%의 가용성을 보장하는 Amazon MSK 서비스 수준 계약이 적용됩니다.

Amazon MSK는 문제를 빠르게 감지하고 이에 대응하는 자동화된 시스템을 갖추고 있습니다. 구성 요소 장애가 발생하면 애플리케이션 가동 중단 없이 Amazon MSK가 자동으로 구성 요소를 교체합니다. 또한 클러스터를 최신 상태로 유지하고 원활하게 실행되도록 필요에 따라 소프트웨어 패치를 자동으로 배포합니다.

MSK 프로비저닝의 Amazon MSK Serverless 및 Express 브로커는 3개 복제와 같은 모범 사례 구성을 적용하고 복제 및 복구와 같은 백그라운드 작업을 위한 대역폭을 예약하므로 클러스터 리소스의 예측 가능한 가용성을 보다 쉽게 달성할 수 있습니다.

Amazon MSK Replicator를 사용하면 다른 리전의 보조 백업 클러스터에 연속 데이터 복제를 설정할 수 있으므로 가용성이 높고 내결함성이 뛰어난 다중 리전 애플리케이션을 구축하여 복원력을 높일 수 있습니다. 또한 MSK Replicator를 사용하여 여러 지리적 리전에서 데이터 액세스 지연 시간을 줄이거나 파트너에게 데이터를 배포할 수 있습니다.

뛰어난 보안

Apache Kafka 클러스터는 Amazon MSK로 관리되는 Amazon Virtual Private Cloud(Amazon VPC)에서 실행됩니다. 자체 Amazon VPC에 있는 Kafka 클라이언트는 Amazon MSK가 PC에 배포하는 교차 계정 탄력적 네트워크 인터페이스를 통해 클러스터에 비공개로 액세스할 수 있습니다. Kafka 클라이언트가 하나 이상의 VPC 또는 AWS 계정에 분산되어 있는 경우에도 다중 VPC 프라이빗 연결 기능을 사용하여 클러스터에 비공개로 연결할 수 있습니다. 이 기능은 AWS PrivateLink 솔루션을 자체 관리하는 데 따르는 운영 오버헤드를 없애고 Amazon MSK 클러스터의 규모 조정에 따라 원활하게 규모를 조정하므로 추가 구성 변경 없이 클러스터에 대한 프라이빗 연결을 유지할 수 있습니다. 또한 다중 VPC 프라이빗 연결은 다른 VPC 연결 솔루션과 관련된 비중복 IP, 복잡한 피어링, 라우팅 테이블을 관리하는 데 따르는 어려움을 해소합니다.  다중 VPC 프라이빗 연결 기능을 사용하면 연결된 VPC 간에 IP가 겹칠 수 있습니다.

IAM 액세스 제어는 무료 보안 옵션이며, 액세스를 제어하기 위해 IAM 역할 또는 사용자 정책을 사용하여 클러스터 인증 및 Apache Kafka API 권한 부여를 단순화합니다. IAM 액세스 제어를 사용하면 더 이상 Apached Kafka에 대한 클라이언트 인증 및 권한 부여를 제어하기 위해 일회성 액세스 관리 시스템을 구축 및 실행할 필요가 없습니다. 사용자의 클러스터는 기본적으로 최소 권한을 통해 보호됩니다. 프로비저닝된 클러스터의 경우 Apache Kafka 액세스 제어 목록(ACL)과 함께 Simple Authentication and Security Layer(SASL)/Salted Challenge Response Authentication Mechanism(SCRAM) 또는 상호 전송 계층 보안(TLS) 인증을 사용하여 클라이언트 액세스를 제어할 수도 있습니다.

Amazon MSK는 특수 구성 또는 서드 파티 도구를 사용하지 않고 저장된 데이터를 암호화합니다. 프로비저닝된 클러스터의 경우 기본적으로 AWS KMS 키를 사용하거나 자체 키를 사용하여 모든 저장 데이터를 암호화될 수 있습니다. 또한 클러스터의 브로커 간, 클라이언트와 브로커 간에 TLS를 통해 전송 중 데이터를 암호화할 수 있습니다. 서버리스 클러스터의 경우 모든 저장 데이터는 기본적으로 서비스 관리형 키를 사용하여 암호화되고 모든 전송 중 데이터는 기본적으로 TLS를 통해 암호화됩니다.

Amazon MSK는 인터넷을 통해 Apache Kafka 2.6.0 이상 버전을 실행하는 Amazon MSK 클러스터의 브로커에 안전하게 연결하는 옵션을 제공합니다. 퍼블릭 액세스를 활성화하면 프라이빗 Amazon VPC 외부의 인증된 클라이언트가 암호화된 데이터를 특정 Amazon MSK 클러스터 안팎으로 스트리밍할 수 있습니다.

확장성

가동 중지 시간 없이 몇 분 만에 브로커를 더 추가하거나 더 큰 규모의 브로커 인스턴스로 이동하여 MSK 프로비저닝 클러스터를 확장할 수 있습니다. 마찬가지로 브로커를 제거하거나 더 작은 규모의 브로커 인스턴스로 이동하여 클러스터 용량을 스케일 다운할 수 있습니다.

Amazon MSK Serverless 클러스터는 애플리케이션의 처리량 요구에 따라 워크로드에 사용할 수 있는 컴퓨팅 및 스토리지 리소스를 자동으로 조정합니다.

Amazon MSK는 파티션 할당을 자동으로 관리하는 인기 있는 Apache Kafka용 오픈 소스 도구인 Cruise Control과 통합됩니다. 서버리스 클러스터의 경우 Amazon MSK가 자동으로 파티션 할당을 관리합니다.

AWS 관리 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용하여 스토리지 요구 사항의 변화에 맞게 브로커당 프로비저닝된 스토리지 양을 원활하게 확장할 수 있습니다. 증가하는 스트리밍 요구 사항을 충족하도록 스토리지를 자동으로 확장하는 자동 크기 조정 정책을 생성할 수도 있습니다.

구성 가능

Amazon MSK를 사용하면 클러스터를 원하는 대로 구성할 수 있습니다. Express 브로커는 Amazon MSK 권장 모범 사례 기본값으로 사전 구성되어 있습니다. 따라서 즉시 사용 가능한 최적의 가용성, 내구성, 처리량 성능을 제공합니다. 워크로드의 특정 요구 사항에 맞게 선택한 구성을 사용자 지정할 수 있습니다. 반면, Standard 브로커는 30개 이상의 서로 다른 클러스터 구성을 수정할 수 있는 유연성을 제공합니다. 따라서 가용성, 가격 성능, 전체 클러스터 동작을 정확한 요구 사항에 맞게 조정할 수 있습니다. 또한 Kafka의 동적 구성 및 주제 수준 구성 전체 제품군을 이용할 수 있으므로 경험을 더욱 세분화할 수 있습니다. 자세한 내용은 사용자 지정 MSK 구성 설명서를 참조하세요.

관찰 가능

CloudWatch를 사용해 주요 지표를 시각화하고 모니터링하여 스트리밍 애플리케이션 성능을 파악하고 유지할 수 있습니다. 50개가 넘는 기본 지표 세트를 추가 비용 없이 사용할 수 있습니다. 또한 보다 향상된 브로커 수준 및 주제 수준 모니터링을 활성화하여 특정 문제를 해결할 수 있습니다. 향상된 지표에는 표준 CloudWatch 요금이 청구됩니다.

Prometheus의 오픈 모니터링을 사용하면 Datadog, Lenses, New Relic, Sumo logic 또는 Prometheus 서버와 같은 솔루션을 사용하여 Amazon MSK를 모니터링하고 기존 모니터링 대시보드를 Amazon MSK로 손쉽게 마이그레이션할 수 있습니다. 자세한 내용은 Prometheus를 사용한 오픈 모니터링 설명서를 참조하세요.

브로커 로그를 통해 Apache Kafka 애플리케이션의 문제를 해결하고 MSK 클러스터와의 통신을 분석할 수 있습니다. Apache Kafka 브로커 로그를 Amazon CloudWatch Logs, Amazon Simple Storage Service(Amazon S3), Amazon Data Firehose 중 하나 이상의 대상 유형에 전송할 수 있습니다. 또한 AWS CloudTrail을 사용하여 Amazon MSK API 직접 호출을 기록할 수 있습니다.

긴밀하게 통합

Amazon MSK에서는 다양한 AWS 통합을 제공합니다. 이러한 통합에는 다음이 포함됩니다.

  •  Apache Kafka 및 서비스 수준 API 액세스 제어를 위한 AWS Identity and Access Management(AWS IAM)
  • 완전관리형 Apache Flink 애플리케이션을 실행하여 Apache Kafka 내의 스트리밍 데이터를 처리하기 위한 Amazon Managed Service for Apache Flink
  • Apache Flink SQL을 사용하여 대화형 스트리밍 SQL 및 장기 실행 SQL 작업을 실행하기 위한 Amazon Managed Service for Apache Flink Studio
  • 스키마를 중앙에서 제어하고 개선하기 위한 AWS Glue 스키마 레지스트리
  • IoT 이벤트를 Amazon MSK로 스트리밍하기 위한 AWS IoT Core
  • 변경 데이터 캡처 및 분석을 위한 AWS Database Migration Service(AWS DMS)
  • 프라이빗 클라이언트 연결 및 네트워크 격리를 위한 Amazon VPC
  • 저장 시 암호화를 위한 AWS KMS
  • 상호 TLS 클라이언트 인증을 위한 AWS Certificate Manager Private Certificate Authority
  • SASL/SCRAM 보안 정보의 안전한 저장 및 관리를 위한 AWS Secrets Manager
  • Amazon MSK를 코드로 배포하기 위한 AWS CloudFormation
  • 클러스터, 브로커, 주제, 소비자 및 파티션 수준 지표를 위한 Amazon CloudWatch