버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

서버리스 서비스를 이용한 웹 애플리케이션 구축하기 Hands-on Lab

서버리스 서비스를 이용하면 서버를 설치 운용하거나 관리할 필요 없이 비지니스 로직을 코드로 구현하는 것만으로도 애플리케이션 구축이 가능해진다.
지난 Amazon Polly를 이용한 서버리스 구축 방법을 통해서 AWS에서 제공하는 관리콘솔을 통하여 웹 애플리케이션을 구축하는 방법을 살펴 보았다.

이번에는 웹 애플리케이션 구축을 위하여 프로젝트를 생성하고, 코드를 만들고, 서비스에 배포하는 일련의 과정을 Cloud9 IDE를 이용하여 구축하는 방법을 살펴본다.
또한, SAM(Serverless Application Model)과 AWS Code 시리즈를 이용하여 DevOps 환경으로 CI/CD 프로세스를 구축하는 방법을 살펴 본다.

Hands-on Lab의 목적

  1. Cloud9을 이용하여 서버리스 애플리케이션을 SAM 기반으로 개발/테스트/배포 할 수 있다. (Cloud9, SAM)
  2. SAM(Serverless Application Model)을 이해하고 직접 다룰 수 있다. (API Gateway, Lambda, DynamoDB, S3, SNS)
  3. 서버리스 애플리케이션을 Code 시리즈를 이용해서 배포 프로세스를 제작할 수 있다. (CodePipeline, CodeCommit, CodeBuild, CloudFormation(SAM), CodeDeploy, IAM)

Cloud9을 이용한 서버리스 애플리케이션 제작

Amazon Polly 소개

일반적으로 텍스트를 읽는 것은 쉽지 않습니다. 애플리케이션이 문장에 있는 각각의 문자를 읽는 것만으로는 의미가 있다고 볼 수 없습니다. 예를 들어, 텍스트를 음성으로 변환하는(text-to-speech) 애플리케이션은 다음과 같은 공통적인 문제가 있습니다:

  • 동일하게 쓰여졌으나 다르게 발음되는 단어: I live in Las Vegas. vs. This presentation broadcasts live from Las Vegas.
  • 텍스트 정규화. 애매모호한 약어, 두문자어 및 단위: St.는 street 또는 saint 로 쓰일 수 있습니다.
  • 복잡한 매핑을 사용하는 언어로 된 음소로의 텍스트 변환: tough, through, though. 스펠링은 유사하지만, 단어나 문맥에 따라 다르게 발음 합니다.
  • 외래어(déjàvu), 고유 이름(François Hollande), 속어(ASAP LOL) 등에서 발음 문제가 있습니다.

Amazon Polly는 이러한 문제를 해결하는 음성 합성 기능을 제공합니다. 따라서 위와 같이 텍스트를 음성으로 변환하는 어려움을 해결하기 위한 노력 대신 애플리케이션 개발 자체에 주력할 수 있습니다.

Amazon Polly는 텍스트를 생생한 음성으로 변환시킵니다. 자연스럽게 말하는 애플리케이션을 만들 수 있으므로 완전히 새로운 범주의 음성을 사용하는 서비스를 만들 수 있습니다. Amazon Polly는 딥 러닝 학습 기술을 사용하여 사람 목소리처럼 들리는 음성을 합성하는 Amazon AI 서비스입니다. 25 개국 언어(한국어 포함)로 52 가지(한국어 서연 목소리 포함)의 목소리가 포함되어 있어 이상적인 목소리를 선택하여 다양한 국가에서 사용할 수 있는 음성을 제공하는 애플리케이션을 제작할 수 있습니다. (2017년 11월 15일 기준)

또한 Amazon Polly는 실시간 대화를 지원하는 데 요구되는 일관성 있는 빠른 응답 시간을 제공합니다. 오프라인 재생 또는 재배포를 위해 Polly의 오디오 파일을 캐시하고 저장할 수 있습니다. (즉, 재활용이 가능하므로 추가 과금이 발생하지 않습니다.) 그리고 Polly는 사용하기 쉽습니다. 음성으로 변환하려는 텍스트를 Amazon Polly API에 실어 보내기만 하면 됩니다. Amazon Polly는 오디오 스트림을 애플리케이션에 즉시 반환하므로 애플리케이션에서 직접 재생하거나 MP3와 같은 표준 오디오 파일 형식으로 저장할 수 있습니다.

이 블로그는 Amazon Polly를 사용하여 텍스트를 음성으로 변환하는 서버리스 서비스 기반 애플리케이션을 구축하는 방법을 소개합니다. 이 애플리케이션은 텍스트를 여러 언어로 받아 들인 다음 웹 브라우저에서 재생할 수있는 오디오 파일로 변환하는 간단한 사용자 인터페이스를 제공합니다. 여기서는 블로그 게시물을 사용하지만 모든 유형의 텍스트를 사용할 수 있습니다. 예를 들어, 차를 운전하거나 자전거를 타는 동안 뉴스 기사 또는 책을 읽거나, 식사를 준비하는 동안 조리법을 읽어주는 애플리케이션에 사용할 수 있습니다.

...

아래 다이어그램은 이 애플리케이션의 아키텍처를 보여 줍니다. 프로비저닝, 패치, 확장에 대해서 고민할 필요가 없는, 즉 서버 작업이 필요하지 않는 서버리스 서비스로 구성합니다. 클라우드가 자동으로 이를 관리하기 때문에 우리는 애플리케이션 개발에만 집중할 수 있습니다.

draw.io Diagram
bordertrue
viewerToolbartrue
fitWindowfalse
diagramNameServerlessPolly
simpleViewerfalse
width
diagramWidth13791377
revision12

이 애플리케이션은 가지 서비스를 제공합니다.

  • 첫 번째는 HTML, CSS, Javascript 및 이미지를 정적 웹 페이지로 호스팅 합니다.
  • 두 번째는 새로운 게시물에 대한 텍스트 정보를 MP3 파일로 변환하는 방법을 제공합니다.
  • 세 번째는 게시물에 대한 정보(S3 버킷에 저장된 MP3 파일에 대한 링크 포함)를 검색하는 것입니다.
  • 네 번째는 사전에 등록한 게시물을 삭제하는 것입니다.

게시물 등록 및 검색은 /검색/삭제는 Amazon API Gateway를 통해 RESTful API 서비스로 제공됩니다. 로직은 Lambda 서비스를 통해서 구현되며 애플리케이션이 어떻게 상호 작용 하는지 살펴 보겠습니다.

...

  1. MP3로 생성할 텍스트 정보는 Amazon API Gateway에 의해 노출 된 RESTful 웹 서비스에 의해 수신됩니다노출된 RESTful API로 수신합니다.
  2. Amazon API Gateway는 MP3 파일 생성 프로세스를 초기화하는 전용 Lambda 함수인 "New Post"를 설정합니다.
  3. 한자를 한글로 변환하고자 할 경우에 사용할 "Hanja to Korean" Lambda 함수를 호출 할 수 있도록 설정합니다.
  4. "New Post" Lambda 함수는 게시물에 대한 메타 정보를 DynamoDB 테이블에 저장합니다.
  5. 전체 프로세스를 비동기적으로 실행하기 위해 Amazon SNS를 사용하여 새 게시물에 대한 정보를 받고 변환을 시작하도록 프로세스를 분리합니다.
  6. 새 게시물의 텍스트를 오디오 파일로 변환하기 위한 Lambda 함수인 "Convert to Speech"는 Amazon SNS 주제에서 트리거 되도록 설정합니다.
  7. "Convert to Speech" Lambda 함수는 Amazon Polly를 사용하여 텍스트를 지정된 언어의 음성을 이용하여 오디오 파일로 변환합니다.
  8. 생성된 오디오 파일인 MP3 파일은 전용 S3 버킷에 저장합니다.
  9. 텍스트가 MP3로 변환된 S3 버킷에 대한 참조 URL 정보 및 해당 게시물 처리 상태에 대한 정보는 DynamoDB 테이블에 업데이트 합니다.

...