© 2016, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
김기완 | 솔루션즈 아키텍트
2016.5.17
Lambda를 활용한
서버없는 아키텍쳐 구현하기
획일적이고 자유가 없는 어플리케이션
Technical Debts
차세대???
획일적이고 자유가 없는 어플리케이션
• 파급되는 수많은 피해
• 모든 것을 한 곳에, 그리고 그 한 곳의 실패
• 늘어나는 작업시간
• 운영의 어려움
• 길어지는 변경 주기
• 파격적인 사업진행 불가능
• 준비에 들어가는 수많은 시간, 시간, 시간.
Reduce
risk
획일적이고 자유가 없는 조직
• 요구사항
• 우선순위
• 작업일정
• 배포
• 하드웨어
• …...
“…시스템을 설계하는 조직은 ... 조직의 정보를 교환하는 구조를
닮은 설계 를 만들어 낸다.”
- Conway’s Law
만일 시스템 설계의 방식이 바뀐다면?
쪼개 봅시다!
획일적이고 자유가 없는 아키텍쳐
서비스 지향 아키텍쳐 (SOA)
N-계층 웹 어플리케이션
표현 계층
로직 계층
데이터 계층
마이크로서비스 아키텍쳐
마이크로서비스 아키텍쳐를 돕는 수많은 도구들
웹 서버
코드 라이브러리
웹 서비스/어플리케이션 프레임웍
구성관리 도구
API 관리 플랫폼
배포 패턴
CI/CD 패턴
컨테이너
또 다른 도구, 도구, 도구……
AWS도 함께 합니다
Amazon EC2
오토 스케일링
Elastic Load Balancing
EC2의 자동 복구
AWS Trusted Advisor
AWS Elastic Beanstalk
AWS OpsWorks
Amazon EC2 Container Service
수많은 AWS 서비스들……
…이러한 도구들 및 혁신들의 많은 것들이
여전히 공유되는 의존관계 에 얽혀 있습니다.
하지만…
Servers서버의 물리적인 장애를
어플리케이션에서 어떻게 처리하지?
내 서버들에 대한 접근을
어떻게 통제할 수 있지?
서버의 수를 언제
늘려야 하지?
내 서버의 용량을
언제 늘려야 하지? 내 예산에 맞는
서버의 크기는?
내 서버들의 남아있는 용량은
얼마나 되지?
(AAHHHHHHHHH!!)
서버 없는 아키텍쳐
완전 관리형
• 프로비져닝 없음
• 관리요소 없음
• 높은 가용성
개발자 생산성
• 중요한 코드에 집중
• 빠르게 혁신
• 시장에 빠르게 접근
지속적인 스케일링
• 자동으로
• 스케일 업/다운
AWS Lambda
서버 없는, 이벤트 처리 방식의 컴퓨팅 서비스
Lambda = 서버 없는 마이크로서비스
AWS Lambda : 서버 없는 컴퓨팅
서버 프로비저닝/운영 없이 코드를 실행; 사용한 컴퓨팅 시간 만큼만 지불.
이벤트로 실행:
• 직접 동기/비동기식 호출
• Amazon S3 버킷에 객체 저장
• Amazon API 게이트웨이를 통한 호출
• 그 외 다양한 이벤트…
다음의 작업을 손쉽게 수행:
• 실시간 데이터 처리 수행
• 유연한 백엔드 서비스 구축
Lambda : 동작 원리
1. 업로드 2. 트리거 3. 실행 4. 사용요금
Lambda : 동작 원리
Bring your own code
• Node.js, Java, Python
• Java = Scala Clojure 등의
모든 JVM기반 언어.
• Bring your own libraries
유연한 호출 경로
• Event 혹은 RequestResponse
호출 옵션
• 여러 AWS 서비스들과 통합
단순한 자원 모델
• 128MB부터 1.5GB까지64MB
단위로 메모리 설정
• 할당된 메모리에 비례하여
CPU 및 네트웍 자원 할당
• 실제 사용량 내역 보고
효과적인 권한 통제
• AWS IAM (Identity and
Access Management) Role을
사용한 실행 권한 설정
• AWS 이벤트 소스에 대한 자원
정책
Lambda : 동작 원리
제작 기능
• AWS SDK 포함
• 인바운드 네트웍 처리
• 프로세스, 쓰레드, /tmp, 소켓
…
배포 옵션
• 콘솔의 WYSIWIG 편집기를
사용하여 직접 제작/배포
• 코드를 zip 파일로 묶어
Lambda 서비스 혹은 S3로
전송
Stateless 기능
• S3/Amazon
DynamoDB/Amazon
ElastiCache를 사용한 저장
• 인프라스트럭쳐와의 연관성
없음 (로그인 불가)
모니터링 및 로깅
• Amazon CloudWatch
메트릭 – 요청 수, 에러 수,
처리 시간, 처리량
• Amazon CloudWatch Log를
사용하여 로깅
데모
데모 : 서버 없는 비디오 스트리밍 아키텍쳐
AWS
Lambda
Amazon S3
비디오 파일 입수
PUT 이벤트
Lambda 트리거
Amazon Elastic
Transcoder
트랜스코딩
Job 시작
Amazon S3
여러 bit-rate
HLS 스트리밍
Amazon
CloudFront
시청자
사용 예제
Lambda : 사용 예제
데이터 처리
데이터의 변화, 시스템 상태
변화 혹은 사용자의
작업내용에 반응하여 코드
수행
시스템 제어
AWS 자원들의 상태 및
데이터 변화에 따른 응답 및
대응 작업 수행
백 엔드
웹, 모바일, IoT 그리고 3rd
party API로부터의 요청을
처리하는 백 엔드 로직 수행
사용 예제 : 데이터 처리
사용 예제 : 백엔드
사용 예제 : 시스템 제어
AWS
Lambda
Amazon
SNS
Amazon
CloudWatch Alarm
ec2
runInstance
ecs
startTask
beanstalk
updateApp
kinesis
splitShard
Any API call
https://aws.amazon.com/blogs/compute/scaling-amazon-ecs-services-automatically-using-amazon-cloudwatch-and-aws-lambda/
기능
리소스 사이징
• 23가지 “power levels” 제공
• 높은 레벨일수록 더 많은 메모리와 CPU 파워 제공
• 128 MB, 가장 낮은 CPU 파워
• 1.5 GB, 가장 높은 CPU 파워
• 더 높은 파워 레벨 = CPU를 많이 쓰거나 갑자기 실행되는 작업에 더 빠른
실행 시간
• 가격은 파워 레벨에 따라 변화
• 100ms부터 5분까지 코드 실행
• 프리티어 : 백만 건 무료 처리, 400,000GB-s/월 무료 처리
예약 Lambda function
• 특정 시간에 수행 혹은 반복되는
주기로 수행
• 표준 cron syntax 사용
• 5분 단위로 설정
• Lambda function을 사용하여
1초 미만으로 실행 가능
• Amazon SQS 혹은 다른 데이터
소스를 폴링
• CLI와 SDK 지원
버저닝
• Labmda function에 하나 이상의
버전 퍼블리싱
• 효과적인 프로덕션 Lambda
function 코드 관리
• 다양한 버전의 Lambda function
사용: 개발, 베타, 프로덕션
• 서로 다른 버전에 대한 변경
가능한 별칭 사용
지속적인 스케일링운영할 서버 없음 100ms 단위 과금
Lambda의 장점
여러분의 피드백을 기다립니다!
https://www.awssummit.co.kr
모바일 페이지에 접속하셔서, 지금 세션 평가에
참여하시면, 행사 후 기념품을 드립니다.
#AWSSummit 해시태그로 소셜 미디어에 여러분의
행사 소감을 올려주세요.
발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜
채널로 곧 공유될 예정입니다.
감사합니다

Lambda를 활용한 서버없는 아키텍쳐 구현하기 :: 김기완 :: AWS Summit Seoul 2016

  • 1.
    © 2016, AmazonWeb Services, Inc. or its Affiliates. All rights reserved. 김기완 | 솔루션즈 아키텍트 2016.5.17 Lambda를 활용한 서버없는 아키텍쳐 구현하기
  • 2.
    획일적이고 자유가 없는어플리케이션 Technical Debts 차세대???
  • 3.
    획일적이고 자유가 없는어플리케이션 • 파급되는 수많은 피해 • 모든 것을 한 곳에, 그리고 그 한 곳의 실패 • 늘어나는 작업시간 • 운영의 어려움 • 길어지는 변경 주기 • 파격적인 사업진행 불가능 • 준비에 들어가는 수많은 시간, 시간, 시간. Reduce risk
  • 4.
    획일적이고 자유가 없는조직 • 요구사항 • 우선순위 • 작업일정 • 배포 • 하드웨어 • …... “…시스템을 설계하는 조직은 ... 조직의 정보를 교환하는 구조를 닮은 설계 를 만들어 낸다.” - Conway’s Law 만일 시스템 설계의 방식이 바뀐다면?
  • 5.
  • 6.
  • 7.
  • 8.
    N-계층 웹 어플리케이션 표현계층 로직 계층 데이터 계층
  • 9.
  • 10.
    마이크로서비스 아키텍쳐를 돕는수많은 도구들 웹 서버 코드 라이브러리 웹 서비스/어플리케이션 프레임웍 구성관리 도구 API 관리 플랫폼 배포 패턴 CI/CD 패턴 컨테이너 또 다른 도구, 도구, 도구……
  • 11.
    AWS도 함께 합니다 AmazonEC2 오토 스케일링 Elastic Load Balancing EC2의 자동 복구 AWS Trusted Advisor AWS Elastic Beanstalk AWS OpsWorks Amazon EC2 Container Service 수많은 AWS 서비스들……
  • 12.
    …이러한 도구들 및혁신들의 많은 것들이 여전히 공유되는 의존관계 에 얽혀 있습니다. 하지만…
  • 13.
    Servers서버의 물리적인 장애를 어플리케이션에서어떻게 처리하지? 내 서버들에 대한 접근을 어떻게 통제할 수 있지? 서버의 수를 언제 늘려야 하지? 내 서버의 용량을 언제 늘려야 하지? 내 예산에 맞는 서버의 크기는? 내 서버들의 남아있는 용량은 얼마나 되지? (AAHHHHHHHHH!!)
  • 14.
    서버 없는 아키텍쳐 완전관리형 • 프로비져닝 없음 • 관리요소 없음 • 높은 가용성 개발자 생산성 • 중요한 코드에 집중 • 빠르게 혁신 • 시장에 빠르게 접근 지속적인 스케일링 • 자동으로 • 스케일 업/다운
  • 15.
    AWS Lambda 서버 없는,이벤트 처리 방식의 컴퓨팅 서비스 Lambda = 서버 없는 마이크로서비스
  • 16.
    AWS Lambda :서버 없는 컴퓨팅 서버 프로비저닝/운영 없이 코드를 실행; 사용한 컴퓨팅 시간 만큼만 지불. 이벤트로 실행: • 직접 동기/비동기식 호출 • Amazon S3 버킷에 객체 저장 • Amazon API 게이트웨이를 통한 호출 • 그 외 다양한 이벤트… 다음의 작업을 손쉽게 수행: • 실시간 데이터 처리 수행 • 유연한 백엔드 서비스 구축
  • 17.
    Lambda : 동작원리 1. 업로드 2. 트리거 3. 실행 4. 사용요금
  • 18.
    Lambda : 동작원리 Bring your own code • Node.js, Java, Python • Java = Scala Clojure 등의 모든 JVM기반 언어. • Bring your own libraries 유연한 호출 경로 • Event 혹은 RequestResponse 호출 옵션 • 여러 AWS 서비스들과 통합 단순한 자원 모델 • 128MB부터 1.5GB까지64MB 단위로 메모리 설정 • 할당된 메모리에 비례하여 CPU 및 네트웍 자원 할당 • 실제 사용량 내역 보고 효과적인 권한 통제 • AWS IAM (Identity and Access Management) Role을 사용한 실행 권한 설정 • AWS 이벤트 소스에 대한 자원 정책
  • 19.
    Lambda : 동작원리 제작 기능 • AWS SDK 포함 • 인바운드 네트웍 처리 • 프로세스, 쓰레드, /tmp, 소켓 … 배포 옵션 • 콘솔의 WYSIWIG 편집기를 사용하여 직접 제작/배포 • 코드를 zip 파일로 묶어 Lambda 서비스 혹은 S3로 전송 Stateless 기능 • S3/Amazon DynamoDB/Amazon ElastiCache를 사용한 저장 • 인프라스트럭쳐와의 연관성 없음 (로그인 불가) 모니터링 및 로깅 • Amazon CloudWatch 메트릭 – 요청 수, 에러 수, 처리 시간, 처리량 • Amazon CloudWatch Log를 사용하여 로깅
  • 20.
  • 21.
    데모 : 서버없는 비디오 스트리밍 아키텍쳐 AWS Lambda Amazon S3 비디오 파일 입수 PUT 이벤트 Lambda 트리거 Amazon Elastic Transcoder 트랜스코딩 Job 시작 Amazon S3 여러 bit-rate HLS 스트리밍 Amazon CloudFront 시청자
  • 22.
  • 23.
    Lambda : 사용예제 데이터 처리 데이터의 변화, 시스템 상태 변화 혹은 사용자의 작업내용에 반응하여 코드 수행 시스템 제어 AWS 자원들의 상태 및 데이터 변화에 따른 응답 및 대응 작업 수행 백 엔드 웹, 모바일, IoT 그리고 3rd party API로부터의 요청을 처리하는 백 엔드 로직 수행
  • 24.
    사용 예제 :데이터 처리
  • 25.
    사용 예제 :백엔드
  • 26.
    사용 예제 :시스템 제어 AWS Lambda Amazon SNS Amazon CloudWatch Alarm ec2 runInstance ecs startTask beanstalk updateApp kinesis splitShard Any API call https://aws.amazon.com/blogs/compute/scaling-amazon-ecs-services-automatically-using-amazon-cloudwatch-and-aws-lambda/
  • 27.
  • 28.
    리소스 사이징 • 23가지“power levels” 제공 • 높은 레벨일수록 더 많은 메모리와 CPU 파워 제공 • 128 MB, 가장 낮은 CPU 파워 • 1.5 GB, 가장 높은 CPU 파워 • 더 높은 파워 레벨 = CPU를 많이 쓰거나 갑자기 실행되는 작업에 더 빠른 실행 시간 • 가격은 파워 레벨에 따라 변화 • 100ms부터 5분까지 코드 실행 • 프리티어 : 백만 건 무료 처리, 400,000GB-s/월 무료 처리
  • 29.
    예약 Lambda function •특정 시간에 수행 혹은 반복되는 주기로 수행 • 표준 cron syntax 사용 • 5분 단위로 설정 • Lambda function을 사용하여 1초 미만으로 실행 가능 • Amazon SQS 혹은 다른 데이터 소스를 폴링 • CLI와 SDK 지원
  • 30.
    버저닝 • Labmda function에하나 이상의 버전 퍼블리싱 • 효과적인 프로덕션 Lambda function 코드 관리 • 다양한 버전의 Lambda function 사용: 개발, 베타, 프로덕션 • 서로 다른 버전에 대한 변경 가능한 별칭 사용
  • 31.
    지속적인 스케일링운영할 서버없음 100ms 단위 과금 Lambda의 장점
  • 32.
    여러분의 피드백을 기다립니다! https://www.awssummit.co.kr 모바일페이지에 접속하셔서, 지금 세션 평가에 참여하시면, 행사 후 기념품을 드립니다. #AWSSummit 해시태그로 소셜 미디어에 여러분의 행사 소감을 올려주세요. 발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜 채널로 곧 공유될 예정입니다.
  • 33.