...
서버리스 서비스를 이용하면 서버를 설치 운용하거나 관리할 필요 없이 비지니스 로직을 코드로 구현하는 것만으로도 애플리케이션 구축이 가능합니다 . 지난 "Amazon Polly를 통한 음성 읽기 서버리스 앱 개발하기" 블로그에서, AWS 관리 콘솔에서 서버리스 웹 애플리케이션을 구축하는 방법을 살펴 보았습니다. 이번에는 웹 애플리케이션 구축을 위하여 프로젝트를 생성하고, 코드를 만들고, 서비스를 배포하는 일련의 과정을 Cloud9 IDE를 이용하는 방법을 살펴봅니다. 또한, SAM(Serverless Application Model)과 AWS Code 시리즈를 이용하여 DevOps 환경으로 CI/CD 프로세스를 구축하는 방법을 실습합니다.
실습 소개
실습 목적
- Cloud9을 이용하여 서버리스 애플리케이션을 SAM(Serverless Application Model) 기반으로 개발/배포할 수 있습니다.
- Cloud9 IDE
- SAM을 이해하고 서버리스 서비스에 필요한 서비스를 직접 기술 할 수 있습니다.
- API Gateway, Lambda, DynamoDB, S3, SNS
- 서버리스 애플리케이션을 AWS Code 시리즈를 이용하여 배포 프로세스를 제작할 수 있습니다.
- CodePipeline, CodeCommit, CodeBuild, CloudFormation(SAM), CodeDeploy
...
실습이 종료되고 나면 리소스를 삭제해야 합니다. 해당 핸즈온은 CloudFormation 기반으로 진행됩니다. 배포 Stack을 삭제하고, 실습에 사용한 Cloud9과 같은 Stack을 삭제하면, 배포되어 있는 리소스도 함께 삭제가 됩니다. 반드시 상단에 게시된 리소스에 대해서 삭제가 이루어졌는지 확인 후 실습을 종료합니다. 만약 S3 버킷에 객체가 남아 있어서 삭제가 되지 않는 경우, 해당 S3 버킷을 직접 삭제하고 확인 합니다.
...
실습 서버리스 웹 애플리케이션에 대한 소개
아래는 실습에 구축할 서버리스 웹 애플리케이션의 다이어그램입니다. 서버리스 서비스를 이용하기 때문에, 프로비저닝, 패치, 확장에 대해 고민할 필요가 없으며, 사용한 만큼만 비용을 지불합니다.
또한, 서버리스 서비스는 완전 관리형 서비스이기 때문에, 개발자는 애플리케이션 개발 자체에만 집중할 수 있습니다.
...
이 애플리케이션은 다섯 가지 영역으로 구분할 수 있습니다.
정적 웹페이지 구현 - StaticWebBucket
- 이 시나리오는 Amazon S3(Simple Storage Service)에서 호스팅되는 정적 웹 페이지를 기반으로 실행합니다.
새로운 뉴스를 등록 - PostNews
- MP3로 생성할 텍스트 정보는 Amazon API Gateway에 의해 노출된 RESTful API로 수신합니다.
- Amazon API Gateway는 MP3 파일 생성 프로세스를 초기화하는 전용 Lambda 함수인 "New PostPostNews"를 설정합니다.
- "New PostPostNews" Lambda 함수는 News에 대한 메타 정보를 "NewsTable" DynamoDB 테이블에 저장합니다.
- TTS 변환 프로세스를 비동기적으로 실행하기 위해 Amazon SNS의 Topic(NewsTopic)에 DynamoDB(NewsTable)에 등록한 새로운 id 값을 Publish 합니다게시합니다.
텍스트를 MP3로 변환 - ConvertAudio
- Amazon SNS Topic에 의해서 텍스트를 오디오 파일로 변환하기 위한 Lambda 트리거된 Lambda 함수인 "ConvertAudio"는 에서 트리거 되도록 설정합니다요청 텍스트를 오디오 파일로 변환합니다.
- "ConvertAudio" Lambda 함수는 Amazon Polly를 사용하여 텍스트를 지정된 언어의 음성을 이용하여 오디오 파일로 변환합니다.
- 생성된 오디오 파일인 MP3 파일은 전용 S3 버킷에 버킷인 "PollyMp3Bucket"에 저장합니다.
- 텍스트가 MP3로 변환된 MP3는 S3 버킷에 대한 참조 URL 정보 및 해당 게시물 처리 상태에 대한 정보는 DynamoDB 테이블에 업데이트 합니다.
등록된 뉴스 정보 검색 - GetNews
- RESTful 웹 서비스는 Amazon API Gateway를 사용하여 배포합니다. Amazon API Gateway는 게시물에 대한 정보를 검색하는 방법을 제공합니다.
이 방법은 게시물의 텍스트와 MP3 파일이 저장되는 S3 버킷에 대한 링크가 포함됩니다. 이 시나리오에서 이 웹 서비스는 Amazon S3에서 호스팅되는 정적 웹 페이지에서 호출됩니다. - Amazon API Gateway는 뉴스를 검색하는 Lambda 함수인 "GetNews"를 호출합니다.
- "Get Post" Lambda 함수는 DynamoDB 테이블에서 게시물에 대한 정보(Amazon S3에 대한 참조 URL을 포함)를 검색합니다.
기존 뉴스 삭제 - DeleteNews
- RESTful API의 Delete 메서드를 이용하여 삭제를 요청합니다.
- API Gateway는 뉴스 데이터를 삭제하는 Lambda 함수인 "DeleteNews"를 호출합니다.
...