7. 관리의 목표는 관리 대상의 제거
All of this
goes away
Provisioning and utilization
Availability and fault tolerance
Scaling
Operations and management
“서버 관리가 내재되어 있는 환경”
“No Server is Easier To Manage
Than no Server”
8. 서버리스 아키텍쳐 충분 조건
𝞽 완전 관리형 컴퓨팅
• 프로비져닝 제거
• 제로 관리
• 고가용(Fault Tolerant Stateless)
𝞽 개발자 생산성 확보
• 문제 중심의 개발 능력
• 민첩한 혁신
• 시장 접근성 강화
𝞽 지속적 확장 능력
• 자동화 기반
• 용량 증가 및 용량 감소
9. 서버리스 아키텍쳐 필요 조건
v 최소 단위 기능(함수) 기준의 배포와 확장
v 프로그래밍 모델에서 인프라의 완벽한 은폐
v 지속적인 스토리지 서비스와 결합(Data 혹은 File)
v 오직 서비스 요청 기준에 따라 용량 확장 및 축소
v IDLE 타임에 대한 비용 제거(No Cold Server)
v 실질적 Fault Tolerant. 함수 실행 보장
v BYOC – Bring your own code
v 로깅과 측정
10. Bustle.com
• 월 52 백만 사용자
• 일 일억건의 이벤트
• 이벤트 스트림 처리
• 검색과 분석,리포트
• 84% cost savings
• 0 servers
• 0 operating system patches
• Automatic scaling
12. 다양한 AWS의 서비스
AWS
Lambda
Amazon
Kinesis
Amazon
S3
Amazon API
Gateway
Amazon
SQS
Amazon
DynamoDB
AWS IoT
Amazon
EMR
Amazon
ElastiCache
Amazon
RDS
Amazon
Redshift
Amazon
Elasticsearch Service
Managed Serverless
Amazon EC2
“On EC2”
Amazon
Cognito
Amazon
CloudWatch
13. AWS Lambda
§ 최적의 “Stateless—architect”
§ 하부 컴퓨트 인프라스트럭쳐와 분리 전제
§ 코드는 Amazon S3에 암호화하여 저장. 사용시
무결성 검증.
§ 로컬 화일 시스템 접근은 람다 수행 동안에만 가능
§ 프로세스 포크는 람다 수행 타임에만 가능
14. Lambda Function 특징
§ Memory = “Power Level”
• 메모리 크기만 구성. 설정
메모리 크기에 따라 컴퓨팅
파워 자동 설정
§ Stateless Function
• State 영구 보관을 위하여
DynamoDB, S3, or
ElastiCache 고려
• 메타데이타 전달을 위한 환경
변수 사용
§ Concurrent Executions
• STREAM event 소스
• Non-STREAM event 소스
§ 컨테이너 재사용
• 반복되는 호출에서
지연시간 증가를 극복하기
위하여 컨테이너 재사용.
성능 향상
15. AWS Lambda 고려 사항: Cold Start
§ Cold Start시 AWS
클라이언트와
데이타베이스 클라이언트
모듈 사전 가동. 커넥션
재활용.
§ 클라우드와치 이벤트로
사전 워밍업 스케쥴
§ VPC용 엘라스틱 네트웍
카드의 자동 연결
import sys
import logging
import rds_config
import pymysql
rds_host = "rds-instance"
db_name = rds_config.db_name
try:
conn = pymysql.connect(
except:
logger.error("ERROR:
def handler(event, context):
with conn.cursor() as cur:
Lambda function
호출시 실행 영역
Lambda Cold
Start시 실행 영역
16. AWS Lambda 고려 사항: 화일 시스템
§ 사용 가능한 화일 시스템
ü 임시 가용 영역 : /tmp (512 MB scratch space)
ü Number of file descriptors: 1024
exports.ffmpeg = function(event,context) {
new ffmpeg('./thumb.MP4', function (err, video)
{
if (!err) { video.fnExtractFrameToJPG('/tmp’)
function (error, files) { … }
…
if (!error)
console.log(files);
context.done();
...
}
17. AWS Lambda 고려 사항: 측정
§ CloudWatch 기반 측정
• 40 KB per POST
• 계정당 제한 기본 150 TPS (PUT)
• 키네시스로 통합 가능
§ API logging with AWS CloudTrail
def put_cstate ( iid, state ):
response = cwclient.put_metric_data(
Namespace='AWSx/DirectConnect',
MetricData=[
{
'MetricName':'ConnectionState',
'Dimensions': [
{
'Name': 'ConnectionId',
'Value': iid
},
],
'Value': state,
'Unit': 'None’
…
18. AWS Lambda 고려 사항: Best Practices
§ Stateless 스타일로 Lambda 코드를 작성. 코드와 하부
인프라스트럭쳐와 연관되지 않도록 작성.
§ AWS 클라이언트는 핸들러 구역 밖에서 구동. 재활용 고려
§ ZIP 화일을 업로드 하는 경우 화일들에 +RX 퍼미션이 주어졌는 지
반드시 확인.
§ 관계 이벤트 처리와 직접적인 관련이 적은 스타트업 코드는 가급적
최소화할 것. 성능 향상과 더 낮은 비용을 고려.
§ Lambda 함수를 모니터링하는 내장 CloudWatch 사용하여 응답시간
관측과 최적화 고려. API 로깅은 CloudTrail로 디버깅.
§ 사용하지 않는 Lambda 함수는 삭제할 것.
19. AWS Lambda 이벤트 기반 확장
ASYNCHRONOUS
“Event”
SYNCHRONOUS
“RequestResponse”
STREAMS
Lambda.Invoke
20. Lambda를 작동시키는 다양한 방법
AWS
CloudFormation
custom
resources
Amazon Echo
skills
Amazon SWF
tasks
Customized
notifications with
Amazon SNS
Amazon Cognito
triggers
Amazon S3
triggers
Amazon
Dynamo DB
triggers
Amazon
Kinesis
processors
Microservices
with API
Gateway
Alexa, do
my expense
report
계속 추가중
21. AWS Lambda 마이크로서비스
AWS Lambda + Amazon API Gateway
마이크로서비스를 구축하기 위한 가장 손쉬운 방법
• 이벤트 핸들러 one function per event type
• 서버리스 백엔드 one function per API / path
• 데이타 처리 one function per data type
22. Amazon API Gateway
§ API의 다양한 버젼과 단계 지원
§ 개발자들에게 API 키를 생성 및 배포
§ API 접근 관리를 위한 Signature V4의 활용
§ 백엔드를 보호하기 위한 접속 요청의 조절과 감시 기능
§ API 회신을 저장하기 위한 관리형 캐시
23. Throttle
Amazon API Gateway 적용 방안
Internet
Mobile
apps
Websites
Partner
Services
AWS Lambda
functions
API
Gateway
response
cache
Endpoints on
Amazon EC2
Any publicly
accessible
endpoint
Amazon
CloudWatch
Amazon
CloudFront
API
Gateway
조절(Throttle), 시행(Enforce), 추적(Track)
24. Amazon API Gateway 활용 가이드
§ 통합 모형의 활용(mock integration)
§ Binary Payload 지원. 비교적 큰 이진 화일(10MB+)의 S3
업로드 전송을 위해서 사인드 URL 사용 권장
§ 레거시 앱과 HTTP 응답 코드간의 호출/응답 매핑
템플릿을 사용권장
§ API Gateway를 통한 트랜잭션은 30초 리밋을 상속받고
있으므로 30초 이상 수행이 되는 트랜잭션의 경우
비동기 호출 사용 권장.
31. 고려 사항
§ 계단식 결합 함수(Cascade mapper functions)
§ Lambda languages vs. SQL
§ 속도는 람다 함수 동시 제약 사항에 직접적 비례
§ 결합 함수들의 중간 상태 저장
DynamoDB/ElastiCache/S3
§ Lambda MapReduce 레퍼런스 아키텍쳐 참고
https://github.com/awslabs/lambda-refarch-mapreduce
33. PlayOn! Sports – Video Stream Processing
Laptop
Encoders
HLS
S3
Playback
VOD Stream
mobile client
CloudFront
Streaming
Live stream
mobile client
CloudFront S3 Ingest
480p
Transcode
HQ Copy
360p
Transcode
Audio-only
Transcode
Thumbnail
QOS
Analytics
Cascading Lambda Functions
http://www.slideshare.net/AmazonWebServices/arc308-the-serverless-company-using-aws-lambda
34. 스트림 처리의 특징
§ 높은 데이타 유입률
§ 준실시간 처리(데이타 유입에서 처리에서 낮은 지연 시간)
§ 일시적 부하 폭증 대응(lots of devices with intermittent
network connections)
§ 메세지 안전한 전달 확보
§ 메세지 Ordering 준수
35. 서버리스 스트림 처리 아키텍쳐
Sensors
Amazon Kinesis:
Stream
Lambda:
Stream Processor
S3:
Final Aggregated Output
Lambda:
Periodic Dump to S3
CloudWatch Events:
Trigger every 5 minutes
S3:
Intermediate Aggregated
Data
Lambda:
Scheduled Dispatcher
KPL:
Producer
36. AWS Fan-out 패턴
§ Kinesis 스트림 샤드와 실행 컨터테이너 함수와 1:1
§ 빠른 응답과 메세지 순서 사이의 트레이드오프 존재
Sensors
Amazon Kinesis:
Stream
Lambda:
Dispatcher
KPL:
Producer Lambda:
Processors
Increase throughput, reduce processing latency
37. 최적 활용 가이드
§ Lambda가 Kinesis Streams에 의해 기동시 “Batch size”
조정을 고려해볼 것
• 구동되는 Lambda의 수를 줄여볼 것
§ Lambda 기능을 위한 메모리 설정 고려
• 실행 시간 최소화 지향
§ 배치 메세지와 Kinesis Stream용량 포화 상태 대응을
위하여 KPL 이용
43. 체크 포인트
§ AWS Lambda 서버리스 환경은 인프라 운영의 고민을
완전히 해결합니다.
§ AWS API Gateway와 AWS Lambda를 연동하여 손쉽게
마이크로서비스를 구축합니다.
§ AWS Lambda와 AWS 서비스와 연동하여 다양한 패턴의
업무에 대응하는 로직을 쉽고 빠르게 만듭니다.
§ 챗봇 혹은 알렉사와 같은 서비스도 빠르게 구현합니다.
44. 본 강연이 끝난 후…
§ AWS Lambda 바로 시작하기:
http://docs.aws.amazon.com/lambda/latest/dg/getting-
started.html
§ AWS Lambda 개발자 가이드 & API Reference:
http://docs.aws.amazon.com/lambda/latest/dg/
§ AWS Serverless Multi-Tier Architectures: Using Amazon
API Gateway and AWS Lambda (November 2015):
https://d0.awsstatic.com/whitepapers/AWS_Serverless_
Multi-Tier_Architectures.pdf
46. https://www.awssummit.kr
AWS Summit 모바일 앱을 통해 지금 세션 평가에
참여하시면, 행사후 기념품을 드립니다.
#AWSSummitKR 해시태그로 소셜 미디어에
여러분의 행사 소감을 올려주세요.
발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜
채널로 공유될 예정입니다.
여러분의 피드백을 기다립니다!