본문 바로가기

Infra/AWS

[AWS] Serverless

728x90

Serverless

- 서버가 없다는 게 아니라 관리할 필요가 없는 거임

- 저기 솔루션으로 서버들을 대체해서 관리 포인트를 줄이는 것임

 

Lambda

- 함수 호출하면 온디맨드로 실행됨

- AWS 서비스랑 융합하기 쉽고, Cloudwatch 붙이기도 좋음

- 많은 언어를 지원하고 있음

- 람다의 실행과 배포 제한은 아는 게 좋음 (아래 참고)

Execution:

- Memory allocation: 128 MB – 10GB (1 MB increments)

- Maximum execution time: 900 seconds (15 minutes)

- Environment variables (4 KB)

- Disk capacity in the “function container” (in /tmp): 512 MB to 10GB

- Concurrency executions: 1000 (can be increased)

Deployment:

- Lambda function deployment size (compressed .zip): 50 MB

- Size of uncompressed deployment (code + dependencies): 250 MB

- Can use the /tmp directory to load other files at startup

- Size of environment variables: 4 KB

 

CloudFront Function과 Lambda@Edge의 차이

VPC에서 람다

- 프라이빗 RDS는 VPC ID를 정의하고 보안 그룹에 넣은 다음에, ENI를 통해 접근하도록 세팅

 

- DB 커넥션이 너무 많이 생성되지 않도록, 프록시를 통해 RDS 접근

 

 

DynamoDB

- NoSQL 디비이며 고가용성 복수 AZ를 지원함

- 내부에서 분리시키기 때문에 대용량 워크로드를 감당할 수 있음

- 디비를 만들 필요가 없고 테이블로 구성되어 있음

- 프로비전 모드와 온디맨드 모드로 구분됨

 

DynamoDB Accelerator (DAX)

- DB를 캐싱하여여 성능을 개선

- 그 밖에도 TTL, 재해복구, 글로벌 리전 적용, DB 스트림, S3 export/import 등 부가 기능이 많음

 

API Gateway

- API 프록시를 해주며, 람다랑 붙이면 활용도가 높음

- 소켓도 지원

 

AWS Step Functions

- 람다들의 워크 플로우를 시각적으로 지원

 

 

AWS Cognito

User pool

- User pool은 API 게이트웨이나 ALB와 통합되는 형태

 

Identity pool

- Identity pool은 토큰을 aws credential로 교환하여 일시적으로 aws 리소스에 접근하는 방식

 

여러분은 DynamoDB를 데이터 저장소로 활용하여 원활하고 지속적인 사용 경험을 제공하는 프로덕션 환경에서 애플리케이션을 실행하고 있습니다. 하지만 예측할 수 없는 대량의 요청을 테스트하려면 개발 모드에서도 애플리케이션을 실행해야 있습니다. 이런 경우에 제안할 수 있는 가장 경제적인 솔루션은 무엇입니까?

- 개발 및 프로덕션 환경 모두에서 오토 스케일링을 활성화하고 프로비저닝된 용량 모드를 사용한다.

- 프로덕션 환경에는 프로비저닝된 용량 모드 및 오토 스케일링을 사용하고 개발 환경에는 온디맨드 용량 모드를 사용한다.

- 개발 환경에는 프로비저닝된 용량 모드 및 오토 스케일링을 사용하고 프로덕션 환경에는 온디맨드 용량 모드를 사용한다.

- 개발 및 프로덕션 환경 모두에서 온디맨드 용량 모드를 사용한다.

 

 

AWS 서비스(예: Lambda)를 사용해 서버리스 워크플로를 구축할 수 있으며 사람의 승인을 지원하는 AWS 서비스는 무엇입니까?

- AWS Lambda

- Amazon ECS

- AWS Step Functions

- AWS Storage Gateway

 

ap-northeast-1에 DynamoDB 테이블을 생성했으며, 이 테이블을 eu-west-1에서도 사용할 수 있도록 하기 위해 DynamoDB 글로벌 테이블을 생성하기로 했습니다. DynamoDB 글로벌 테이블을 생성하기 전에는 어떤 기능을 먼저 활성화해야 할까요?

- DynamoDB 스트림

- DynamoDB DAX

- DynamoDB 버전 관리

- DynamoDB 백업

 

 

DynamoDB Streams을 사용해 DynamoDB 테이블로 항목이 추가될 때마다 Lambda 함수가 각 아이템을 실행하도록 구성한 상황입니다. 이 함수는 추후 장기적인 처리 업무를 위해 메시지를 SQS 대기열로 삽입하게 되어 있습니다. Lambda 함수를 매번 호출해보면 DynamoDB Stream을 읽을 수는 있으나 SQS 대기열로 메시지를 삽입하지는 못하는 것으로 보입니다. 이 경우, 무엇이 문제일까요?

- SQS 대기열로 메시지를 삽입할 때는 Lambda를 사용할 수 없으므로, EC2 인스턴스를 대신 사용해야 함

- Lambda 실행 IAM 역할에 권한이 없음

- Lambda 보안 그룹이 SQS에 대한 아웃바운드 액세스를 허용해야만 함

- SQS 보안 그룹이 AWS Lambda를 허용하도록 수정되어야 함

 

 

3 버킷에 저장된 영상을 인코딩하고, 인코딩된 영상을 다시 S3 버킷으로 저장할 목적으로만 사용될 마이크로 서비스 애플리케이션의 아키텍처를 생성하려 합니다. 이 마이크로 서비스 애플리케이션의 신뢰도를 높이고, 실패 시 재시도할 수 있는 기능을 부여하고자 합니다. 각 영상 처리에는 최대 25분이 걸릴 수 있습니다. 아키텍처에 사용되는 서비스는 비동기적이어야 하며, 하루 동안 중지되었다가 그 다음 날 인코딩되지 않은 영상부터 다시 작업을 시작할 수 있는 기능을 포함해야 합니다. 이런 경우, 다음 중 어떤 AWS 서비스를 사용하는 게 권장될까요?

- Amazon S3 + AWS Lambda

- Amazon SNS + Amazon EC2

- Amazon SQS + Amazon EC2

- Amazon SQS + AWS Lambda

 

 

여러분은 전 세계에서 이미지를 다운로드하는 사진 공유 웹사이트를 실행하고 있습니다. 여러분은 15GB가 넘는 크기의 아름다운 산 이미지의 마스터 팩을 매 달 웹사이트에 게시합니다. 이 콘텐츠는 Elastic File System(EFS)에 호스팅되어 있으며, Application Load Balancer와 한 세트의 EC2 인스턴스을 통해 배포되었습니다. 여러분은 매달 높은 양의 트래픽을 경험하고 있으며, 이로 인해 EC2 인스턴스의 작업량과 네트워크 비용이 증가하고 있는 상황입니다. 웹사이트를 리팩터링하지 않고 EC2 부하와 네트워크 비용을 줄이기 위해서는 어떤 방법이 권장될까요?

- 마스터 팩을 S3으로 호스팅

- Application Load Balancer 캐싱 활성화

- EC2 인스턴스 스케일 업

- Amazon CloudFront 배포 생성

300x250

'Infra > AWS' 카테고리의 다른 글

[AWS] Data Analysis  (2) 2023.10.02
[AWS] Database  (0) 2023.10.02
[AWS] ECS, ECR, EKS, Fargate  (0) 2023.10.01
[AWS] SQS  (0) 2023.10.01
[AWS] 여러가지 Storage  (0) 2023.09.28