AWS DVA 서버리스 — Lambda·SAM·Step Functions

2026-05-03확률과 통계 마스터 노트

AWS DVA-C02 마스터 노트 시리즈 7편. Lambda 동시성과 Provisioned Concurrency, SAM 템플릿으로 인프라 코드 작성, Step Functions 상태 머신과 표준 vs 익스프레스 모드, AppSync GraphQL과 실시간 구독까지 — 서버리스 아키텍처의 자격증 핵심을 한 흐름으로.

이 글은 AWS DVA-C02 마스터 노트 시리즈의 일곱 번째 편입니다. 2편(컴퓨팅)에서 Lambda 기초를 잡았다면, 이번엔 그 위에 올라가는 서버리스 생태계 — Lambda 심화·SAM·Step Functions·AppSync.

Lambda 심화

동시성 (Concurrency)

종류 설명
Reserved Concurrency 함수에 동시성 예약 (다른 함수 영향 격리)
Provisioned Concurrency 미리 워밍업 (Cold Start 회피)
계정 한도 1000 동시 실행
  ├── Function A: Reserved 200 (격리)
  ├── Function B: Reserved 100
  └── Unreserved Pool: 700 (나머지 함수 공유)

여기서 정말 중요한 시험 함정 — Reserved Concurrency = 0 으로 설정하면 함수가 호출되지 않게 차단(긴급 시).

Provisioned Concurrency 비용

미리 워밍한 만큼 시간당 과금. Cold Start 절대 없음 보장. 트래픽 예측 가능 + 빠른 응답 필수 자리.

환경 변수와 Secrets

환경 변수 (4KB 한도) — KMS 암호화 가능
SSM Parameter Store — 설정값
Secrets Manager — DB 비밀번호 등 자동 회전

여기서 시험 함정이 하나 있어요. DB 비밀번호는 Secrets Manager, 일반 설정은 Parameter Store. 자동 회전 필요면 Secrets Manager.

Lambda Layer

공통 라이브러리·런타임 분리. 함수당 최대 5 Layer.

Layer 1: NumPy·Pandas (Python ML)
Layer 2: 회사 공통 유틸
Layer 3: AWS SDK 신버전
→ 여러 Lambda에서 공유

별칭 (Alias) 과 버전

$LATEST → 최신 코드 (개발용)
v1, v2, v3 → 불변 버전
PROD alias → v3 가리킴 (운영)
DEV alias → $LATEST 가리킴

별칭 + 트래픽 분할 = Canary 배포.

PROD alias: v3 (90%) + v4 (10%) → 새 버전 점진 적용

Lambda@Edge / CloudFront Functions

CloudFront 엣지에서 코드 실행.

구분 Lambda@Edge CloudFront Functions
실행 시간 5-30초 1ms
메모리 128MB-10GB 2MB
런타임 Node.js·Python JavaScript
사용 복잡 처리 간단 헤더 조작

Lambda 트리거 — VPC

Lambda는 기본 VPC 외부 실행. RDS·ElastiCache 같은 VPC 내부 서비스 호출 시 VPC 설정 필요.

여기서 시험 함정이 하나 있어요. VPC Lambda는 NAT Gateway 통해 인터넷 접근. Public Subnet에 직접 두면 X (NAT 통해야).

SAM — Serverless Application Model

CloudFormation의 서버리스용 단순 문법.

# template.yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31  # SAM 변환

Resources:
  HelloFunction:
    Type: AWS::Serverless::Function
    Properties:
      Runtime: python3.11
      Handler: app.lambda_handler
      CodeUri: ./src
      Events:
        ApiEvent:
          Type: Api
          Properties:
            Path: /hello
            Method: get

SAM CLI

명령 용도
sam init 템플릿 생성
sam build 빌드·의존성 패키징
sam local invoke 로컬 테스트
sam local start-api 로컬 API Gateway
sam deploy 배포
sam logs CloudWatch 로그

SAM 정책 템플릿

미리 정의된 정책.

Policies:
  - DynamoDBCrudPolicy:
      TableName: !Ref MyTable
  - S3ReadPolicy:
      BucketName: my-bucket

직접 IAM JSON 작성 안 하고 표준 권한 부여.

여기서 시험 함정이 하나 있어요. SAM은 결국 CloudFormation으로 변환되어 배포. 디버깅 시 CloudFormation 콘솔에서 확인.

Step Functions — 상태 머신

회사 비유 — 업무 플로우 차트. 여러 Lambda·서비스를 워크플로로 연결.

상태 (State)

상태 용도
Task Lambda·다른 서비스 호출
Choice 조건 분기
Wait 대기
Parallel 병렬 실행
Map 배열 반복 처리
Pass 데이터 전달만
Succeed/Fail 종료

Amazon States Language (ASL)

JSON으로 워크플로 정의.

{
  "StartAt": "Validate",
  "States": {
    "Validate": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:...:function:Validate",
      "Next": "ProcessOrder"
    },
    "ProcessOrder": {
      "Type": "Choice",
      "Choices": [
        {
          "Variable": "$.amount",
          "NumericGreaterThan": 1000,
          "Next": "RequireApproval"
        }
      ],
      "Default": "AutoApprove"
    },
    "RequireApproval": { /* ... */ },
    "AutoApprove": { "Type": "Succeed" }
  }
}

표준 vs 익스프레스 모드

구분 Standard Express
최대 실행 1년 5분
처리량 2,000/s 100,000/s
가격 상태 전환 단위 실행 단위
실행 이력 90일 짧음 (CloudWatch만)
적합 장기 워크플로 짧은 고처리량 (IoT·실시간)

여기서 정말 중요한 시험 함정 — Express는 5분 한도 입니다. 장기 작업은 Standard.

에러 처리

{
  "Type": "Task",
  "Retry": [{
    "ErrorEquals": ["States.TaskFailed"],
    "IntervalSeconds": 1,
    "MaxAttempts": 3,
    "BackoffRate": 2
  }],
  "Catch": [{
    "ErrorEquals": ["States.ALL"],
    "Next": "ErrorHandler"
  }]
}

자동 재시도 + 에러 핸들러 분기.

Activities

워커 노드(EC2·외부 시스템)가 폴링하는 작업.

Step Functions → Activity (대기) ← 외부 워커가 가져감 → 결과 반환

장기 외부 처리에 사용.

AppSync — GraphQL

AWS의 GraphQL 서비스. 실시간 구독 지원.

특징

  • GraphQL 쿼리·뮤테이션·구독
  • DynamoDB·Lambda·HTTP·OpenSearch·Aurora 데이터 소스
  • 실시간 동기화·오프라인 데이터
  • WebSocket 기반 구독

인증

방식 설명
API Key 단순
Cognito User Pool 사용자별
IAM 서비스 간
OIDC OpenID 연동
Lambda 커스텀

Resolver

GraphQL 필드 → 데이터 소스 매핑.

type Post {
  id: ID!
  title: String!
}

# Resolver: Post 조회 → DynamoDB GetItem

실시간 구독

subscription onCreatePost {
  onCreatePost {
    id
    title
  }
}

새 데이터 도착 시 클라이언트에 자동 push.

Lambda·SAM·Step Functions·AppSync 비교

서비스 자리
Lambda 단일 함수 실행
SAM Lambda 인프라 코드
Step Functions 여러 Lambda 워크플로
AppSync GraphQL API + 실시간

시험 직전 한 번 더 — 자주 헷갈리는 함정 모음

여기까지가 7편의 핵심입니다. 시험 직전 또는 실무에서 헷갈릴 때 다시 펼쳐 볼 수 있게 압축 노트로 마무리할게요.

  • Reserved Concurrency = 격리 / Provisioned Concurrency = Cold Start 회피
  • Reserved=0 = 함수 차단
  • Lambda 환경 변수 4KB / KMS 암호화 가능
  • Secrets Manager = DB 비밀번호 (자동 회전) / Parameter Store = 일반 설정
  • Lambda Layer = 공통 라이브러리, 함수당 5 Layer
  • 별칭(Alias) + 트래픽 분할 = Canary 배포
  • Lambda@Edge (5-30s) vs CloudFront Functions (1ms·2MB)
  • VPC Lambda → NAT Gateway 통해 인터넷
  • SAM = CloudFormation 서버리스 단순 문법
  • Transform: AWS::Serverless-2016-10-31
  • sam build / local invoke / deploy / logs
  • 정책 템플릿 — DynamoDBCrudPolicy 등
  • 결국 CloudFormation 변환·배포
  • Step Functions = 상태 머신 워크플로
  • 상태 — Task / Choice / Wait / Parallel / Map / Pass / Succeed
  • ASL = Amazon States Language (JSON)
  • Standard 1년 / Express 5분
  • 처리량 Standard 2K/s / Express 100K/s
  • 장기 = Standard / IoT 단기 고처리량 = Express
  • Retry·Catch로 자동 재시도·에러 분기
  • Activities = 외부 워커 폴링
  • AppSync = GraphQL + 실시간 구독
  • 데이터 소스 — DynamoDB / Lambda / HTTP / Aurora / OpenSearch
  • 인증 — API Key / Cognito / IAM / OIDC / Lambda
  • Resolver = 필드 → 데이터 소스 매핑
  • 실시간 구독 = WebSocket

시리즈 다른 편

공식 문서: AWS Lambda Developer Guide / SAM Developer Guide에서 더 깊이.

다음 글(8편)에서는 CI/CD — CodeCommit·CodeBuild·CodeDeploy·CodePipeline의 4단계 파이프라인, 배포 전략(Blue/Green·Canary·Linear)까지 풀어 갑니다.

※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

답글 남기기

error: Content is protected !!