이 페이지의 이전 버전을 보고 있습니다. 현재 버전 보기.

현재와 비교 페이지 이력 보기

« 이전 버전 66 다음 »

목차


목차


Version Update v 1.3 - 2019.02.13

  1. Lab1과 Lab2를 분리했습니다.
  2. 기존 Lab2의 도전과제를 실습에 바로 적용하였습니다. (과거 버전은 CodeStar 프로젝트 사용 방법을 설명하고 Lab1 소스의 통합은 도전과제로 남김, 백업해둠)
  3. CodeCommit에 올라간 정적 웹 컨텐츠를 CodeDeploy를 통해서 S3로 배포하는 방법을 추가했습니다.

Version Update v 1.2 - 2018.11.12

  1. 도전과제가 추가되었습니다. 마지막 CodeStar의 소스코드를 Lab1에서 만든 소스코드로 변경해서 배포 해보세요.
    1. DevDay2018 - Amazon Polly와 Cloud9을 활용한 서버리스 웹 애플리케이션 및 CI/CD 배포 프로세스 구축
      이라는 주제로 만드는 방법을 Live로 시연한 영상이 있습니다. 참고해서 Lab1의 동적 컨텐츠를 처리하는 부분을 Lab2에 추가해서 진행할 수 있습니다.

Version Update v 1.1 - 2018.10.23

  1. Lab1의 CORS 이슈가 나는 부분에 대하여 Fix 하였습니다.
  2. Polly 서비스를 비동기로 호출하는 구조로 변경 하였습니다.
  3. Polly의 최대 요청 문자 개수가 10만개로 업데이트 되어 로직을 간단하게 변경했습니다. (기존에는 1,000자 단위로 나누어서 mp3 만들어서 붙이는 방식)
  4. Polly 테스트 시, 철수, 귀신 단어가 등장하면, 철수 흉내내는 서연 목소리로 녹음 되도록, 귀신 흉내내는 서연 목소리가 재생되는 기능이 추가되었습니다.
  5. X-ray를 통한 모니터링을 할 수 있도록 Tracing 옵션이 SAM에 추가되었습니다.


AWS 서버리스 실습 소개

서버리스 서비스를 이용하면 서버를 설치 운용하거나 관리할 필요 없이 비지니스 로직을 코드로 구현하는 것만으로도 애플리케이션 구축이 가능합니다.

100 레벨: "Amazon Polly를 통한 음성 읽기 서버리스 앱 개발하기" 블로그에서, AWS 관리 콘솔을 이용하여 서버리스 웹 애플리케이션을 구축하는 방법을 살펴 보았습니다.
200 레벨Cloud9 IDE를 이용하여 웹 애플리케이션 구축을 위하여  프로젝트를 생성하고,  코드를 생성하고,  SAM(Serverless Architecture Model) 템플릿을 직접 만들어  배포하는 방법을 학습합니다.
300 레벨CodeStar를 이용하여 DevOps 환경으로 서버리스 서비스를 활용한 CI/CD 프로세스를 구축하여 빌드 단계에서 단위 테스트를 하고 Canary 배포와 롤백 방법을 학습합니다.

  1. AWS 서버리스 HOL - Lab1. Cloud9을 이용한 서버리스 웹 애플리케이션 구축 이동
  2. AWS 서버리스 HOL - Lab2. Code 시리즈 서비스를 이용한 CI/CD 배포 프로세스 구축 이동


실습 목적

  1. Cloud9을 이용하여 서버리스 애플리케이션을 SAM(Serverless Application Model) 기반으로 개발/배포할 수 있습니다. 
    1. Cloud9 IDE
  2. SAM을 이해하고 서버리스 서비스에 필요한 서비스를 직접 기술 할 수 있습니다.
    1. API Gateway, Lambda, DynamoDB, S3, SNS, Polly
  3. 서버리스 애플리케이션을 AWS Code 시리즈를 이용하여 배포 프로세스를 제작할 수 있습니다.
    1. CodeStar, CodePipeline, CodeCommit, CodeBuild, CloudFormation(SAM), CodeDeploy
  4. X-ray를 이용하여 서버리스 서비스에 대한 모니터링 및 디버깅을 할 수 있습니다.
  5. Cognito를 이용하여 로그인 및 API 서비스 인증을 구현할 수 있습니다. - 2019년 상반기 예정

실습 비용

해당 실습은 3시간 기준(Lab1-1시간, Lab2-2시간)으로 비용을 예측합니다. 프리티어 기준으로 비용이 발생하지 않는 범위내에서 실습을 진행할 수 있습니다.

ServiceSub ServiceUnitPricingUsefree tieretc
Cloud9EC2 - t2.micro1 h$0.0116/Hourt2.micro 2hour750hour/month
EBS - 8GB1 m$0.1/GB8GB 2hour30GB/month
Lambda-128MB$0.000000208/100ms1,000번 이하100만번 요청
400GB-초
1년 후
지속 제공
API Gateway-
1백만 API 호출당 $3.50
처음 10TB에 대해 $0.09/GB
1,000번 이하

호출 100만건
처음 10TB에 대해 $0.09/GB


DynamoDB-
WCU당 최소 $0.47
RCU당 최소 $0.09
GB당 최소 $0.25
WCU 5
RCU 5
스토리지 100M

매달 2억건 요청
WCU 25 / RCU 25
인덱싱된 데이터 스토리지 25G

1년 후
지속 제공
SNS-
처음 1GB/월 $0.000 GB당
최대 10TB/월 $0.090 GB당
100M 이하매달 15GB의 데이터 전송
Polly-
1백만 문자당 $41,000 문자 이하매달 문자 500만개
CodeStarCodePipeline
월별 활성 파이프라인*당 $11개매월 활성 파이프라인 1개
CodeCommit
최초 5명 초과시 월별 $1
GB당 $0.06/월 (10GB/월 초과)
Git 요청당 $0.001 (1000회/월 초과)
1개최초 5명까지
매달 50GB의 스토리지
매달 10,000건의 Git 요청
1년 후
지속 제공
CodeBuild
build.general1.small $0.005/분30분매월 100 빌드 분의 build.general1.small1년 후
지속 제공
CodeDeploy
EC2 또는 Lambda에 배포 무료30회-
CloudFormation
---
s3-
PUT, COPY, POST 또는 LIST 요청 $0.005/1,000건
GET, SELECT 및 기타 모든 요청 $0.0004/1,000건
처음 50TB/월 $0.023/GB

Put 100번 내외

GET 2,000번 내외

매달 5GB 스토리지
Get 요청 20,000건
Put 요청 2,000건


실습 종료 후 리소스 삭제

실습이 종료되고 나면 리소스를 반드시 삭제해야 합니다.  해당 실습은 CloudFormation 기반으로 진행됩니다. 즉 실습에 사용한 Stack을 삭제하면, 배포되어 있는 리소스도 함께 삭제할 수 있습니다. 반드시 실습에 사용한 리소스가 삭제되었는지 확인 후 실습을 종료합니다. 만약 S3 버킷에 객체가 남아 있을 경우 해당 버킷이 삭제가 되지 않을 수 있으므로, 해당 S3 버킷을 직접 삭제하고 확인 합니다.


실습 구성 및 순서

실습은 Lab1과 Lab2로 구성되어져 있습니다.



서버리스 웹 애플리케이션 구축 방법 소개

아래 다이어그램은 Lab1에서 구축할 서버리스 웹 애플리케이션입니다. 서버리스 서비스를 이용하기 때문에, 프로비저닝, 패치, 확장에 대해 고민할 필요가 없으며, 사용한 만큼만 비용을 지불합니다. 또한, 서버리스 서비스는 완전 관리형 서비스이기 때문에, 개발자는 애플리케이션 개발 자체에만 집중할 수 있습니다. 해당 애플리케이션은 텍스트를 전송하면 해당 텍스트를 읽어주는 기능을 서버리스 서비스 기반으로 개발합니다. Lab2에서는 아래의 RESTful API에 대해서 CI/CD 배포 프로세스를 구축하는 방법에 대해서 자세히 살펴봅니다.

v1.0 Polly과 async를 지원하기 전의 아키텍처 다이어그램

Lab1 아키텍처 다이어그램

Lab1. Cloud9을 이용한 서버리스 서비스 구축 아키텍처 v1.3


Lab2 아키텍처 다이어그램

Lab2. Code 시리즈 서비스를 이용한 서버리스 서비스 CI/CD 배포를 위한 아키텍처 다이어그램 v1.3


애플리케이션의 구성

이 애플리케이션은 다섯 가지 영역으로 구분할 수 있습니다.

  1. 정적 웹페이지 구현 - StaticWebBucket

    1. 이 시나리오는 Amazon S3(Simple Storage Service)에서 호스팅되는 정적 웹 페이지를 기반으로 실행합니다.
  2. 새로운 뉴스를 등록 - PostNews

    1. MP3로 생성할 텍스트 정보는 Amazon API Gateway에 의해 노출된 RESTful API로 수신합니다.
    2. Amazon API Gateway는 MP3 파일 생성 프로세스를 초기화하는 전용 Lambda 함수인 "PostNews"를 설정합니다.
    3. "PostNews" Lambda 함수는 News에 대한 메타 정보를 "NewsTable" DynamoDB 테이블에 저장합니다.
    4. TTS 변환을 비동기적으로 실행하기 위해 Amazon Polly에 StartSpeechSynthesisTask 작업을 예약하고, 작업 ID를 DynamoDB에 추가합니다.
  3. MP3 저장 정보 업데이트 - UpdateNews

    1. Amazon Polly에서 작업해서 만들어진 MP3 파일은 전용 S3 버킷인 "PollyMp3Bucket"에 저장합니다.
    2. 작업이 완료되면 Topic에 의해서 트리거된 Lambda 함수인 "UpdateNews"를 호출합니다.
    3. "UpdateNews" Lambda 함수는 작업 ID를 확인하고, DynamoDB에 등록된 해당 작업에 대한 상태를 변경합니다. (scheduled → COMPLETE)
  4. 등록된 뉴스 정보 검색 - GetNews

    1. GET 메서드를 이용해서 뉴스에 대한 정보를 검색하는 방법을 제공합니다.
    2. "GetNews" Lambda 함수는 DynamoDB 테이블에서 뉴스 텍스트에 대한 정보와 버킷에 업로드한 MP3 버킷 URL 정보를 제공합니다.
  5. 기존 뉴스 삭제 - DeleteNews

    1. RESTful API로 Delete 메서드를 이용하여 삭제를 요청합니다.
    2. "DeleteNews" Lambda 함수는 DynamoDB에 저장되어 있는 해당 News 항목과 관련되어 생성한 MP3를 삭제합니다.
  • 레이블 없음