🤔 문제
미디어 회사는 웹사이트에서 사용자 클릭을 추적하고, 이를 분석하여 거의 실시간으로 추천을 제공하는 애플리케이션을 운영 중입니다. 이 애플리케이션은 데이터를 웹사이트에서 받아오는 Amazon EC2 인스턴스 군(fleet)이 있고, 이 데이터는 장기 저장을 위해 Amazon RDS DB 인스턴스로 전송됩니다. 또 다른 EC2 인스턴스 군은 데이터베이스의 변화를 지속적으로 확인하고 SQL 쿼리를 실행하여 추천을 제공합니다.
경영진은 인프라 구조를 분리할 것을 요청했습니다. 이 솔루션은 데이터 분석가들이 오직 새 데이터만을 분석할 수 있도록 보장해야 하며, 배포 중에 데이터가 손실되어서는 안 됩니다.
솔루션 아키텍트는 이 요구사항을 충족하면서 사용자 활동에 가장 빠르게 접근할 수 있도록 어떤 것을 추천해야 할까요?
- Amazon Kinesis Data Streams를 사용하여 웹사이트에서 데이터를 캡처하고, Kinesis Data Firehose를 사용하여 Amazon S3에 데이터를 저장하고, Amazon Athena를 사용하여 데이터를 쿼리합니다.
- Amazon Kinesis Data Streams를 사용하여 웹사이트에서 데이터를 캡처하고, Kinesis Data Analytics를 사용하여 데이터를 쿼리하고, Kinesis Data Firehose를 사용하여 Amazon S3에 데이터를 저장합니다.
- Amazon Simple Queue Service(Amazon SQS)를 사용하여 웹사이트에서 데이터를 캡처하고, EC2 인스턴스 군을 유지하며, Auto Scaling 그룹 구성에서 더 큰 인스턴스 유형으로 변경합니다.
- Amazon Simple Notification Service(Amazon SNS)를 사용하여 웹사이트에서 데이터를 수신하고, AWS Lambda 함수를 통해 메시지를 프록시 처리하여 쿼리를 실행하고 데이터를 저장합니다. Amazon RDS를 Amazon Aurora Serverless로 변경하여 데이터를 저장합니다.
정답
정답. 2번
Amazon Kinesis Data Streams를 사용하여 웹사이트에서 데이터를 캡처하고, Kinesis Data Analytics를 사용하여 데이터를 쿼리하고, Kinesis Data Firehose를 사용하여 Amazon S3에 데이터를 저장합니다.
이 솔루션은 데이터를 저장소로 전송하기 전에 쿼리할 수 있어 더 빠른 분석을 제공한다.
Kinesis Data Analytics를 사용하여 SQL 쿼리를 실행할 수 있다.
Kinesis Data Firehose는 데이터를 저장소로 전달하기 전에 일시적으로 보관할 수 있으며, 이 보관 기간이 기본적으로 24시간이다.
오답
1번. Amazon Kinesis Data Streams를 사용하여 웹사이트에서 데이터를 캡처하고, Kinesis Data Firehose를 사용하여 Amazon S3에 데이터를 저장하고, Amazon Athena를 사용하여 데이터를 쿼리합니다.
Kinesis Data Firehose를 사용하여 데이터를 Amazon S3에 저장하는 것은 요구사항을 충족하지만, 이 솔루션은 데이터를 Amazon S3에 기록한 후에만 접근할 수 있기 때문에 가장 빠른 방법은 아니다.
3번. Amazon Simple Queue Service(Amazon SQS)를 사용하여 웹사이트에서 데이터를 캡처하고, EC2 인스턴스 군을 유지하며, Auto Scaling 그룹 구성에서 더 큰 인스턴스 유형으로 변경합니다.
인스턴스 크기를 증가시키면 성능이 향상될 수 있지만, 여전히 데이터베이스에 기록된 후에만 데이터를 읽을 수 있다. 더 빠른 솔루션은 데이터베이스에 기록되기 전에 데이터를 읽는 것이다.
4번. Amazon Simple Notification Service(Amazon SNS)를 사용하여 웹사이트에서 데이터를 수신하고, AWS Lambda 함수를 통해 메시지를 프록시 처리하여 쿼리를 실행하고 데이터를 저장합니다. Amazon RDS를 Amazon Aurora Serverless로 변경하여 데이터를 저장합니다.
Amazon SNS는 메시지를 내구성 있게 저장하지 않으므로 Lambda 함수 실행에 문제가 발생하면 데이터가 손실될 수 있다. 또한 여전히 데이터베이스에 기록된 후에만 데이터를 읽고 있다. 더 빠른 솔루션은 데이터베이스에 기록되기 전에 데이터를 읽는 것이다.