Serverless

서버리스(serverless)란 개발자가 서버를 관리할 필요 없이 애플리케이션을 빌드하고 실행할 수 있도록 하는 클라우드 네이티브 개발 모델이다.

Amazon API Gateway 와 AWS Lambda 를 연동해서 서버 컴퓨터를 미리 확보할 필요 없이, 서버의 규모에 대한 고민 없이 코드만 작성해서 애플리케이션을 구축하는 할 수 있다. 이 두 개의 기술은 AWS 의 Serverless 의 핵심적인 역할을 담당하는 기술이다.

AWS Lambda

AWS Lambda 는 0.1 초 단위로 컴퓨터를 임대해주는 기술이다. AWS Lambda 는 코드가 실행 되는 순간 0.1 초 단위로 컴퓨터를 빌려주며, 코드의 동작이 끝나면 자동으로 컴퓨터를 반납한다.

  • API Gateway 를 Lambda 앞에 붙이면 Lambda 를 웹 서버 처럼 사용할 수 있다.
    • 사용자가 API Gateway 의 endpoint 로 요청이 들어오면 Lambda 가 xml, json 등의 데이터를 생성하고 사용자는 API Gateway 를 통해서 정보를 받을 수 있다.
    • Lambda 에서 Trigger 를 구성하여 다른 서비스에서 어떠한 변화가 생겼을때 Lambda 를 실행 시킬 수 있다.
    • 그 중 가장 강력한 것은 Amazon API Gateway 이다.

Trigger

Lambda 가 강력한 이유 중 하나는 Trigger 를 통해서 다른 AWS Service 들과 연동이 된다는 것이다.

  • Lambda > 추가 트리거를 통해서 트리거를 구성할 수 있다.
  • S3 + Lambda
    • S3 에 Bucket(폴더)를 만들고, 해당 Bucket 에 파일이 업로드 될때 Lambda 를 실행 시킬 수 있다.
  • API Gateway + Lambda
    • API Gateway 의 endpoint 로 요청이 들어오면 Lambda 가 xml, json 등의 데이터를 생성하고 사용자는 API Gateway 를 통해서 정보를 받을 수 있다.

Amazon API Gateway

API 는 사용하는 쪽과 사용되는 쪽 사이의 약속이다. 그 약속의 핵심은 사용방법이 변하지 않는다는 것이다. 그런데 API 를 제공하는 쪽에서는 여러가지 이유로 API 의 사용법이 달라질 수 있다. API 의 사용방법이 바뀌면 API 를 사용하는 수 많은 애플리케이션이 더 이상 동작하지 않게 된다. 이런 문제를 해결하기 위해서 존재하는 도구가 API Gateway 라고 불리는 제품들이다. API Gateway 를 사용하면 클라이언트 측의 코드를 바꾸지 않고도 API 를 자유롭게 변경할 수 있다.

  • API Gateway 의 장점
    • 로깅
    • 액세스 제어
    • 모니터링
    • 인증
    • … 등의 작업들을 통합적으로 관리할 수 있다.
  • API Gateway 의 구성 요소
    • HTTP API
    • REST API
    • WebSocket API

example.org 가 example.com 으로 통합되었다 하더라도 API Gateway 의 설정을 통해서 클라이언트의 코드 수정 없이 쉽게 변경할 수 있다.