본문으로 건너뛰기

Lambda@Edge

1 Lambda@Edge

  • Lambda@Edge는 Amazon CloudFront의 글로벌 콘텐츠 전송 네트워크(CDN)를 활용하여 사용자 가까이에서 코드를 실행할 수 있는 AWS 서비스입니다.
  • 이 서비스는 지리적 제약을 초월하여 사용자에게 더 빠르고 개인화된 콘텐츠를 제공하는 데 중점을 둡니다.

2 주요 기능

2.1 글로벌 배포 및 실행

  • Lambda@Edge는 AWS의 엣지 로케이션에서 코드를 실행합니다.
  • 전 세계적으로 분산된 엣지 로케이션을 통해 지연 시간을 최소화할 수 있습니다.
  • 사용자 요청이 엣지 로케이션에서 처리되므로 중앙 서버로의 요청 왕복을 줄입니다.

2.2 이벤트 기반 트리거

  • Lambda@Edge는 다양한 CloudFront 이벤트에서 트리거될 수 있습니다:
    • Viewer Request: 사용자가 CloudFront에 요청을 보낼 때 실행.
    • Viewer Response: CloudFront가 사용자에게 응답을 보낼 때 실행.
    • Origin Request: CloudFront가 오리진 서버에 요청을 보낼 때 실행.
    • Origin Response: 오리진 서버에서 CloudFront로 응답을 보낼 때 실행.

2.3 확장성 및 고가용성

  • AWS Lambda의 서버리스 아키텍처를 기반으로 하여 자동으로 확장됩니다.
  • 높은 트래픽을 처리할 수 있도록 설계되어 있습니다.
  • 별도의 인프라 관리 없이 고가용성을 제공합니다.

2.4 개인화된 콘텐츠 제공

  • 사용자의 요청에 따라 실시간으로 콘텐츠를 수정하고 개인화할 수 있습니다.
  • 예를 들어, 사용자 위치에 기반한 콘텐츠 제공, 광고 삽입, 사용자 세션 데이터 분석 등이 가능합니다.

3 사용 사례

3.1 실시간 이미지 처리

  • 사용자 요청 시 이미지를 변환하거나 조정하여 제공할 수 있습니다.
  • 예: 다양한 해상도 및 크기로 이미지 제공.

3.2 A/B 테스트 및 콘텐츠 실험

  • 다양한 사용자 그룹에게 다른 콘텐츠를 제공하여 A/B 테스트를 수행할 수 있습니다.
  • 실험 결과에 따라 콘텐츠 전략을 최적화합니다.

3.3 보안 강화

  • 사용자 요청을 검증하고, 불법적인 요청을 차단할 수 있습니다.
  • 예: JWT 토큰 검증, 사용자 인증 및 권한 부여.

4 비용

  • Lambda@Edge는 사용한 만큼 지불하는 종량제 요금제를 적용합니다.
  • 실행 시간, 요청 수, 전송된 데이터 양에 따라 요금이 부과됩니다.
  • 별도의 서버 관리 비용이 들지 않아 경제적입니다.

5 CloudFront Functions와 Lambda@Edge 비교

5.1 사용 사례 비교

CloudFront Functions 사용 사례

  1. 캐시 키 정규화:
    • 요청 속성(헤더, 쿠키, 쿼리 문자열, URL)을 변환하여 최적의 캐시 키 생성
    • 캐시 적중률을 높이고 효율적인 콘텐츠 전달 가능
  2. 헤더 조작:
    • HTTP 요청 또는 응답의 헤더를 삽입, 수정, 삭제
    • 클라이언트나 오리진 서버와의 통신을 최적화
  3. URL 재작성 또는 리디렉션:
    • 요청된 URL을 동적으로 변경하거나 다른 위치로 리디렉션
    • 콘텐츠 구조 변경이나 마이그레이션 시 유용
  4. 요청 인증 및 권한 부여:
    • 사용자 생성 토큰(예: JWT)을 생성하고 검증
    • 요청을 허용하거나 거부하여 기본적인 보안 계층 제공

Lambda@Edge 사용 사례:

  1. 긴 실행 시간:
    • 여러 밀리초가 소요되는 복잡한 처리 작업 수행 가능
  2. 조정 가능한 CPU 또는 메모리:
    • 리소스 집약적인 작업에 적합
    • 필요에 따라 컴퓨팅 리소스 조정 가능
  3. 서드파티 라이브러리 사용:
    • AWS SDK 등 외부 라이브러리를 활용한 복잡한 로직 구현
    • 다른 AWS 서비스와의 통합 용이
  4. 외부 서비스 접근:
    • 네트워크 액세스를 통해 외부 서비스와 통신 가능
    • 데이터 처리나 외부 API 호출 등에 활용
  5. 파일 시스템 접근:
    • 로컬 파일 시스템에 접근하여 데이터 읽기/쓰기 가능
  6. HTTP 요청 본문 접근:
    • POST 요청 등의 본문 데이터를 처리하고 수정 가능

5.2 요약

기능CloudFront FunctionsLambda@Edge
Runtime SupportJavaScriptNode.js, Python
# of RequestsMillions of requests per secondThousands of requests per second
CloudFront TriggersViewer Request/ResponseViewer Request/ResponseOrigin Request/Response
Max. Execution Time< 1 ms5 – 10 seconds
Max. Memory2 MB128 MB – 10 GB
Total Package Size10 KB1 MB – 50 MB
Network Access, File System AccessNoYes
Access to the Request BodyNoYes
PricingFree tier available,1/6th price of Lambda@EdgeNo free tier,charged per request & duration
  • CloudFront Functions는 JavaScript로 작성되며, 초당 수백만 건의 요청을 처리할 수 있습니다. 최대 실행 시간은 1ms 미만이며, 네트워크와 파일 시스템 접근은 불가능합니다. 요청 본문에 접근할 수 없고, 가격은 Lambda@Edge의 1/6입니다.
  • Lambda@Edge는 Node.js와 Python을 지원하며, 초당 수천 건의 요청을 처리합니다. 최대 실행 시간은 5-10초이며, 네트워크와 파일 시스템 접근이 가능합니다. 요청 본문에 접근할 수 있으며, 사용량에 따라 요금이 부과됩니다.

6 제약사항

  • 함수는 반드시 US East (N. Virginia) 리전에서 생성해야 함
  • 번호가 지정된 함수 버전만 사용 가능 ($LATEST 또는 별칭 사용 불가)
  • 최대 실행 시간: 5-10초
  • 지원되는 런타임: Node.js와 Python의 특정 버전만
  • VPC 내 리소스 접근, 환경 변수, 계층, AWS X-Ray 등 일부 Lambda 기능 지원 안 함
  • 요청 본문 크기 제한: Viewer Request 40KB, Origin Request 1MB

7 결론

  • Lambda@Edge는 콘텐츠 전송 속도 향상, 개인화된 사용자 경험 제공, 보안 강화 등 다양한 이점을 제공합니다.
  • AWS의 글로벌 인프라를 활용하여 전 세계 사용자에게 높은 성능과 가용성을 제공합니다.
  • 서버리스 아키텍처로 인프라 관리 부담을 줄이고 비용 효율적인 솔루션을 구현할 수 있습니다.