9. 서버리스란?
• 아직 서버가 있지만, 더 이상 관리하지 않음
• 또한 더 이상 서버에 액세스 하지 않는다는 의미
• 따라서 개발자가 따로 서버 설정이나 최적화를 할
필요가 없습니다
10. 서버리스 컴퓨팅이란?
• 가상머신
• 가상머신이 확장 단위
• 하드웨어 추상화
• 컨테이너
• 어플리케이션이 확장 단위
• 운영체제 추상화
• 서버리스
• 함수가 확장 단위
• 프로그래밍 언어 런타임 추상화
EC2
ECS
Lambda
11. 어떻게 선택해야할까요?
• 가상머신
• “CPU, 스토리지, 네트워크 및
내가 원하는 OS를 구성하고 싶다”
• 컨테이너
• “서버를 실행하고, 어플리케이션을
구성하고, 확장을 제어하고 싶다”
• 서버리스
• “필요할때만 내 코드를 실행함”
EC2
ECS
Lambda
14. Amazon Simple Storage Service(S3)의 장점
• 2006 AWS 시작시, 가장 범용적인 서비스로 시작
• 무제한 용량의 내구성 높은 객체 스토리지로서 다양한 쓰임새
• 정적 웹호스팅, 이미지/동영상 저장, 로그 저장, VM 이미지 백업 등
단순함 확장성 낮은 비용 신뢰성 빠른 속도
16. AWS Lambda란?
높은 확장성 및
빠른 서비스 연동
서버 필요 없이
코드만 배포
함수 실행 시
100ms 단위 과금
서버 없는, 이벤트 처리 방식의 컴퓨팅 서비스
Lambda = 클라우드 함수 기반 마이크로서비스
17. 인프라의 관리가 불필요
• 실행 기반은 모두 AWS가 관리
• 비즈니스 로직에 집중
• 코드를 업로드 하기만 하면, 나머지는
AWS Lambda가 다음을 핸들링
– Capacity
– Scale
– Deploy
– 복원력
– 모니터링
– 로깅
– 보안패치적용
18. 자동확장 (Auto Scale)
• 이벤트의 발생 빈도에 따라
자동으로 확장
• 프로비저닝 중이거나 완료를
신경 쓸 필요 없음
• 코드를 실행한만큼 비용 지불
• 이벤트 기반 호출 옵션
(여러 AWS서비스들과 통합)
• REST API 호출 가능
19. Bring your own code
Node.js/Java로 작성된 코드를 실행
(Python, C#도 가능)
Java = Scala, Clojure등의 JVM 기반 언어도 가능
• 128MB 부터 1.5GB 까지 64MB 단위로 메모리
설정
• 할당된 메모에 비례하여 CPU 및 네트워크 자원
할당
• 코드내에서 다음과 같은 기능도 가능
– 쓰레드/프로세스 생성
– 배치 스크립트와 실행 파일의 실행
– /tmp 폴더의 읽기/쓰기
• 각종 라이브러리도 이용 가능
– 네이티브 라이브러리도 가능
– 사용하는 라이브러리를 함께 업로드
20. 효과적인 권한 통제
• AWS IAM (Identity and Access
Management) Role을 사용한
실행 권한 설정
• AWS 이벤트 소스에 대한 자원
정책
21. 요금 체계
• 100 밀리 세컨드(ms) 단위로 컴퓨팅
시간에 대한 가격 설정
• 요청건에 대한 소액 결제
• 충분한 무료 범위
• 유휴 상태 중에는 청구하지 않음
23. 썸네일 생성 및 크기 조절
• S3에 이미지가 업로드 됐을 때 썸네일 이미지
생성 및 크기 조정을 수행
AWS LambdaAmazon S3 Bucket 이벤트
원본이미지
1
썸네일이미지
3
2
24. 값 체크 및 다른 테이블에 복사
• DynamoDB에 쓰기에 따라 값 체크를 하고 다른
테이블의 업데이트나 푸시 알림을 실행
AWS Lambda
Amazon DynamoDB
Table and Stream 푸시알림
다른 테이블을
업데이트
25. 감사(Audit) 및 알림
AWS API 호출
• S3에 저장된 CloudTrail 로그를 분석하고, 이상
한 행동이나 장애가 감지되면 알려줍니다
AWS CloudTrail Logs
AWS Lambda
Bucket이벤트 푸시 알림
26. 사진 공유 모바일 어플리케이션
Followers
6. Push알림
- 친구과 팔로워에게 통지
Cognito
1. 인증・인가
・ 페이스북 응용
프로그램과 연계
Mobile Analytics
DynamoDB
4. 메타데이터를 DynamoDB에 등록
- 제목, 코멘트 등
S3
SNS7. 이미지를 게시하는것을 Analytics에 등록
3. 이미지 크기 조정
2. S3에 이미지 업로드
5. 결과를 SNS로 통지
App with AW
S Mobile SDK
27. 모션 센서를 이용한 데이터 수집 및 시각화
• 가속도 센서의 값을 Kinesis에 저장하고, Lambda에서 계산하고, 결과
를 DynamoDB에 저장
• PC 브라우저에서 얻은 결과를 실시간으로 시각화
SmartPhone
with
JavaScriptSD
K
DynamoDBS3
1. HTML/JS
4. 센서의 결과를 기록
3. Function시작
Amazon Kinesis
2. 센서의 값을 얻어서 PUT
Lambda
JavaScript
SDK
5. HTML/JS
6. 데이터를 검색해서 JS로 시각
화
28. API 서버의 대안으로 이용
• 예를들어, 사용자에 따라 콘텐츠를 다르게 보여준다면
• 동기 호출로 실현
DynamoDB
1. HTML/JS
S3
4. URL을 바탕으로 콘텐츠
검색
JavaScript
SDK
4. 사용자 기반 콘텐츠 (URL) 취득
Lambda
3. 콘텐츠 요청
App with
AWS Mobile
SDK
36. 마이크로서비스 아키텍쳐 장점과 단점
• 장점
• 대규모 응용 프로그램을 위한 더 나은 아키텍쳐
• 장기적으로 개발 속도 향상
• 마이크로서비스 : 학습하기 쉽다
• 확장성 및 오류 제어를 위한 격리
• 단점
• 더 많이 변화하는 부분 발생
• 복잡한 인프라 요구사항
• 일관성 및 가용성
• 테스트 하기가 더 어렵다
38. Amazon API Gateway
• 여러 버전 및 스테이징
• API 키 생성 및 배포계획 설정
• 요청의 서명과 인증기능 사용
• 요청 쓰로틀링 및 모니터링
• 백엔드로 AWS Lambda를 이용 가능
39. Amazon API Gateway의 장점
• 응답을 캐싱할 수 있음
• CloudFront를 이용해서 대기시간을 줄이고 DDoS
공격에 대비 가능
• iOS, Android 및 Javascript용 SDK를 자동 생성
• Swagger 지원
• Request / Response의 데이터 변환
40. 일반적인 3-Tier 웹 어플리케이션
프레젠테이션 계층 논리 계층 데이터 저장소 계층
Web서버/어플리케이션서버브라우저/모바일 데이터베이스
57. 마무리
AWS Lambda를 통해서 서버 관리가 필요 없는 클라우드
함수 실행 가능
Amazon API Gateway를 통한 손쉬운 API 관리 가능
AWSLambda + API Gateway + 다른 AWS 관리형 서비스
= Serverless Architecuture 로 진화 가능!