Q7. Amazon SNS와 SQS를 활용한 확장 가능한 메시지 처리 아키텍처 구축하기
AWS 자격증을 준비하는 여러분, 안녕하세요. 오늘은 대규모 메시지 처리 시스템을 설계할 때 고려해야 할 중요한 AWS 서비스들에 대해 알아보겠습니다. 특히 Amazon SNS와 SQS를 활용하여 어떻게 확장 가능하고 분리된 아키텍처를 구축할 수 있는지 살펴보겠습니다.
문제 상황
Q7:
회사에 들어오는 메시지를 수집하는 응용 프로그램이 있습니다. 그러면 수십 개의 다른 애플리케이션과 마이크로서비스가 이러한 메시지를 빠르게 소비합니다. 메시지 수는 급격하게 변하며 때로는 초당 100,000 개로 갑자기 증가하기도 합니다. 이 회사는 솔루션을 분리하고 확장성을 높이고자 합니다.
어떤 솔루션이 이러한 요구 사항을 충족합니까?
<small>A company has an application that collects incoming messages. Then, dozens of different applications and microservices consume these messages quickly. The number of messages fluctuates drastically and sometimes increases suddenly to 100,000 per second. The company wants to decouple the solution and increase scalability.
Which solution will meet these requirements?</small>
선택지
A. Amazon Kinesis Data Analytics 에 대한 메시지를 유지합니다. 메시지를 읽고 처리하도록 소비자 애플리케이션을 구성합니다.
<small>Persist messages to Amazon Kinesis Data Analytics. Configure the consumer applications to read and process the messages.</small>
B. Auto Scaling 그룹의 Amazon EC2 인스턴스에 수집 애플리케이션을 배포하여 CPU 지표를 기반으로 EC2 인스턴스 수를 확장합니다.
<small>Deploy the collection application on Amazon EC2 instances in an Auto Scaling group to scale the number of EC2 instances based on CPU metrics.</small>
C. 단일 샤드를 사용하여 Amazon Kinesis Data Streams 에 메시지를 씁니다. AWS Lambda 함수를 사용하여 메시지를 사전 처리하고 Amazon DynamoDB 에 저장합니다. 메시지를 처리하기 위해 DynamoDB 에서 읽도록 소비자 애플리케이션을 구성합니다.
<small>Write messages to Amazon Kinesis Data Streams using a single shard. Use an AWS Lambda function to preprocess the messages and store them in Amazon DynamoDB. Configure the consumer applications to read from DynamoDB to process the messages.</small>
D. 여러 Amazon Simple Queue Service(Amazon SQS) 구독이 있는 Amazon Simple Notification Service(Amazon SNS) 주제에 메시지를 게시합니다. 대기열의 메시지를 처리하도록 소비자 애플리케이션을 구성합니다.
<small>Publish messages to an Amazon Simple Notification Service (Amazon SNS) topic that has multiple Amazon Simple Queue Service (Amazon SQS) subscriptions. Configure the consumer applications to process messages from the queues.</small>
정답 및 해설
정답은 D입니다.
Amazon SNS와 SQS를 조합하여 사용하는 이 솔루션은 다음과 같은 이유로 가장 적합합니다:
-
분리(Decoupling): SNS를 통해 메시지 생산자와 소비자를 완전히 분리할 수 있습니다. 이는 시스템의 유연성과 확장성을 크게 향상시킵니다.
-
확장성(Scalability): SQS는 자동으로 확장되어 초당 100,000개의 메시지와 같은 급격한 증가도 처리할 수 있습니다.
-
다중 소비자 지원: SNS 주제에 여러 SQS 대기열을 구독시킴으로써, 다수의 애플리케이션과 마이크로서비스가 동시에 메시지를 처리할 수 있습니다.
-
내구성과 신뢰성: SQS는 메시지를 안전하게 저장하고, 최소 한 번 전달을 보장합니다.
-
비동기 처리: 소비자 애플리케이션은 자신의 처리 속도에 맞춰 대기열에서 메시지를 가져와 처리할 수 있습니다.
오답 설명
A. Kinesis Data Analytics: 실시간 스트리밍 데이터 분석에 적합하지만, 여러 소비자 애플리케이션에 메시지를 분배하는 데는 적합하지 않습니다.
B. EC2 Auto Scaling: 메시지 수집 애플리케이션의 확장성은 개선할 수 있지만, 메시지 처리 부분의 분리와 확장성 문제를 해결하지 못합니다.
C. Kinesis Data Streams + Lambda + DynamoDB: 복잡하고 단일 샤드 사용으로 인해 확장성에 제한이 있습니다.
결론
이 문제는 대규모 메시지 처리 시스템 설계 시 고려해야 할 중요한 AWS 서비스와 아키텍처 패턴을 다루고 있습니다. Amazon SNS와 SQS를 조합하여 사용하면 높은 확장성, 안정성, 그리고 시스템 컴포넌트 간의 효과적인 분리를 달성할 수 있습니다. 이는 마이크로서비스 아키텍처나 이벤트 기반 시스템 구축 시 매우 유용한 패턴입니다.
댓글
댓글 쓰기