Amazon Web Services 한국 블로그

Amazon MSK용 Express 브로커 출시 – Kafka 클러스터를 위한 높은 처리량 및 빠른 규모 조정 가능

오늘 Amazon Managed Streaming for Apache Kafka(Amazon MSK)의 새로운 브로커 유형인 Express 브로커의 정식 출시를 발표합니다. 이 브로커는 Apache Kafka를 실행하는 Standard 브로커에 비해 브로커당 최대 3배 더 많은 처리량을 제공하고, 최대 20배 더 빠르게 스케일 업되고, 복구 시간을 90% 단축하도록 설계되었습니다. Express 브로커는 기본적으로 Kafka 모범 사례에 따라 사전 구성되어 있으며, Kafka API를 지원하며, Amazon MSK 고객이 기대하는 수준의 짧은 지연 시간을 제공하므로 변경 없이 기존 클라이언트 애플리케이션을 계속 사용할 수 있습니다.

Express 브로커는 Amazon MSK 프로비저닝된 클러스터를 사용할 때 Kafka 애플리케이션에 향상된 컴퓨팅 및 스토리지 탄력성을 제공합니다. Amazon MSK는 Apache Kafka를 기반으로 가용성과 확장성이 뛰어난 애플리케이션을 손쉽게 구축하고 실행할 수 있게 해주는 완전관리형 AWS 서비스입니다.

Express 브로커가 제공하는 몇 가지 주요 기능과 그 이점을 자세히 살펴보겠습니다.

  • 핸즈프리 스토리지 관리를 통한 간편한 운영 – Express 브로커는 사전 프로비저닝 없이 무제한 스토리지를 제공하므로 디스크 관련 병목 현상이 사라집니다. 수신 및 송신 처리량을 브로커별 권장 처리량으로 나누기만 하면 되므로, 클러스터 크기 조정이 더 쉽습니다. 따라서 사전 예방적 디스크 용량 모니터링 및 크기 조정이 필요하지 않으므로, 클러스터 관리가 간소화되고 잠재적 장애 원인이 사라져 복원력이 향상됩니다.
  • 브로커 수가 적고 브로커당 처리량이 최대 3배 증가 – 브로커당 처리량이 높으면 동일한 워크로드에 더 작은 클러스터를 사용할 수 있습니다. m7g.16xl Standard 브로커는 154Mbps 수신을 안전하게 처리하므로 Standard 브로커의 처리량을 결정할 때는 클라이언트 트래픽과 백그라운드 작업을 고려해야 합니다. Express 브로커는 독자적인 설정과 리소스 격리를 사용하므로 m7g.16xl 크기의 인스턴스가 클러스터 이벤트 중에 성능 또는 가용성에 영향을 주지 않으면서 최대 500Mbps의 수신을 안전하게 관리할 수 있습니다.
  • 20배 더 빠른 확장으로 활용도 향상 – Express 브로커는 규모 조정 중에 데이터 이동을 줄여 Standard 브로커보다 최대 20배 더 빠른 속도를 제공합니다. 따라서 클러스터 크기를 더 빠르게 안정적으로 조정할 수 있습니다. 각 브로커의 수신 처리량 용량을 모니터링하고 몇 분 내에 브로커를 추가할 수 있으므로 트래픽 급증에 대비하여 오버프로비저닝할 필요가 없습니다.
  • 복구 속도 90% 향상으로 복원력 향상 – Express 브로커는 높은 복원력이 요구되는 미션 크리티컬 애플리케이션에 적합하도록 설계되었습니다. 3방향 복제(RF=3)를 비롯한 모범 사례 기본값으로 사전 구성되어 제공되므로 잘못된 구성으로 인한 장애를 줄일 수 있습니다. 또한 Express 브로커는 표준 Apache Kafka 브로커에 비해 일시적인 장애로부터 90% 더 빠르게 복구할 수 있습니다. Express 브로커의 리밸런싱 및 복구에는 최소한의 클러스터 리소스만 사용되므로 용량 계획이 간소화됩니다. 따라서 리소스 사용률이 증가할 위험이 없으며, 지속적인 모니터링을 하지 않고도 클러스터 규모를 적절하게 조정할 수 있습니다.

Amazon MSK에서는 워크로드와 선호도에 따라 다음과 같은 옵션을 선택할 수 있습니다.

MSK 프로비저닝 MSK 서버리스
Standard 브로커 Express 브로커
구성 범위 가장 유연함 유연함 가장 유연하지 않음
클러스터 리밸런싱 고객 관리형 고객 관리형
하지만 속도가 최대 20배 더 빠름
MSK 관리형
용량 관리 예(컴퓨팅 전용) 아니요
스토리지 관리 아니요 아니요

Express 브로커는 비용을 절감하고 복원력을 높이며 운영 오버헤드를 낮추므로 모든 Kafka 워크로드에 가장 적합합니다. 용량, 구성 또는 확장 방식을 전혀 관리하지 않으면서 Kafka를 사용하려는 경우 Amazon MSK 서버리스를 선택하면 됩니다. 이 옵션은 완전히 추상화된 Apache Kafka 환경을 제공하므로 인프라를 관리할 필요가 없고 자동으로 확장되며 리소스 사용률을 최적화할 필요가 없는 종량제 소비 모델로 요금이 청구됩니다.

Amazon MSK에서 Express 브로커 시작하기
Amazon MSK에서 제공하는 크기 조정 및 가격 책정 워크시트를 사용하여 Express 브로커를 시작할 수 있습니다. 이 워크시트를 사용하면 워크로드를 수용하기 위해 필요한 클러스터 크기를 추정하는 데 도움이 되며 발생할 총 월별 비용도 대략적으로 예측할 수 있습니다.

워크로드의 처리량 요구 사항은 클러스터의 크기를 결정하는 주요 요인 중 하나입니다. 클러스터에 필요한 브로커의 크기와 수를 구하려면 파티션 및 연결 수와 같은 다른 요인도 고려해야 합니다. 예를 들어 스트리밍 애플리케이션에 30MBps의 데이터 수신(쓰기) 및 80MBps의 데이터 송신(읽기) 용량이 필요한 경우 3개의 express.m7g.large 브로커를 사용하여 처리량 요구 사항을 충족할 수 있습니다(워크로드의 파티션 수가 Amazon MSK에서 m7g.large 인스턴스에 권장하는 최대 파티션 수 이내라고 가정).

다음 표에는 지속 가능하고 안전한 운영을 위해 권장되는 인스턴스 크기당 최대 수신, 송신 및 파티션 수가 나와 있습니다. Amazon MSK 개발자 가이드의 모범 사례 섹션에서 이러한 권장 사항에 대해 자세히 알아볼 수 있습니다.

인스턴스 크기 수신(MBps) 송신(MBps)
express.m7g.large 15.6 31.2
express.m7g.4xlarge 124.9 249.8
express.m7g.16xlarge 500.0 1,000.0

워크로드에 필요한 Express 브로커의 수와 크기를 결정한 후에는 AWS Management Console로 이동하거나 CreateCluster API를 사용하여 Amazon MSK 프로비저닝된 클러스터를 생성합니다.

Amazon MSK 콘솔에서 새 클러스터를 생성할 때 브로커 유형 옵션에서 Express 브로커를 선택한 다음 브로커에 프로비저닝하려는 컴퓨팅 파워의 양을 선택합니다. 스크린샷에서 보듯이 Express 브로커에는 Apache Kafka 3.6.0 버전과 Graviton 기반 인스턴스를 사용할 수 있습니다. Express 브로커용 스토리지를 사전 프로비저닝할 필요는 없습니다.

또한 이러한 구성 중 일부를 사용자 지정하여 원하는 대로 클러스터의 성능을 더욱 미세 조정할 수도 있습니다. 자세히 알아보려면 Amazon MSK 개발자 가이드에서 Express 브로커 구성을 참조하세요.

AWS Command Line Interface(AWS CLI)에서 create-cluster 명령을 사용하여 MSK 클러스터를 생성합니다.

aws kafka create-cluster \
    --cluster-name "channy-express-cluster" \
    --kafka-version "3.6.0" \
    --number-of-broker-nodes 3 \
    --broker-node-group-info file://brokernodegroupinfo.json

이름이 brokernodegroupinfo.json인 JSON 파일은 Amazon MSK가 브로커 노드를 배포하도록 할 세 개의 서브넷을 지정합니다.

{
    "InstanceType": "express.m7g.large",
    "BrokerAZDistribution": "DEFAULT",
    "ClientSubnets": [
        "subnet-0123456789111abcd",
        "subnet-0123456789222abcd",
        "subnet-0123456789333abcd"
    ]
}

클러스터가 생성되면 부트스트랩 연결 문자열을 사용하여 클라이언트를 클러스터 엔드포인트에 연결할 수 있습니다.

Express 브로커를 사용하면 수직(인스턴스 크기 변경) 또는 수평(브로커 추가)으로 크기를 조정할 수 있습니다. 수직적 스케일링은 파티션을 재할당하지 않으면서 처리량을 두 배로 늘립니다. 수평적 스케일링은 3개씩 한 세트로 브로커를 추가하고 더 많은 파티션을 생성할 수 있게 하지만, 새 브로커에서 트래픽을 처리하려면 파티션을 재할당해야 합니다.

Express 브로커의 주된 이점은 몇 분 만에 브로커를 추가하고 파티션을 리밸런싱할 수 있다는 것입니다. 반면, Standard 브로커를 추가한 후 파티션을 리밸런싱하는 데에는 몇 시간이 걸릴 수 있습니다. 아래의 그래프는 클러스터에 3개의 Express 브로커를 추가하고 각각의 새 브로커에 2,000개의 파티션을 재할당한 후 파티션을 리밸런싱하는 데 걸린 시간을 보여줍니다.

보시다시피 이러한 파티션을 재할당하고 새 브로커의 추가 용량을 활용하는 데 약 10분이 걸렸습니다. Standard 브로커로 구성된 같은 규모의 클러스터에서 동일한 실험을 실시했을 때 파티션 재할당에는 24시간 이상이 걸렸습니다.

파티션 재할당에 대한 자세한 내용은 Apache Kafka 설명서에서 클러스터 확장을 참조하세요.

주요 사항
Express 브로커에 대해 알아야 할 몇 가지 사항은 다음과 같습니다.

  • 데이터 마이그레이션Amazon MSK Replicator를 사용하여 기존 Kafka 또는 MSK 클러스터의 데이터를 Express 브로커로 구성된 클러스터로 마이그레이션할 수 있습니다. Amazon MSK Replicator는 클러스터의 데이터와 메타데이터를 모두 새 클러스터에 복사합니다.
  • 모니터링 – Amazon CloudWatch 지표를 사용하여 클러스터에서 그리고 브로커 수준에서 Express 브로커로 구성된 클러스터를 모니터링하고, Prometheus를 사용한 개방형 모니터링을 활성화하여 JMX Exporter 및 Node Exporter를 통해 지표를 노출할 수 있습니다.
  • 보안 – 다른 브로커 유형과 마찬가지로 Amazon MSK는 AWS Key Management Service(AWS KMS)와 통합되어 Express 브로커의 스토리지에 투명한 서버 측 암호화를 제공합니다. Express 브로커를 사용하여 MSK 클러스터를 생성할 때 Amazon MSK에서 저장 데이터를 암호화하는 데 사용할 AWS KMS 키를 지정할 수 있습니다. KMS 키를 지정하지 않으면 Amazon MSK가 사용자를 대신해 AWS 관리형 키를 생성하고 사용합니다.

정식 출시
Express 브로커는 미국 동부(오하이오), 미국 동부(버지니아 북부), 미국 서부(오레곤), 아시아 태평양(싱가포르), 아시아 태평양(시드니), 아시아 태평양(도쿄), 유럽(프랑크푸르트), 유럽(아일랜드) 및 유럽(스톡홀름) 리전에서 정식 출시되었습니다.

Express 브로커의 Apache Kafka 브로커 인스턴스 사용량에 대해 시간당 요금(1초 단위로 과금)이 발생하며, 브로커 인스턴스와 MSK 클러스터의 활성 브로커 크기에 따라 요금이 다릅니다. 또한 Express 브로커에 쓰여진 데이터에 대해서는 GB당 요금이 발생합니다(바이트 단위로 과금). 자세한 내용은 Amazon MSK 요금 페이지를 참조하세요.

Amazon MSK 콘솔에서 Amazon MSK의 Express 브로커를 사용해 보세요. 자세한 내용은 Amazon MSK 개발자 가이드를 참조하고, Amazon MSK용 AWS re:Post 또는 평소 이용하는 AWS Support 담당자를 통해 피드백을 보내주세요.

Channy