8. Introducing Lambda@Edge01 |
• Lambda 함수의 확장형으로 CloudFront 이벤트 응답으로 Edge Location에서 실행할 수 있음
• 개인화된 컨텐츠를 위해 전 세계적으로 설치하거나 구성, 확장할 필요가 없음
• 필요한 작업은 함수를 작성하고 배포하기만 하면 끝
• 트리거가 생성되면 Lambda 함수는 전 세계의 엣지 로케이션에 복제됨
9. CloudFront Triggers for Lambda@Edge01 |
Dynamic Contents
Static ContentsUsers CloudFront
Elastic Load Balancing EC2
Simple Storage
Service (S3)
11. CloudFront Triggers for Lambda@Edge01 |
• Request event
• URI 및 수정된 헤더는 요청되는 객체를 변경할 수 있음
• Viewer request 는 요청되는 객체를 CloudFront 캐시 및 원본에서 변경할 수 있음
• Origin request는 오리진에서 요청된 객체 또는 경로 패턴을 변경할 수 있음
• Response event
• Origin response는 캐시된 것을 수정하고 캐시 가능한 응답을 생성하여 뷰어에게 반환할 수 있음
• Viewer response는 뷰어에게 반환되는 것을 변경할 수 있음
12. Lambda compared to Lambda@Edge01 |
Lambda Lambda@Edge
Languages Node.js, Python, Ruby.. etc Node.js
Memory 128MB ~ 3,008MB
128~3,008MB (origin-facing)
128MB (viewer-facing)
Execution Time > 900s (15 minutes)
> 30s (origin-facing)
> 5s (viewer-facing)
Deployment size > 50MB(zipped) > 1MB (zipped)
Request Pricing
First 1 million free
$0.20 per 1 million
$0.60 per 1 million
Duration granularity 100ms 50ms
128MB for 100ms $0.000000208 $0.00000625125
13. Lambda@Edge Use Case01 |
• Response generation
• 다중 오리진 구성 / 개인화 설정
• Content-type 변환 (e.g XML -> JSON)
• HTTP Redirection
• 디바이스 종류, 언어 및 지역에 따른 최적의 환경으로 리다이렉션 가능
• Redirect example.com -> www.example.com
• Semantic URLs
• 내부 디렉토리 구조와 조직을 노출하지 않으면서 컨텐츠를 제공하는 URL 최종 사용자 요청을 Rewrite 가능
• 일관성을 손상시키지 않으면서 맞춤 설정된 값을 제공할 수 있음
14. Lambda@Edge Use Case01 |
• Performance
• 쿼리스트링, 에이전트 정규화를 통해 요청을 가변적으로 줄임
• 요청 헤더, 쿠키 특성을 기반으로 동적 라우팅
• Dynamic Content Generation
• 로직리스 템플릿 기반으로 페이지 렌더링
• A/B 테스트
• Security
• 봇 탐지 설정 / 접근하는 요구에 대해 사용자 지정 오리진에 서명 요청
• HSTS 또는 CSP 보안 헤더 추가
16. CI/CD Life Cycle02 |
Dev
자동화 및 지원 도구
QA Dev
DevOperator QA
Development
StagingProduction
17. CI/CD Process02 |
Source
• 소스 코드 커밋
• 코드 상호 검토
Build
• 코드 컴파일
• 유닛 테스트
• 스타일 검증
• 빌드 테스트
• 컨테이너 이미지 제작
Test
• 타 시스템과 통합
테스트
• 부하 테스트
• UI 테스트
• 침투 테스트
Production
• 프로덕션 환경 배포
18. CI/CD Process02 |
Version Control
Build/
Compile
Code
Unit Test
App Code
DR Env
Test Env
Prod Env
Dev Env
Application
Write
App Code
Infrastructure
Deploy
App
Package
Application
Build
AMIs
Validate
Templates
Write
Infra Code
Deploy
Infras
Automate
Deployment
Artifact Repository
Code Build Integrate Test Release Deploy Provision Operate
19. Code Series04 |
Source Build Test Production
• 코드 릴리즈 단계
Third-Party
Tooling
또는
AWS CodeCommit AWS CodeBuild AWS CodeDeploy
AWS CodePipeline
21. Need For Lambda@Edge with CI/CD03 |
• DevOps에서는 CI/CD는 필수!
• $LATEST 또는 별칭이 아닌 지정된 버전에서만 배포 가능
• Lambda@Edge를 구성한 이후에 지정된 버전에 대해서 Lambda Function ARN을 수동으로 기입 필요
• 로직이 변경되어 코드를 수정해야하는 경우 복잡성이 증대됨
• 구성 방법 및 스테이지를 구분해야하는 경우에도 쉽게 처리 가능
28. Summary05 |
• CloudFront
• Lambda@Edge
• 이점 (친숙한 언어를 이용한 내 코드로 한번 작성하면 전세계로 배포)
• 사용자로부터 가까운 곳에서 코드를 실행 (Edge Computing)
• 성능이 개선되며 지연시간 감축
• 서버 관리 부담이 없으며 컨텐츠에 대해 사용자 지정 가능
• Lambda@Edge with DevOps
• 변경 사항을 제어하고 코드 배포에 대해 Automation 가능
• 개발 단계를 자동화하여 애플리케이션을 짧은 주기로 제공할 수 있음 (Agile)