1부 서버리스 웹 앱

서버리스 핸즈온Serverless Hands-On은 말 그대로 서버 없이 운영하는 서비스를 구축하는 연습을 합니다. 운영체제OS에 종속된 개발환경에서 벗어나 웹 기반의 통합개발환경IDE, Integrated Development Environment에서 서버리스 서비스를 만들어봅니다. 우선 서버리스 프레임워크Serverless Framework 관련 명령어를 알아보고, 아마존웹서비스AWS, Amazon Web Service 환경에서 직접 웹앱Web App과 웹 크롤러Web Crawler를 배포합니다.


서버리스란?

서버리스를 사용하는 이유는 이렇습니다. 클라우드가 물리 장비의 장벽을 허물어뜨렸음에도 불구하고 클라우드에서 서버를 운영하면 반쪽짜리 효과가 나타납니다. 서버에서 사용하는 소프트웨어를 설정하고 각 서버의 네트워크를 엮는 과정에 상당히 많은 노하우가 필요하기 때문입니다. 서버리스는 코드만 업로드하고 연동할 서비스를 콘솔 화면 상에서 선택하면 됩니다. 그렇게 웹 서비스를 시작하면 평소에는 동작하지 않다가 API 요청이나 이벤트가 발생할 때 로직이 동작합니다. 요금은 동작한 시간만큼만 초 단위로 과금됩니다. 굳이 전통적인 방식으로 서버를 운영하고 CPU나 메모리를 모니터링할 필요가 없습니다. 메모리 최적화도 필요 없죠. 약 30분마다 새로운 이벤트에 대한 람다Lambda가 재생성되고 이전 람다는 내려가기 때문입니다.


이 장의 내용

AWS를 활용해 서버리스 아키텍처로 구성된 API를 배포합니다. 결과는 S3에 정적 웹 사이트Static Web Site로 배포된 리액트 웹 앱React Web app을 통해 확인합니다.


  • Cloud 9 시작하기

  • 서버리스 프레임워크 살펴보기

  • S3 버킷Bucket 생성하기

  • Node.js와 익스프레스 프레임워크Express Framework로 API 만들어보기

  • DynamoDB 테이블 생성하기

  • Cloud 9에서 배포하기

  • 정적 웹 사이트Static Web Site에서 API 호출해보기

  • S3를 통해 정적 웹 사이트를 호스팅하기

  • 리소스 삭제하기



사용하는 AWS의 서비스


  • Cloud 9 : 코드 작성, 실행 및 디버깅을 위한 클라우드 기반 IDE다.

  • EC2 : 클라우드에서 확장식 컴퓨팅을 제공한다. 여기서는 Cloud 9을 동작하기 위해 사용한다.

  • API Gateway : API를 생성, 게시, 유지 관리, 모니터링 및 보호하는 서비스다.

  • Lambda : 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스다. 서버리스 아키텍처의 핵심 서비스의 하나다.

  • DynamoDB : 완벽하게 관리되는 NoSQL 데이터베이스 서비스로, 원활한 확장성과 빠르고 예측 가능한 성능을 제공한다.

  • S3 : 어디서나 원하는 양의 데이터를 저장하고 검색하도록 구축된 객체 스토리지다. 소스 코드의 저장소로 활용한다.