[Architecting on AWS] Serverless

Created
Nov 17, 2023
Created by
Tags
AWS
Property
 
 

Lambda

  • 람다 함수 생성에 필요한 것.
    • 함수 이름
    • 런타임 (Python, JVM 등)
    • application code
  • 람다 프로세스는 항상 떠 있는 게 아니고 이벤트 트리거를 받으면 프로세스가 떠서 실행되는 구조. (최대 15분까지 떠 있을 수 있다.)
  • 이벤트 트리거 주체는 SNS/S3/eventbridge 등 다양하다.
  • CPU/memory 자원 점유 양에 따라 알아서 자원을 할당해준다. 대신 최소/최대 범위는 지정 필요.
  • 이벤트 트리거 주체가 lambda 에 접근하도록 이벤트 트리거 주체에게 resource-based policy 를 자동으로 생성한다.
  • 람다로 실행할 코드가 다른 서비스에 접근 권한이 필요하다면 람다 함수에게 해당 서비스 접근에 대한 role 을 부여해야 한다.
 

API Gateway

  • lambda 으로 비즈니스를 구현하면 API Gateway 에서 REST API 스펙을 정의 & 람다 함수와 매핑.
  • end-user 인증 담당 가능. (with Cognito)
  • API 별로 테스트 및 배포 가능.
 

SQS

  • 메세지 하나 당 최대 256kb 허용.
  • 컨수머가 메세지를 polling 해야 하는 구조.
  • Type
    • Standard
      • 순서를 보장하지 않음
      • 최소 한번 보장 (메세지를 중복으로 가지고 있을 수 있다.)
      • 초당 호출 횟수에 제한 없음.
    • FIFO
      • 순서를 보장함.
      • 최대 한번 보장 (메세지를 중복으로 가지고 있지 않으나 누락 가능?)
      • 초당 300번까지 큐 호출 허용.
  • visuality timeout (가시성 제한 시간)
    • 메세지가 중복으로 처리되는 것을 방지하는 수단.
    • visuality timeout 을 설정 → 어떤 컨수머가 메세지를 한번 polling 하면 해당 타임아웃이 세팅되고 타임아웃 될 때 까지 다른 컨수머들이 메세지를 읽어들일 수 없음.
  • DLQ(Dead Letter Queue) 옵션 지원.
 

SNS

  • service that fans out messages to multiple consumers.
  • SNS 가 컨수머에게 메세지를 push 하는 구조.
  • FIFO 옵션 가능.
 

Step Function

  • service that orchestrates workflow with multiple steps.
  • 단계 하나 = state
  • state 에도 여러 타입이 있다.
    • pass
    • task
  • 여러 state 를 정의하고 각 state 에서 수행할 태스크를 람다 함수로 정의 가능.
  • JSON 으로 states 작성 가능.