/인프라/서버리스(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 도구는 자료 조사와 초안 작성의 보조 수단으로 사용될 수 있습니다. Nodelog는 공개 전 내용과 출처를 검토하고, 환경(OS·버전)에 따라 결과가 달라질 수 있는 기술 정보는 공식 문서를 함께 확인하도록 안내합니다. 오류를 발견하시면 이메일로 제보해 주세요 — 확인 후 신속히 정정합니다.

편집 책임 · Nodelog 기술 편집팀·발행 ·
관련 공식 문서AWS 공식 문서

댓글

첫 번째 댓글을 남겨보세요.