한 회사에서 독립적인 마이크로서비스 형태로 AWS에서 기계 학습 모델을 개발하고 있습니다. 각 마이크로서비스는 시작 시 Amazon S3에서 약 1GB의 모델 데이터를 가져와 메모리에 로드합니다. 사용자는 비동기 API를 통해 ML 모델에 액세스하며 단일 또는 배치 요청을 보낼 수 있습니다. 이 회사는 수백 명의 사용자에게 서비스를 제공합니다. 사용 패턴은 불규칙합니다. 일부 모델은 며칠 또는 몇 주 동안 유휴 상태일 수 있지만 다른 모델은 수천 개의 요청 배치를 수신합니다. 이러한 요구 사항을 충족하는 솔루션은 무엇입니까?
정답 선택
옵션을 탭하여 정답을 확인하세요.
정답: API 요청을 Amazon Simple Queue Service(Amazon SQS) 대기열로 보냅니다. ML 모델을 대기열에서 읽는 Amazon Elastic Container Service(Amazon ECS) 서비스로 배포합니다. Amazon ECS에 자동 스케일링을 사용하여 SQS 대기열의 크기를 기반으로 클러스터 용량과 서비스 수를 모두 스케일링합니다..
이것이 정답인 이유
정답은 Amazon SQS와 Amazon ECS를 사용하는 솔루션입니다. 불규칙한 사용 패턴과 비동기 API 액세스 요구 사항을 고려할 때, SQS는 요청을 버퍼링하여 시스템이 갑작스러운 트래픽 급증을 처리할 수 있도록 합니다. 각 마이크로서비스가 시작 시 1GB의 모델 데이터를 로드해야 하므로, 컨테이너 기반의 ECS는 Lambda보다 더 큰 메모리와 더 긴 실행 시간을 제공하여 모델 로딩에 적합합니다. SQS 대기열 크기에 기반한 자동 스케일링은 유휴 기간 동안 비용을 절감하고, 트래픽이 많을 때는 필요한 용량을 자동으로 프로비저닝하여 효율적이고 비용 효과적인 솔루션을 제공합니다.
다른 옵션들은 다음과 같은 이유로 적합하지 않습니다.
NLB/Lambda 조합은 1GB 모델 데이터 로딩 및 잠재적으로 긴 실행 시간에 적합하지 않습니다. Lambda는 일반적으로 가볍고 짧은 실행 시간에 최적화되어 있습니다.
ALB/ECS 조합은 동기식 요청에 더 적합하며, 불규칙한 트래픽 급증을 직접 처리하기에는 SQS와 같은 버퍼링 계층이 부족합니다.
SQS/Lambda 조합은 역시 1GB 모델 데이터 로딩에 대한 Lambda의 제한으로 인해 적합하지 않습니다.