[C817] 메시지 서비스로는 대표적으로 Apache Kafka와 Amazon SQS, Amazon Kinesis가 있습니다. 각각은 어떤 차이가 있나요?
Apache Kafka는 Linkedin에서 개발하고 Apache Software Foundation에 기부하고 Scala 및 Java로 작성된 오픈 소스 스트림 처리 소프트웨어 플랫폼입니다.
API를 통해 생산자는 데이터 스트림을 주제에 게시할 수 있습니다.
주제는 각 파티션이 정렬되고 변경할 수 없는 분할된 레코드 로그입니다.
소비자는 주제를 구독할 수 있습니다.
Kafka는 클러스터 노드에 분할된 파티션이 있는 브로커 클러스터에서 실행할 수 있습니다.
Apache Kafka is an open-source stream-processing software platform developed by Linkedin, donated to Apache Software Foundation, and written in Scala and Java. APIs allow producers to publish data streams to topics. A topic is a partitioned log of records with each partition being ordered and immutable. Consumers can subscribe to topics. Kafka can run on a cluster of brokers with partitions split across cluster nodes.
Kafka에는 5가지 핵심 API가 있습니다.
The Producer API allows applications to send streams of data to topics in the Kafka cluster.
The Consumer API allows applications to read streams of data from topics in the Kafka cluster.
The Streams API allows transforming streams of data from input topics to output topics.
The Connect API allows implementing connectors that continually pull from some source system or application into Kafka or push from Kafka into some sink system or application.
The AdminClient API allows managing and inspecting topics, brokers, and other Kafka objects.
Fully managed
Kinesis는 완전 관리형이며 인프라를 관리할 필요 없이 스트리밍 애플리케이션을 실행합니다.
Scalability
모든 양의 스트리밍 데이터를 처리하고 수십만 개의 소스에서 매우 짧은 대기 시간으로 데이터를 처리합니다.
Durability
KDS 응용 프로그램은 데이터가 추가된 직후에 스트림에서 데이터 사용을 시작할 수 있습니다.
Elasticity
스트림을 확장 또는 축소하여 데이터 레코드가 만료되기 전에 손실되지 않도록 합니다.
Fault tolerance
Kinesis 클라이언트 라이브러리는 스트림에서 데이터의 내결함성 소비를 활성화하고 KDS 애플리케이션에 대한 확장 지원을 제공합니다.
Security
KDS 내의 민감한 데이터에 대해 서버 측 암호화 및 AWS KMS 마스터 키를 사용하여 저장 데이터를 보호할 수 있습니다.
Amazon Virtual Private Cloud(VPC)를 통해 비공개로 데이터에 액세스 할 수 있다.
적은 오버헤드
이미 Amazon AWS를 사용하여 운영 및 운영을 지원하는 인프라를 관리하고 있다면 SQS는 선불 비용이 없고 타사 소프트웨어를 구입하거나 구성할 필요가 없는 고가용성 서비스를 약속합니다.
SQS 대기열은 동적으로 생성되며 필요에 따라 자동으로 확장 또는 축소됩니다.
신뢰성있는 전달
하나의 서비스를 사용할 수 없어 메시지 손실이나 프로세스 중단에 대한 두려움 없이 SQS를 사용하여 원하는 양의 데이터를 전송할 수 있습니다.
SQS는 응용 프로그램의 구성 요소를 분리하여 서로 독립적으로 실행 및 실패할 수 있도록 하여 시스템의 전반적인 내결함성을 향상시킵니다..
민감한 데이터의 보안
Amazon SQS를 사용하면 서버 측 암호화를 통해 중요한 데이터를 안전하게 교환할 수 있습니다.
SQS는 또한 AWS의 Key Management Service와 통합되므로 암호화 키를 쉽고 중앙에서 관리할 수 있습니다.
탄력적이고 비용 효율적
Amazon이 자동으로 처리하므로 리소스를 미리 계획하거나 프로비저닝할 필요가 없습니다.
대규모로 운영할 때의 높은 비용 외에 SQS에는 Lambda 함수를 트리거하는 메시지 기능과 같은 많은 기본 기능이 부족합니다. MQ 성능에 대한 제어가 감소하고 메시지 자체에 대한 제어가 부족하면 SQS를 사용할 때 방해가 될 수 있습니다.