마이크로서비스 작성 (Lambda)

sang yun Lee·2023년 5월 9일
0

AWS Lambda

  • AWS가 제공하는 서버리스 FaaS 솔루션
  • 함수의 인스턴스를 실행하여 이벤트를 처리

FaaS

  • 개발자가 자체 인프라를 유지관리할 필요 없는 일종의 클라우드 컴퓨팅 서비스
  • Stateless이고 런타임으로 특정 서버환경(eg. Node.js v14, Docker Image, etc)을 지정하여 사용
  • 수평적 확장은 완전 자동이며 탄력적이며 공급자가 관리함
  • FaaS의 기능은 일반적으로 공급자가 정의한 이벤트 유형에 의해 트리거됨

특징

  • 서버를 프로비저닝하거나 관리할 필요가 없음
    • 즉, 자동으로 스케일 아웃이 됨
  • 애플리케이션 또는 백엔드 서비스의 코드를 작성한 뒤 이벤트 트리거만 정의하면 동작이 됨
    • 이벤트 주도 아키텍처에 적합
  • 높은 가용성

AWS Lambda의 단점

  • Cold Start와 Warm Start로 인해 Lambda를 깨우는데 시간이 소요되므로 응답 시간이 느릴 수 있음
    • 따라서 상황에 따라 해당 함수는 잠들지 않고 대기하는 기능이 필요함
  • 지나치게 AWS에 의존적
    • 타사의 마이그레이션이 쉽지 않음

AWS Lambda 함수

  • AWS Lambda에서 실행하는 코드는 'Lambda 함수'로 업로드됨.
  • 각 함수에는 이름과 설명, 진입점, 리소스 요구 사항 등 연관된 구성 정보가 포함됨.
  • Stateless 스타일로 작성되어야 함
    • 모든 지속 상태는 Amazon S3, Amazon DynamoDB, Amazon EFS 등의 저장공간으로 관리해야 함.

AWS Lambda 함수

exports.handler = async (event, context) => {
    // TODO implement
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hello from Lambda!'),
    };
    return response;
};

params:

  • event: Lambda를 트리거 한 이벤트에 대한 모든 정보를 포함함. 예를들어 이벤트가 HTTP 요청인 경우, 해당 HTTP 요청에 대한 모든 정보가 들어 있다. 이 정보는 함수를 호출할 때 호출자가 JSON 형식 문자열로 전달하고, 런타임은 이 정보를 객체로 변환한다.
  • context: Lambda 함수가 실행되는 런타임에 대한 정보를 포함함.
  • callback: 모든 작업을 수행한 후에는 그에 대한 결과(또는 오류)와 함께 callback 함수를 호출하고 이를 AWS가 HTTP 요청에 대한 응답으로 처리한다.

트리거

  • Lambda 함수를 호출하는 리소스 또는 구성

AWS Lambda 함수 로깅

Amazon CloudWatch를 통해 로그를 확인할 수 있게 설정이 가능하다. 실행 시 코드를 모니터링할 수 있도록, Lambda에서는 요청 수, 요청당 호출 기간 및 오류를 유발하는 요청 수를 자동으로 추적 가능.

AWS Lambda에 대한 Amazon CloudWatch logs를 보는 방법

코드의 모든 로그가 /aws/lambda/<함수 이름>라는 이름으로 Lambda 함수와 연결된 CloudWatch Logs 그룹에 저장된다.

레퍼런스: 코트스테이츠, 인파님 블로그

0개의 댓글