초보자를 위한 AWS MSK: 포괄적인 시작 가이드

많은 기업들이 Apache Kafka 클러스터를 관리하는 데 관련된 운영적인 문제를 피하기 위해 AWS MSK로 전환하고 있습니다.

이 튜토리얼에서는 AWS MSK의 기능, 장점 및 모범 사례를 탐색할 것입니다. 또한 AWS MSK 설정을 위한 기본 단계를 살펴보고, Kinesis 및 Confluent와 같은 인기있는 서비스와 비교해 볼 것입니다.

AWS MSK란?

먼저, Apache Kafka와 데이터 스트리밍에 대한 유용성을 이해해 봅시다.

Apache Kafka는 실시간 데이터 스트림을 처리하고 이벤트 기반 앱을 구축할 수 있는 오픈 소스 분산 스트리밍 플랫폼입니다. 발생하는 스트리밍 데이터를 수집하고 처리할 수 있습니다.

Kafka 웹사이트에 따르면, Fortune 100 기업의 80% 이상이 Kafka를 신뢰하고 사용하고 있다.

가장 중요한 것은 Kafka가 확장 가능하고 매우 빠르다는 것입니다. 이는 단순히 한 대의 기계에 맞지 않는 더 많은 데이터를 처리하고 슈퍼 저지연률로 처리할 수 있다는 것을 의미합니다.

데이터 스트리밍을 위해 Kafka를 생성, 관리 및 문제 해결하는 방법을 배우고 싶다면 Kafka 소개 코스를 수강해보세요.

Apache Kafka를 사용하는 가장 적절한 시기는 언제인가요?

  1. 실시간으로 대량의 데이터를 처리해야 하는 경우, 예를 들어 IoT 장치 데이터 스트림 처리와 같은 경우입니다.
  2. 실시간 데이터 처리와 분석이 필요한 경우, 라이브 사용자 활동 추적이나 사기 탐지 시스템과 같은 경우입니다.
  3. 감사 트레일 및 규정 준수 요구 사항이 있는 이벤트 소싱 시나리오에서 사용하는 경우입니다.

그러나 Kafka 인스턴스를 관리하는 것은 많은 머리 아픔을 유발할 수 있습니다. 이때 AWS MSK가 필요합니다.

저자 제공 이미지

AWS MSK (Managed Streaming for Kafka)는 Kafka 클러스터의 프로비저닝, 구성, 확장 및 유지 관리를 처리하는 완전히 관리되는 서비스입니다. 데이터 스트림에 반응하는 앱을 구축하는 데 사용할 수 있습니다.

Kafka는 종종 더 큰 데이터 처리 설정의 일부로 사용되며, AWS MSK를 사용하면 데이터를 다른 시스템 간에 이동하는 실시간 데이터 파이프라인을 더 쉽게 만들 수 있습니다.

Amazon MSK 작동 방식. 이미지 출처:AWS

AWS에 처음이라면 기본 사항을 익히기 위해 AWS 소개 코스를 수강해 보세요. 준비가 되면 AWS 클라우드 기술 및 서비스 코스로 이동하여 기업이 의존하는 서비스 스위트 전체를 탐색할 수 있습니다.

AWS MSK의 기능

AWS MSK는 완전히 관리되는 서비스이기 때문에 경쟁 제품과 차별화됩니다. 서버 설정이나 업데이트 처리에 대해 걱정할 필요가 없습니다.

그러나 그 이상의 기능이 있습니다. AWS MSK의 다섯 가지 핵심 기능은 투자가 가치 있게 만듭니다:

  1. MSK는 고가용성이 높으며, AWS는 엄격한 SLA를 준수함을 보장합니다. 애플리케이션에 중단 없이 실패한 구성 요소를 자동으로 교체합니다.
  2. MSK는 저장소에 대한 자동 확장 옵션을 제공하므로 필요에 따라 자동으로 확장됩니다. 필요에 따라 저장소를 빠르게 확장하거나 축소하거나 더 많은 브로커를 추가할 수 있습니다.
  3. 보안 측면에서 MSK는 데이터 저장 및 전송 중에 암호화를 제공하는 포괄적인 솔루션입니다. 또한 AWS IAM과 통합되어 액세스 제어를 지원합니다.
  4. 이미 Kafka를 사용 중이라면, MSK는 모든 일반 Kafka API와 도구를 지원하므로 코드를 변경하지 않고도 MSK로 이동할 수 있습니다.
  5. MSK는 클러스터를 모니터링하고 관리하기 위해 전체 엔지니어링 팀을 고용할 필요가 없는 비용 효율적인 옵션입니다. AWS는 심지어 자체 관리 Kafka보다 최대 40% 저렴할 수 있다고 자랑합니다.

AWS MSK 사용의 장점

이미 확인한 바와 같이 AWS MSK는 가용성, 확장성, 보안 및 통합의 용이성 덕분에 즉시 가치를 제공합니다. 이러한 핵심 장점으로 인해 클라우드에서 Kafka 워크로드를 실행하는 기업들의 선택으로 자리매김하고 있습니다.

AWS MSK는 모든 데이터 스트리밍 프로젝트가 직면하는 네 가지 중요한 과제를 해결합니다:

  • MSK는 완전히 관리되는 서비스로, 인프라를 관리하는 대신 애플리케이션을 구축하는 데 집중할 수 있습니다.
  • MSK는 고가용성 및 신뢰성이 뛰어나며, 사용자들이 서비스와 애플리케이션에 대해 24시간 365일 접근할 것을 기대하는 요즘에 점점 중요해지고 있습니다.
  • MSK는 중요한 포괄적인 보안 기능을 갖추고 있습니다.
  • MSK는 AWS와 네이티브 통합을 제공하여 AWS 생태계 내에서 완전한 스트리밍 데이터 솔루션을 구축하는 것이 훨씬 쉬워집니다.

AWS MSK 설정

AWS MSK를 시작하려면 먼저 AWS 계정을 생성하십시오. AWS를 처음 사용하는 경우 AWS 계정을 설정하고 구성하는 방법을 배우세요 comprehensive tutorial.

AWS 관리 콘솔에 로그인하고 MSK 콘솔을 열어주세요. 설정 프로세스를 시작하려면 “클러스터 생성”을 클릭하세요.

AWS MSK 시작하기. 이미지 출처: AWS

기본 설정을 위해 “빠른 생성”을 선택한 다음 설명적인 클러스터 이름을 입력하세요.

그 후에 클러스터에 대한 귀하의 요구 사항에 따라 선택할 수있는 다양한 옵션이 있습니다. 다음은 각 선택 사항에 대한 간단한 개요입니다:

  • 클러스터 유형: “Provisioned” 또는 “Serverless”
  • Apache Kafka 버전
  • Broker 유형: “Standard” 또는 “Express”
  • Broker 크기
  • EBS 저장 용량

AWS MSK 구성 옵션

클러스터는 항상 Amazon VPC 내에서 생성됩니다. 기본 VPC를 사용하거나 사용자 정의 VPC를 구성하고 지정할 수 있습니다.

이제 클러스터가 활성화되기를 기다리기만 하면 됩니다. 이 과정은 15~30분이 소요될 수 있습니다. 클러스터 요약 페이지에서 클러스터 상태를 모니터링할 수 있으며, 상태가 “생성 중”에서 “활성”으로 변경되는 것을 확인할 수 있습니다.

AWS MSK를 사용하여 데이터 적재 및 처리

MSK 클러스터를 설정한 후, 하나 이상의 주제를 통해 데이터를 생성하고 사용해야 합니다. Apache Kafka는 웹사이트, IoT 장치, Amazon EC2 인스턴스 등 다양한 데이터 생산자와 효과적으로 통합되므로, MSK도 이 이점을 공유합니다.

아파치 카프카는 주제라고 불리는 구조에 데이터를 구성합니다. 각 주제는 하나 또는 여러 파티션으로 이루어져 있습니다. 파티션은 아파치 카프카에서의 병렬 처리 정도를 나타냅니다. 데이터는 데이터 파티셔닝을 통해 브로커들 간에 분산됩니다.

아파치 카프카 클러스터를 다룰 때 알아야 할 주요 용어:

  • 주제는 카프카에서 데이터를 구성하는 기본적인 방법입니다.
  • 프로듀서는 주제에 데이터를 발행하는 애플리케이션들입니다. 이들은 카프카에 데이터를 생성하고 쓰기 위해 사용됩니다. 특정 주제와 파티션에 데이터를 기록합니다.
  • 소비자는 토픽에서 데이터를 읽고 처리하는 애플리케이션입니다. 구독한 토픽에서 데이터를 가져옵니다.

AWS MSK로 이벤트 기반 아키텍처를 구축할 때, MSK가 주요 데이터 수집 구성 요소입니다. 필요한 계층을 구성해야 합니다. 이것은 필요할 수 있는 계층에 대한 개요입니다:

  1. 데이터 수집 설정
  2. 처리 계층
  3. 저장 계층
  4. 분석 계층

Amazon MSK 및 Amazon EventBridge를 활용한 이벤트 주도 아키텍처 예시.이미지 출처: AWS

데이터 파이프라인 워크플로우에서 Python을 활용하고 싶다면, 저희 Introduction to AWS Boto in Python 코스를 확인해보세요.

AWS MSK 사용에 대한 최상의 실천 방법

AWS MSK는 상대적으로 간단히 설정하고 즉시 사용할 수 있습니다. 그러나 몇 가지 중요한 최상의 실천 방법은 클러스터의 성능을 향상시키고 나중에 시간을 절약할 수 있습니다.

클러스터 사이즈 조정

각 브로커 당 올바른 파티션 수와 클러스터 당 올바른 브로커 수를 선택해야 합니다.

다양한 요인이 여러분의 결정에 영향을 줄 수 있지만, AWS는 이 프로세스를 안내하기 위해 유용한 권장 사항 및 자료를 제공했습니다.

또한 AWS는 올바른 클러스터 크기를 추정하고 AWS MSK 사용 비용과 유사한 자체 관리 EC2 Kafka 클러스터의 관련 비용을 계산하는 데 도움이 되는 쉽게 사용할 수 있는 크기 조정 및 가격표를 제공합니다.

고가용성 클러스터를 구축하십시오

AWS는 클러스터를 고가용성으로 설정하도록 권장합니다. 이는 업데이트(예: Apache Kafka 버전 업데이트)를 수행하거나 AWS가 브로커를 교체할 때 특히 중요합니다.

클러스터가 고가용성인지 확인하려면 세 가지 작업을 수행해야 합니다:

  1. 세 개의 가용 영역에 걸쳐 클러스터를 설정하십시오 (세-AZ 클러스터라고도 함).
  2. 복제 계수를 3 이상으로 설정하십시오.
  3. 동기화된 복제본의 최소 수를 RF-1로 설정하십시오.

AWS의 훌륭한 점은 다중 AZ 배포에 대해 엄격한 SLA를 약속한다는 것입니다. 그렇지 않으면 크레딧을 돌려받게 됩니다.

디스크 및 CPU 사용량 모니터링

AWS CloudWatch를 통해 모니터링해야 할 두 가지 주요 메트릭은 디스크 및 CPU 사용량입니다. 이를 통해 시스템이 원활하게 작동할 뿐만 아니라 비용을 절감하는 데도 도움이 됩니다.

디스크 사용량 및 관련 스토리지 비용을 관리하는 가장 좋은 방법은 85%와 같은 특정 값 이상일 때 알림을 보내는 CloudWatch 경보를 설정하고 보관 정책을 조정하는 것입니다. 로그의 메시지에 대한 보관 시간을 설정하면 디스크 공간을 자동으로 확보하는 데 큰 도움이 될 수 있습니다.

또한 클러스터의 성능을 유지하고 병목 현상을 피하기 위해 AWS는 브로커의 총 CPU 사용률을 60% 미만으로 유지할 것을 권장합니다. AWS CloudWatch를 사용하여 이를 모니터링한 다음 브로커 크기를 업데이트함으로써 수정 조치를 취할 수 있습니다.

전송 중 암호화를 사용하여 데이터 보호

AWS는 기본적으로 MSK 클러스터 내의 브로커 간 데이터를 전송 중에 암호화합니다. 시스템이 높은 CPU 사용률이나 지연을 겪고 있다면 이를 비활성화할 수 있습니다. 그러나 언제나 전송 중 암호화를 유지하고 성능을 향상시키는 다른 방법을 찾는 것이 강력히 권장됩니다.

AWS 보안 및 비용 관리 코스를 확인하여 AWS 클라우드 환경을 보호하고 최적화하며 AWS에서 비용과 리소스를 관리하는 방법에 대해 더 알아보세요.

AWS MSK와 다른 스트리밍 도구 비교

프로젝트에 가장 적합한 도구를 결정할 때, 종종 여러 옵션을 평가해야 합니다. AWS MSK와 비교해 가장 일반적인 대안들은 다음과 같습니다.

AWS MSK 대 Apache Kafka on EC2

MSK와 EC2를 사용한 자체 호스팅 옵션 사이의 주요 trade-off는 편의성과 제어 사이의 균형입니다. MSK는 관리할 것이 덜하지만 유연성이 떨어지는 반면, EC2는 완전한 제어를 제공하지만 더 많은 작업이 필요합니다.

AWS MSK는 모든 복잡한 운영 작업을 처리하며 자동 프로비저닝과 구성을 제공합니다. 이로 인해 초기 인프라 비용이 없습니다. 또한 다른 AWS 서비스와의 신속한 통합 및 견고한 보안 기능이 있습니다.

EC2에서 Kafka를 사용하는 경우 수동 설정 및 구성이 더 많이 포함되며 모든 유지 보수 및 업데이트를 직접 처리해야 합니다. 이는 훨씬 더 유연성을 제공하지만 더 많은 복잡성과 운영 비용이 발생할 수 있으며 보다 높은 기술을 필요로 할 수 있습니다.

AWS MSK 대 Kinesis

간편함과 깊은 AWS 통합을 위해 Kinesis를 사용하거나 Kafka 호환성이나 스트리밍 설정에 대한 더 많은 제어를 위해 MSK를 사용하십시오.

Kinesis는 데이터 스트리밍을 위해 샤드를 사용하는 완전한 서버리스 아키텍처입니다. AWS가 모든 것을 관리합니다. 그러나 주의해야 할 데이터 보유 기간 제한이 있습니다. Kinesis는 간단한 데이터 스트리밍 요구 사항에 대한 훌륭한 솔루션입니다.

AWS MSK는 Kafka의 토픽 및 파티션 모델을 기반으로 하며, 저장 공간에 따라 가상 무제한의 데이터 보유 기간을 가집니다. 필요한 경우 AWS를 탈퇴할 수 있는 보다 유연하고 사용자 정의 가능한 솔루션입니다.

Kinesis에 익숙하지 않다면, AWS Kinesis 및 람다를 사용하여 스트리밍 데이터 작업을 안내하는 코스가 있습니다.

AWS MSK 대 Confluent

포괄적인 기능 및 지원이 필요하다면 Confluent를 선택하고, AWS에 크게 투자하고 내부에서 카프카 전문 지식이 있는 경우 MSK를 선택하십시오.

Confluent는 다양한 내장 커넥터를 갖춘 풍부한 기능 세트를 제공합니다. 전반적으로 더 비싼 옵션입니다만 기능이 제한된 무료 티어를 제공합니다. Confluent는 갑작스러운 워크로드에 적합하며 배포 프로세스가 더 간편합니다.

비교하자면, AWS는 더 간소화되어 있으며 핵심 카프카 기능에 집중합니다. 더 확장된 기능 세트에 액세스하려면 AWS MSK를 다른 AWS 서비스와 통합해야 합니다. 다행히 이 통합은 원활합니다. AWS MSK는 더 낮은 기본 비용을 가지고 있으며 일관된 워크로드에 대한 좋은 옵션이 될 수 있습니다.

다음 표는 AWS MSK와 대안들을 비교한 것입니다:

기능

AWS MSK

EC2 상의 Apache Kafka

Kinesis

Confluent

배포

완전 관리형

EC2 상에서 자체 관리

완전 관리형

완전 관리형 또는 자체 관리형

사용 편의성

설치 및 관리가 쉬움

수동 설정 및 확장 필요

간단한 설정; AWS 네이티브

사용자 친화적 UI 및 고급 도구

확장성

수동 조정이 가능한 자동 스케일링

수동 스케일링

원활한 스케일링

유연성을 갖춘 자동 스케일링

지연 시간

낮은 지연 시간

낮은 지연 시간

소량의 데이터에 대한 낮은 지연 시간

MSK와 비교 가능

프로토콜 지원

Kafka API 호환

Kafka API 호환

독점적인 Kinesis 프로토콜

Kafka API 및 추가 프로토콜

데이터 보존

구성 가능 (기본 7일)

구성 가능

구성 가능 (최대 365일)

고도로 구성 가능

모니터링 및 메트릭

CloudWatch와 통합

사용자 지정 설정 필요

CloudWatch와 통합

고급 모니터링 도구

비용

사용한 만큼 지불

EC2 인스턴스 가격 기준

사용한 만큼 지불

구독 기반

보안

내장된 AWS 보안 기능

수동으로 보안 구성해야 함

AWS IAM과 통합

포괄적인 보안 기능

사례 적합성

AWS 생태계 내 Kafka 사용자에게 최적

유연하지만 유지보수가 많이 필요

AWS 네이티브 앱에 가장 적합

고급 Kafka 사용자 및 기업에 적합

Closing Thoughts

아파치 카프카는 대규모이며 신뢰할 수 있는 솔루션이 필요하고 데이터 손실을 감수할 수 없으며 여러 데이터 원본을 연결하거나 복잡한 데이터 파이프라인을 구축해야 하는 상황에서 선택하는 것입니다. AWS MSK는 카프카 클러스터를 설정하고 구성하는 데 발생하는 여러 문제를 방지하여, 개발자가 인프라 대신 애플리케이션을 더 많이 구축하고 개선하는 데 집중할 수 있도록 합니다.

AWS 자격증을 취득하는 것은 AWS 경력을 시작하는 뛰어난 방법입니다. 코스 카탈로그를 확인하고 프로젝트를 통해 실무 경험을 쌓음으로써 AWS 기술을 향상시킬 수 있습니다!

Source:
https://www.datacamp.com/tutorial/aws-msk