- [C817] 메시지 서비스로는 대표적으로 Apache Kafka와 Amazon SQS, Amazon Kinesis가 있습니다. 각각은 어떤 차이가 있나요?
Apache Kafka
- 프로듀서와 컨슈머의 분리
- 멀티 프로듀서, 멀티 컨슈머
- 디스크에 메시지 저장
- 확장성
- 높은 성능
장점
-높은 처리량
-키네시스보다 빠르다.
-데이터 보존기간 최댓값 없음(제한 가능)
단점
- 키네시스에 비해 설정, 관리 및 지원하려면 추가 노력이 필요하다.
Amazon SQS
- Queue 기반 단순 메시지 송/수신 시스템
- SQS(Simple Queue Service)
- Point to Point 통신
- 1:1 송수신 업무
- 개별 메시지 별로 확인/실패 검증 필요시
- 메시지별 지연 시간 지정 등이 필요할 때
- 동적 Consumer의 처리량을 동적으로 증가하고자 할 경우
장점
단점
Kinesis
- Data Stream 기반 데이터 송/수신 시스템
- Kinesis Data Stream
- 대용량 로그, 모바일, Click Stream 데이터 수집/분석 업무 적합
- Real Time 분석
- Big Data 기반 분석 시스템 구축시 사용
완벽하게 관리 가능한 메시지 대기열 서비스를 필요로 하면 SQS를 선택하면 된다.
Apache Kafka와 AWS Kinesis Data Streams는 모두 실시간 데이터 스트리밍 플랫폼에 적합한 선택이며, Blob당 메시지 크기 제한 없이 7일 이상 메시지를 보관해야 하는 경우 Apache Kafka를 선택해야 한다.그러나 Apache Kafka를 설정, 관리 및 지원하려면 추가 노력이 필요하기에 조직에 Apache Kafka 전문가 및/또는 인적 지원이 부족한 경우 완전 관리형 AWS Kinesis 서비스를 선택하면 개발에 집중할 수 있습니다.
https://wisdomplexus.com/blogs/amazon-sqs-vs-kinesis/
https://dzone.com/articles/evaluating-message-brokers-kafka-vs-kinesis-vs-sqs
https://faun.pub/apache-kafka-vs-apache-kinesis-57a3d585ef78
https://stackshare.io/stackups/amazon-sqs-vs-kafka
https://firststep-de.tistory.com/26
- [C818] 웹 서비스에서 메시지 브로커(메시지 큐)를 이용해 비동기적인 방법이 활용되는 사례를 하나 이상 찾아보고, 어떻게 활용되는지 설명하세요.
YouTube와 같은 시스템을 만들고 새 영화를 게시하는 메커니즘을 원한다고 가정해볼 때 먼저 동영상을 업로드를 합니다. 그 후에는 유효성을 검사하고 압축해야 하며 일부 썸네일이 생성되어야 합니다. 그 후 마침내 동영상이 공개될 수 있습니다. 모든 작업은 이전 작업이 완료된 후에 트리거 되어야 합니다.
이때 메시지 브로커를 사용할 수 있습니다. 검증, 압축 등을 위한 별도의 서비스가 있다고 가정할 때 모든 서비스는 송신자와 수신자의 역할을 동시에 가질 수 있으며 태스크를 사용한 후 브로커에게 작업이 완료되었다는 메시지를 보내면 그 후, 다음 서비스가 비디오를 넘겨받을 수 있다.
검증, 압축, 업로드 중에 하나가 오류가 나더라도 메세지 브로커를 사용하면 다른 서비스에 영향이 가지 않고 그 오류가 해결되면 다시 데이터를 보내 정상적으로 서비스 진행을 한다.