LiJell's 성장기

AWS Lambda@Edge 본문

Cloud

AWS Lambda@Edge

All_is_LiJell 2023. 8. 6. 17:32
반응형

Edge Services

Edge는 CDN에서 콘텐츠를 지역적으로 가까운 위치에서 사용자에게 전달하는 역할을 하는 서버들을 말합니다.

예를 들어, Edge Location에는 DNS 서비스 (AWS Route 53), 데이터 캐쉬 컨텐츠 (AWS CloudFront), 미디어 처리 (AWS elemental), DDOS/ L7 보안 (AWS Shield, AWS WAF) 등이 포함됩니다.

 

Edge와 관련된 조금 더 자세한 내용은 아래 글을 참고해주세요.

 

웹 애플리케이션 서비스 개요

AWS로 애플리케이션을 만들 때 보통 아래와 같이 구성합니다. 웹 애플리케이션 = Origin + Edge + Client 애플리케이션을 구성할 때 "Origin(오리진)"은 주로 콘텐츠 전달 네트워크(CDN)나 웹 애플리케이션

lime-jelly.tistory.com

 

AWS Lambda 서비스

Event Source >> Function >> Servives

 

Event Source : 데이터 상태 변경, 엔드 포인트로 호출, 자원 상태 변경 등 

Function : Node.js, Python, Java, C# 및 자체 라이브러리 패키징으로 구성된 함수

Services: 데이터 저장 및 분석, 다른 AWS 실행 등

 

즉 Event에 따라 함수가 trigger됩니다. 

서버리스 기반 엣지 컴퓨팅

엣지는 기본적으로 컴퓨팅 리소스가 없습니다. 다시말해, progammable한 코드가 배포되는게 아니고, 주로 정적인 파일만 있습니다.

 

엣지 컴퓨팅이라는것은 기본적으로 엣지 로케이션의 컴퓨팅 리소스, 즉 progammable 하다는 것을 의미합니다. 

이것을 서버리스로 구성한게 Lambda@Edge입니다. 

 

AWS Lambda@Edge란

AWS의 서비스 중 하나로, AWS Lambda를 사용하여 엣지 서버에서 코드를 실행하는 기능을 제공합니다. 기존의 AWS Lambda는 클라우드 내부에서 코드를 실행하는 데에 사용되지만, Lambda@Edge는 CDN (Content Delivery Network)의 엣지 서버에서 코드를 실행할 수 있도록 확장된 서비스입니다.

 

Lambda@Edge는 CDN 서비스인 Amazon CloudFront와 연동되어 동작합니다. CloudFront는 전 세계 여러 지역에 분산된 엣지 서버를 통해 콘텐츠를 빠르게 제공하고, Lambda@Edge는 이러한 엣지 서버에서 실행되는 코드를 제공합니다. 이를 통해 엣지 서버에서 발생하는 요청과 응답에 대해 실시간으로 사용자 정의 코드를 실행할 수 있습니다.

 

Lambda@Edge의 주요 특징과 활용 방법은 다음과 같습니다:

 

1. 실시간 커스텀 레이어: 엣지 서버에서 사용자 정의 코드를 실행하여 요청에 대한 동적인 처리가 가능합니다. 이를 통해 특정 요청에 대해 캐싱, 요청 수정, 응답 수정, 인증, 보안, A/B 테스트 등 다양한 기능을 구현할 수 있습니다.

 

2. 낮은 지연 시간: 엣지 서버에서 코드를 실행하기 때문에 사용자와 가까운 곳에서 처리가 이루어지므로 지연 시간이 최소화됩니다. 이로 인해 전체 응답 시간이 감소하여 사용자 경험을 향상시킵니다.

 

3. Scale-to-Zero: Lambda@Edge 함수는 논리적으로 만들어지며, 서버리스 아키텍처를 따릅니다. 따라서 트래픽이 적은 경우에는 함수 실행에 대한 비용이 발생하지 않습니다.

 

4. 지역 및 이벤트 기반 실행: Lambda@Edge 함수는 AWS의 다양한 지역에서 실행되며, 다양한 이벤트 (예: 뷰어 요청, 오리진 요청, 오리진 응답 등)에 대해 실행됩니다.

 

따라서, Lambda@Edge는 다양한 시나리오에서 유용하게 사용될 수 있습니다. 예를 들어, 사용자의 위치에 따라 콘텐츠를 다르게 제공하거나, 인증과 보안을 강화하거나, 캐시된 콘텐츠를 유연하게 관리하는 등의 기능을 구현할 수 있습니다.

 

Lambda@Edge를 사용하면 CloudFront 엣지 서버에서 실행되는 사용자 정의 코드를 통해 CDN의 기능을 확장하고 사용자 경험을 개선할 수 있습니다.

 

Lambda@Edge 활용 예시

1. 개인화 웹사이트 제공 

  • 디바이스, 언어, 지역에 따른 최적화된 콘텐츠를 제공할 수 있습니다. 

2. Pretty URLs

  • 기존에 복잡하고 명시적이지 않은 URL을 콘텐츠 관리 규칙에 따라 명확한 URL로 제공
  • 검색 엔진이나 외부 페이지에서 깨진 링크 없이 사용자 경험을 유지 가능

3. URI 대분자 변경

  • /2023/photos.png >> /2023/Photos.png

4. 헤더명 변경

  • Last-Modified >> X-Amz-Last-Modified

5. 콘틴츠 보안을 위한 헤더 추가

출처: Amazon Web Services Korea

사실 WAF로 처리 가능하다 

사용시 주의 할 점

1. 타임 아웃

  • Origin Request/Response 이벤트 함수는 3초 이내 실행
  • Viewer Request/Response는 1초 이내 실행 완료

2. 버전 관리

  • 람다 콘솔에서 코드 업데이트 후, 버전을 통해서만 배포 가능
  • 함수는 Replica 방식으로 각 리전에 복제됨

3. 런타임 환경

  • 함수별 125MB 메모리 제공
  • 내장 라이브러리 및 / tmp에 대한 엑세스 지원 안함
    • "tmp"는 "temporary"의 줄임말로, 임시적으로 사용되는 데이터가 저장되는 곳을 지칭합니다.

4. 트리거 갯수 제한

  • 각 배포지점별 3개의 함수만 이벤트 트리거 가능

 

반응형

'Cloud' 카테고리의 다른 글

S3 Cache-Control  (0) 2023.10.13
ECS Speeding up deployments  (0) 2023.08.17
웹 애플리케이션 서비스 개요  (0) 2023.08.06
NAT GateWay와 이중화의 중요성  (0) 2023.08.06
AWS Security Group  (0) 2023.04.11
Comments