한 회사에서 Amazon EC2 인스턴스에서 주문 처리 애플리케이션을 실행하고 있으며, 이 애플리케이션은 주문을 Amazon Aurora 데이터베이스에 저장합니다. 트래픽이 최고조에 달할 때 애플리케이션이 주문을 충분히 빠르게 기록하지 못하는 경우가 있습니다. 솔루션스 아키텍트는 주문이 데이터베이스에 가능한 한 빨리 안정적으로 기록되도록 하려면 어떻게 해야 할까요?
정답 선택
옵션을 탭하여 정답을 확인하세요.
정답: Amazon Simple Queue Service(Amazon SQS) 큐에 주문을 기록합니다. Application Load Balancer 뒤의 Auto Scaling 그룹에 있는 EC2 인스턴스를 사용하여 SQS 큐에서 읽고 주문을 데이터베이스로 처리합니다..
이것이 정답인 이유
이 솔루션은 SQS를 사용하여 주문을 비동기적으로 처리함으로써 애플리케이션의 응답성을 높이고 데이터베이스 부하를 분산합니다. SQS는 대량의 메시지를 안정적으로 버퍼링하여 트래픽 급증 시에도 주문 손실 없이 처리할 수 있게 합니다. Auto Scaling 그룹은 SQS 큐의 메시지 양에 따라 EC2 인스턴스 수를 자동으로 조절하여 처리량을 최적화하고 비용 효율성을 유지합니다.
오답 설명:
첫 번째 옵션은 SNS를 사용하여 데이터베이스에 직접 메시지를 보내려 하지만, SNS는 메시지 브로커가 아닌 발행/구독 서비스이며, 데이터베이스에 직접 구독시키는 것은 일반적인 패턴이 아닙니다. 또한, EC2 인스턴스 크기 증가는 일시적인 해결책일 뿐 비동기 처리의 이점을 제공하지 않습니다.
세 번째 옵션은 SNS를 사용하지만, 데이터베이스가 아닌 EC2 인스턴스가 SNS 주제에서 읽도록 합니다. 이는 SQS와 같은 메시지 큐의 이점을 제공하지 않으며, SNS는 메시지 큐가 아니므로 메시지 풀링 및 재시도 로직을 직접 구현해야 하는 복잡성이 있습니다.
네 번째 옵션은 EC2 인스턴스가 CPU 임계값에 도달했을 때만 SQS에 기록하도록 하는데, 이는 선제적인 부하 분산이 아니며, 예약된 스케일링은 동적인 트래픽 변화에 즉각적으로 대응하기 어렵습니다.