aws sap 문제 풀이 6주차 문제풀이 1번

aws, sap, April 01, 2023

문제

질문 54

A company has a hybrid set up for its mobile application. The on-premises data center hosts a 3TB MySQL database server that handles the write-intensive requests from the application. The on-premises network is connected to the AWS VPC with a VPN. On AWS, the serverless application runs on AWS Lambda and API Gateway with an Amazon DynamoDB table used for saving user preferences. The application scales well as more users are using the mobile app. The user traffic is unpredictable but there is an average increase of about 20% each month. A few months into operation, the company noticed the exponential increase of costs for AWS Lambda. The Solutions Architect noticed that the Lambda execution time averages 4.5 minutes and most of that is wait time due to latency when calling the on-premises data MySQL server. Which of the following solutions should the Solutions Architect implement to reduce the overall cost?

회사에 모바일 애플리케이션을 위한 하이브리드 설정이 있습니다. 온프레미스 데이터 센터는 애플리케이션의 쓰기 집약적인 요청을 처리하는 3TB MySQL 데이터베이스 서버를 호스팅합니다. 온프레미스 네트워크는 VPN을 통해 AWS VPC에 연결됩니다. AWS에서 서버리스 애플리케이션은 사용자 기본 설정을 저장하는 데 사용되는 Amazon DynamoDB 테이블과 함께 AWS Lambda 및 API Gateway에서 실행됩니다. 더 많은 사용자가 모바일 앱을 사용함에 따라 애플리케이션이 확장됩니다. 사용자 트래픽은 예측할 수 없지만 매달 평균 약 20%의 증가가 있습니다. 운영 몇 개월 후 회사는 AWS Lambda 비용이 기하급수적으로 증가했음을 알게 되었습니다. Solutions Architect는 Lambda 실행 시간이 평균 4.5분이며 대부분이 온프레미스 데이터 MySQL 서버를 호출할 때 대기 시간으로 인한 대기 시간임을 확인했습니다. 전체 비용을 줄이기 위해 Solutions Architect가 구현해야 하는 솔루션은 다음 중 무엇입니까?

  1. Migrate the on-premises MySQL database server to Amazon RDS for MySQL. Enable Multi-AZ to ensure high availability.
  2. Create a CloudFront distribution with the API Gateway as the origin to cache the API responses and reduce the Lambda invocations.
  3. Gradually lower the timeout and memory properties of the Lamdba functions without increasing the execution time.
  4. Configure Auto Scaling on Amazon DynamoDB to automatically adjust the capacity with user traffic and enable DynamoDB Accelerator to cache frequently accessed records. —
  5. Migrate the on-premises MySQL database server to Amazon RDS for MySQL. Enable Multi-AZ to ensure high availability.
  6. Configure API caching on Amazon API Gateway to reduce the overall number of invocations to the Lambda functions.
  7. Gradually lower the timeout and memory properties of the Lamdba functions without increasing the execution time.
  8. Configure Auto Scaling on Amazon DynamoDB to automatically adjust the capacity based on user traffic.

  9. Provision an AWS Direct Connect connection from the on-premises data center to Amazon VPC instead of a VPN to significantly reduce the network latency to the MySQL server.
  10. Create a CloudFront distribution with the API Gateway as the origin to cache the API responses and reduce the Lambda invocations.
  11. Convert the Lambda functions to run them on Amazon EC2 Reserved Instances. Use Auto Scaling on peak time with a combination of Spot instances to further reduce costs.
  12. Configure Auto Scaling on Amazon DynamoDB to automatically adjust the capacity with user traffic. —
  13. Provision an AWS Direct Connect connection from the on-premises data center to Amazon VPC instead of a VPN to significantly reduce the network latency to the MySQL server.
  14. Configure caching on the mobile application to reduce the overall AWS Lambda function calls.
  15. Gradually lower the timeout and memory properties of the Lamdba functions without increasing the execution time.
  16. Add an Amazon Elasticache cluster in front of DynamoDB to cache the frequently accessed records.

풀이 및 공부

대충 이런 그림이다.

vpn 쪽이 느린 것이 문제인데, 문제 마지막에 비용효율적이라고 나와있으니 direct connect로 바꾸는 것이 정답은 아닐듯.


  1. Create a CloudFront distribution with the API Gateway as the origin to cache the API responses and reduce the Lambda invocations.

  2. Configure API caching on Amazon API Gateway to reduce the overall number of invocations to the Lambda functions.

위 두 개는 둘 다 말이 된다. 1번은 api gateway앞에 cloudfront를 두어서 거기서 캐싱을 하는거고 2번은 api gateway 자체에서 cache 기능을 사용하는 것이다. 콘솔에서 한 번 보자.

1번 cloudfront distribution 생성 화면이다.

2번

1번

DAX는 Amazon DynamoDB를 위한 가용성이 뛰어난 완전관리형 인 메모리 cache로서, 초당 요청 수가 몇 백만 개인 경우에도 몇 밀리초에서 몇 마이크로초까지 최대 10배의 성능을 제공합니다.

비용이 많이 들고 ddb latency는 문제의 키 포인트가 아님

4번

elasticcache를 mysql앞에 붙이는 거면 고민해볼 필요도 있겠으나, dynamodb 앞에 붙이는거면 무시해도될듯

참고

  • https://www.stormit.cloud/blog/cloudfront-in-front-of-api-gateway/

  • https://www.youtube.com/watch?v=3I6XVfTsO4o

Comments