Apache Kafka vs Amazon Kinesis Data Stream #5



무엇을 선택 해야 할까?

AWS 서비스를 이용 하면서 대기열 매세지 처리를 위해 어떤 서비스를 사용 하는 것이 효율적인지 고민 할 때가 있습니다. 그래서 요즘 Architecture에 가장 많이 사용 되고 있는 Apache kafka 와 Amazon Kinesis 를 비교 해보았습니다.



Kafka

고성능 데이터 파이프라인, 스트리밍 분석, 데이터 통합 ​​및 미션 크리티컬 애플리케이션을 위해 수천 개의 회사에서 사용하는 오픈 소스 분산 이벤트 스트리밍 플랫폼 입니다.



Kafka 장점

  • 성능 : 엄청난 양의 실시간 데이터 스트림과 함께 작동합니다.
  • 확장성 : 생산자, 프로세서, 소비자 및 커넥터의 4가지 차원 모두에서 다운 타임 없이 분산 시스템을 고도로 확장합니다.
  • 내결함성 : 제로 다운 타임 및 제로 데이터 손실로 마스터 및 데이터베이스의 장애 처리가 가능합니다.
  • 데이터 변환 : 생산자의 데이터 스트림을 사용하여 새로운 데이터 스트림을 유도하기 위한 규정을 제공합니다.
  • 내구성 : 분산 커밋 로그를 사용하여 디스크에 지속되는 메시지를 지원 합니다.
  • 복제 : 여러 가입자를 지원하기 위해 클러스터 전체에 메시지를 복제합니다.


Kinesis Data Stream

실시간으로 비디오 및 데이터 스트림을 손쉽게 수집, 처리 및 분석을 위해 Amazon 에서 제공하는 스트리밍 플랫폼 입니다.



Kinesis Data Stream 장점

  • 완전 관리형 : Kinesis는 완전 관리형이며 인프라를 관리할 필요가 없습니다.
  • 확장성 : 스트리밍 데이터의 양에 관계없이 처리하고 수 십만 소스의 데이터를 매우 짧은 대기 시간으로 처리합니다.
  • 내구성 : Kinesis Data Streams 애플리케이션은 데이터가 추가된 후 거의 즉시 스트림의 데이터 사용을 시작할 수 있습니다.
  • 탄력성 : 스트림을 확장 또는 축소하여 데이터 레코드가 만료되기 전에 손실되지 않도록 합니다.
  • 내결함성 : Kinesis 클라이언트 라이브러리는 스트림의 내결함성 데이터 소비를 활성화하고 Kinesis Data Streams 애플리케이션에 대한 확장 지원을 제공합니다.
  • 보안 : Kinesis Data Streams 내의 민감한 데이터에 대해 서버 측 암호화 및 AWS KMS 마스터 키를 사용하여 저장 데이터를 보호할 수 있습니다. VPC를 통해 비공개로 데이터에 액세스 가능합니다.


Apache Kafka vs AWS Kinesis Data Streams

ConceptsApache KafkaAWS Kinesis Data Stream
Data StoragePartitionsShards
Data OrderingIn partition levelIn shard level
Data Retention최대 보관 기간 없음 (구성 가능)최대 7일 (기본 24시간)
Data Size Per Blob기본 1MB (구성 가능)최대 1 MB
Partition/Shard Modification데이터 분할 불가능 (증설만 가능)Shard 병합 혹은 분할 가능
Partition/Shard Limitation제한 없음Region에 따라 차이가 있음샤드 500개 : US East (N. Virginia), US West (Oregon), EU (Ireland)샤드 200개 : 나머지 Region
Data Replication/DRCluster 미러링3개의 A-Z 에서 자동
Message Delivery Semantics
기본 최소 한번 Delivery 보장 Kafka Streams 에서 정확히 1번 Delivery 지원
적어도 1번 Delvery 지원
Security
클라이언트 에서 브로커로 SSL or SASL 연결 인증브로커에서 주키퍼로 SSL/TLS 데이터 암호화

AWS KMS 를 이용해 데이터 암호화VPC를 통해 Private 엑세스
Monitoring서버에서 Yammer Metrics 을 이용해서 모니터링
AWS CloudWatchCloudTrail
DependencyZooKeeperDynamoDB
Cost설치, 설정, 구성, 관리에 많은 인적 자원이 필요사용한 만큼 지불


간단한 비교

비교 항목Apache KafkaAWS Kinesis Data Stream
소프트웨어없음온디맨드 또는 프로비저닝
인프라EC2 혹은 물리적 인프라 최적화 가능AWS 요금 기준
엔지니어링높음낮음
보안안전하지만 수동 구성으로 사람이 실수할 여지가 있음다른 AWS 제품과 유사한 보안
지속적인 관리엔지니어링 노력 필요AWS에서 관리
데이터 보존사용자 정의최대 7일
성능 튜닝특히 고가용성과 같은 기능의 경우 구성 및 수동 조정에 따라 다름구성을 위한 공간은 적지만 AWS에서 어느 정도의 성능을 보장


결론

두가지 솔루션 모두 안정적인 실시간 데이터 스트리밍 플랫폼 입니다. Apache Kafka 는 비용, 설정을 사용자가 최적화 할 수 있다는 장점을 가지고 있으나 구성, 관리에 인적 자원이 많이 필요 하다는 단점이 있습니다. AWS Kinesis Data Stream 은 구성, 관리에 노력과 인력이 많이 필요 없다는 장점이 있지만, 커스텀 설정이나 기존 Kafka의 기능보다 제한적이고 비용을 최적화 할 수 없는 단점이 있습니다. 인프라를 관리 할 수 있는 인력이 충분 하지 않다면 AWS Kinesis Data Stream 플랫폼이 유리 할 것이고, Kafka의 기능을 많이 사용하는 서비스를 운영 한다면 Apache Kafka 를 선택하는 것이 적합할 것입니다.



참고 사이트