Lambda – ColdStart
• 언어/메모리마다
다른 Cold Start Time
이것이 돈의 맛
• 가격/성능을 고려했을때
1024MB가 적절함
1,792MB = vCPU 1개
16.
Lambda – ColdStart 최적화
• https://theburningmonk.com/2017/06/aws-lambda-compare-coldstart-time-with-different-languages-memory-and-code-sizes/
• Code(Package)의 크기가 Cold Start Time에 크게 영향을 주지 않음(물론 너무 큰 건 좀...)
17.
Lambda – ColdStart 최적화
• Cold Start가 없게
모두 Warm 상태로
만든다
• https://github.com/FidelLimited/serverless
-plugin-warmup
• AWS SDK 활용
(기본 내장)
18.
Lambda - 가성비
•Lambda
• 비용 – 0.1초에 $0.000001667
= 1시간에 $0.06
= 1달(750시간)에 $45
• 성능 – vCPU 1개, 1024MB(1GiB)
• EC2 t2.small
• 비용 - 시간당 0.0288달러 = 1달에 $21
• 성능 – vCPU 1개, 2GiB
19.
Lambda
• 스케줄링, 배치처리
•Resource가 예상이 안되는 작업
• ex) 이미지 처리, 인코딩/디코딩 등등
• 다른 Serverless Service와 연동해서 사용
• ex)
Lambda – S3
Lambda – SNS – Lambda
CloudWatch – SNS- Lambda
Lambda – BestPractice 3
• 공통 코드 = /opt
• 임시 파일 = /tmp
• Cold Start 상관X
• Deploy 상관O
• https://aws.amazon.com/ko/blogs/korea/new-for-aws-lambda-use-any-programming-
language-and-share-common-components/
28.
Lambda - Deploy
•기본 AWS SAM CLI 사용
https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html
빠르지만 번거로움
• Serverless framework 사용
https://serverless.com/framework/docs/providers/aws/guide/deploying/
상대적으로 느리지만 cmd 한번으로 deploy 가능
• 주로 쓰는 Library는 계층(Layer) 사용
• Code Commit/Build/Deploy/Pipeline를 통해
간단하게 자동 배포 구성 가능
29.
Lambda – AWSToolkit
• AWS Plugin – Jetbrain, Eclipse, VS code 지원
• 런타임에 즉시 배포 가능한 서버리스 애플리케이션 생성
• 로컬에서 코드 실행/디버깅 가능
• 로컬/원격으로 Lambda 함수 호출 가능
(remote debug 지원X)
• local docker container를 사용하기 때문에
고사양 PC필요 + 윈도우 금지
https://aws.amazon.com/ko/blogs/korea/new-aws-toolkits-for-pycharm-intellij-preview-and-visual-studio-code-preview/
Step Function
• 시각적워크플로우를 사용해
분산 애플리케이션 및 마이크로서비스의 구성 요소를
손쉽게 조정하도록 해주는 웹 서비스
34.
Lambda Invoke vsStep function
• Invoke
= stateless
• step function
= stateful
35.
Step Function
• 대표사례- 코카콜라 구입
• 결제 처리
-> 자판기 동작
-> 음료수가 나올 90초 대기
-> 잔액 확인
-> 모바일 지갑 잔액 업데이트
36.
Step Function -Stateful
• 다양한 상태값
• Task : 작업 수행
• Choice : 실행 브랜치 선택
• Fail/Succeed : 실패/성공
• Pass : 단순 전달, 일부 수정 후 전단
• Wait : 실행 지연
• Parallel : 브랜치 병렬 실행
37.
Step Function
• 예제상태 시스템 코드
https://docs.aws.amazon.com/ko_kr/step-
functions/latest/dg/sample-project-
transfer-data-sqs.html
38.
Step Function
• 가격정책
https://aws.amazon.com/ko/step-functions/pricing/
상태 전환 1000번당 $0.0271
• 유사 서버
• 잘 안쓰는 서비스
CloudWatch – 경보예시
• 데이터 포인트 수를 조절해서
일시적으로 발생한 경보
무시 가능
ex) 10번 중 5번 발생 -> 경보
54.
CloudWatch – 경보예시
• 요금이 부과되면 SNS Topic
(NotifyMe)에 Push하고
해당 SNS Topic은
구독자인 이메일에게 내용 발송
• 응용하면 SNS에서 이메일 대신
Lambda를 호출해서
이메일, SMS, Slack 등등으로도
알림이 가능함!
55.
CloudWatch – 경보예시
• SNS말고도 Auto Scaling,
EC2 작업도 가능함
• ex)
• CPU가 70%가 넘어가면 instance 추가
• instance 가 멈추면 자동 재시작
56.
CloudWatch – 이벤트
•리소스의 변경 사항을 설명하는
시스템 이벤트의 스트림을 거의 실시간으로 제공
• 쉽게 말해서 Lambda Trigger
• 1개 이벤트에 대상은 최대 5개
• 이또한 따로 Docs가 존재함
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/events/WhatIsCloudWatchEvents.html
57.
CloudWatch – 이벤트
•Amazon EC2 인스턴스
• AWS Lambda 함수
• Amazon Kinesis Data Streams의 스트림
• Amazon Kinesis Data Firehose의 전송 스트림
• Amazon CloudWatch Logs의 로그 그룹
• Amazon ECS 작업
• 시스템 관리자 실행 명령
• 시스템 관리자 자동화
• AWS Batch 작업
• Step Functions 상태 시스템
• CodeBuild 프로젝트
• Amazon Inspector 평가 템플릿
• Amazon SNS 주제
• Amazon SQS 대기열
• EC2 CreateSnapshot,
RebootInstances, StopInstances,
TerminateInstances API call.
• 다른 AWS 계정의 기본 이벤트 버스
• CodePipeline의 파이프라인
58.
CloudWatch – 이벤트규칙
• Cron : cron(0 12 * * ? *) – 매일 UTC 12시에 이벤트 발생
• Rule : rate(1 minute) – 1분마다 이벤트 발생
• 주로 Batch, Schedule할 때 사용