Serverless Deployment
(서버 없는 배포)
AWS Lambda는 서버없는 배포 기술의 한 예이다. AWS Lambda는 Java, Node.js, Python 서비스를 지원한다. Microservice를 배포하기 위해서는, ZIP 파일로 패키지하고, AWS Lambda로 업로드하면 된다. 또한, AWS Lambda를 통해서 다른 여러 사항들 중에서 요청을 처리하기 위해 호출되는 함수 이름을 지정하는 메타데이터를 제공할 수도 있다. (a.k.a. an event : also known as - 이벤트라고도 알려진) AWS Lambda는 요청을 처리하기 위해 충분한 Microservice 인스턴스를 자동으로 실행한다. 소요된 시간과 메모리 사용량에 근거하여 각 요청에 대해 간단히 과금하게 된다. 물론, 악마는 세부 사항 내에 있으며, AWS Lambda에 제한 사항이 있음을 알게 될 것이다. 그러나, 개발자나 조직 내 다른 누군가가 서버나 Virtual Machine, 컨테이너 등의 어떤 측면에 대해서도 걱정할 필요가 없다는 개념은 믿을 수 없을 정도로 매력적이다.
Lambda 함수는 상태를 저장하지 않는 서비스이다. 일반적으로 AWS 서비스를 호출하여 요청을 처리한다. 예를 들면, S3 Bucket에 이미지를 업로드하는 경우에 호출되는 Lambda 함수는 항목을 DynamoDB 이미지 테이블에 삽입하고, 이미지 처리를 트리거링하기 위하여 Kinesis 스트림에 메시지를 게시한다. Lambda 함수는 third-party 웹 서비스도 호출할 수 있다.
Lambda 함수를 호출하기 위하여 4가지 방법이 있다. :
1. 웹 서비스 요청을 사용하여 직접적으로 호출2. S3, DynamoDB, Kinesis, Simple Email Service와 같은 AWS 서비스에서 생성된 이벤트에 대한 응답으로 자동으로 호출3. Application Client로부터 HTTP 요청을 다루기 위하여 AWS API Gateway를 통해 자동으로 호출4. Cron과 같은 스케쥴에 따라 주기적으로 호출
보는 것과 같이, AWS Lambda는 Microservice를 배포하는데 편리한 방법이다. 요청 기반 가격 정책은 서비스가 실제로 수행하는 작업에 대해서만 과금한다는 뜻이다. 또한, IT 인프라에 대한 책임을 지지 않아도 되기 때문에 Application 개발에만 집중할 수 있다.
그러나, 몇 가지 중요한 제한 사항들이 있다. Third-party 메시지 브로커로부터 메시지를 사용하는 서비스와 같이, 장시간 실행되는 서비스를 배포하는데 사용하려는 것이 아니다. 요청 사항들은 300 초 내에 완료되어야 한다. 이론적으로는 AWS Lambda가 각 요청에 대해 별도의 인스턴스를 실행할 수 있기 때문에 서비스들은 상태를 저장하지 않아야 한다. 또한 서비스들은 지원되는 언어들 중에 하나로 구현되어야 한다. 서비스들은 빠르게 시작되어야 한다. 그렇지 않으면, 타임 아웃으로 종료될 수 있다.
댓글을 달아 주세요
댓글 RSS 주소 : http://www.yongbi.net/rss/comment/780