/인프라/서버리스(Serverless) 아키텍처 실전 도입 가이드
인프라서버리스Lambda

서버리스(Serverless) 아키텍처 실전 도입 가이드

서버리스란 코드를 업로드하면 클라우드가 자동으로 실행 환경을 제공하고, 요청이 없을 때는 비용이 0원입니다. 서버는 있지만 개발자가 관리하지 않는다는 의미입니다. Lambda 실전 예시: 이미지 썸네일 자동 생성 python import boto3 from PIL import …

서버리스(Serverless) 아키텍처 실전 도입 가이드

서버리스란

코드를 업로드하면 클라우드가 자동으로 실행 환경을 제공하고, 요청이 없을 때는 비용이 0원입니다. 서버는 있지만 개발자가 관리하지 않는다는 의미입니다.

Lambda 실전 예시: 이미지 썸네일 자동 생성

Python
import boto3
from PIL import Image
import io

def handler(event, context):
    s3 = boto3.client('s3')

    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']

    # 원본 이미지 다운로드
    response = s3.get_object(Bucket=bucket, Key=key)
    image = Image.open(io.BytesIO(response['Body'].read()))

    # 썸네일 생성 (200x200)
    image.thumbnail((200, 200), Image.LANCZOS)

    buffer = io.BytesIO()
    image.save(buffer, format='JPEG', quality=85)
    buffer.seek(0)

    s3.put_object(
        Bucket=bucket,
        Key=f"thumbnails/{key}",
        Body=buffer.getvalue(),
        ContentType='image/jpeg'
    )
    return {'statusCode': 200}

Lambda 배포 설정

YAML
# serverless.yml
provider:
  name: aws
  runtime: python3.12
  architecture: arm64  # Graviton: 20% 저렴
  memorySize: 512
  timeout: 30

functions:
  thumbnail:
    handler: handler.handler
    events:
      - s3:
          bucket: my-bucket
          event: s3:ObjectCreated:*
          rules:
            - prefix: uploads/
            - suffix: .jpg

Cold Start 최적화

CODE
Cold Start 시간:
- Python 3.12: ~300ms
- Node.js 20: ~200ms
- Go 1.21: ~50ms
Python
# 전역 초기화 (컨테이너 재사용)
s3 = boto3.client('s3')      # 1회만 초기화

def handler(event, context):
    response = s3.get_object(...)  # 재사용
YAML
# Provisioned Concurrency로 Cold Start 제거
functions:
  api:
    provisionedConcurrency: 5  # 5개 인스턴스 항상 웜

서버리스 적합성 판단

적합한 워크로드:

  • 이벤트 기반 처리 (파일 업로드, 메시지 큐)
  • 불규칙한 트래픽 (피크가 있는 API)
  • 배치/스케줄 작업 (Cron)

부적합한 워크로드:

  • 15분 이상 장기 실행
  • 극도로 낮은 레이턴시 (<10ms)
  • GPU 집약적 연산

비용 비교

방식월 100만 요청 비용
Lambda~$10
ECS Fargate (상시)~$45
EC2 t3.micro (상시)~$9 (고정)

트래픽이 불규칙하면 Lambda가 압도적으로 저렴합니다. 24/7 고부하에서는 EC2/ECS가 유리합니다.

서버리스는 "인프라 관리 시간 = 0"을 목표로 합니다. 작은 것부터 시작해 점진적으로 확장하세요.

✦ ✦ ✦
편집 검토 · Editorial Review

이 글은 AI 에이전트가 1차 초안을 작성한 뒤, 사람 편집자가 사실관계·출처·톤과 맥락을 검토하여 발행했습니다. 오류나 부정확한 내용이 확인되면 24시간 이내에 정정합니다.

작성 · Infrastructure Engineer·검토 · 사람 편집자·발행 · 2026년 5월 24일

댓글

불러오는 중...