2. 본 강연에서 다룰 내용
• AWS의 글로벌 자원을 활용하여 손쉽게 글로벌 서비스를
구축할 수 있습니다.
• 사용자들에게 빠르게 응답할 수 있으며 비용 효율적인
서비스를 구성하기 위하여 AWS의 엣지 서비스를
활용하는 방안에 대해서 알아봅니다.
• AWS의 서비스를 보호하기 위하여 엣지 서비스의 다양한
보안 기능들을 활용하는 방법에 대해서 알아봅니다.
8. CloudFront Regional Edge Caches
Europe
Frankfurt
North America
Northern VA
Oregon
Asia Pacific
Mumbai
Singapore
Sydney
Seoul
Tokyo
South America
São Paulo
9개의 대륙별 Regional Edge Cache
11. 쉽게 사용할 수 있는 DNS
• 글로벌 스케일의 신뢰성 높은 DNS 서비스
• 엣지에서 제공되는 분산 DNS Resolver
• Internal (AWS) and External (internet) DNS
• Domain Registrar
• Health Check을 포함한 트래픽 라우팅 서비스
• 100% SLA
www.example.com
도메인 등록
Hosted Zone
구성
DNS 라우팅
설정
Create Zone Records
(SOA, NS, MX, A, CNAME, etc.)
Health Check 및
트래픽 라우팅 구성
12. www.example.com?
1분만에 이해하는 DNS
ISP의 DNS
Resolver
Root name server
Name server for .com
운영중인 웹서버
IP address: 1.2.3.4
Name server for
example.com
www.example.com?
.com에 대해서 알고 있는 name server
www.example.com?
example.com에 대해서 알고 있는
name server
www.example.com?
www.example.com의
IP address는 1.2.3.4
IP: 1.2.3.4
HTTP 요청:
http://www.example.com
IP: 1.2.3.4
Success!
13. 웹 사이트에 대한 단계별 DNS 구성 (Route 53)
ISP의 DNS
Resolver
Root name server
Name server for .com
운영중인 웹서버
Name server for
example.com
14. ISP의 DNS
Resolver
Name server for .com
운영중인 웹서버
Name server for
example.com
Root name server
domain name 등록
웹 사이트에 대한 단계별 DNS 구성 (Route 53)
15. ISP의 DNS
Resolver
Name server for .com
운영중인 웹서버
Root name server
Name server for
example.com
domain name 등록
hosted zone 생성
웹 사이트에 대한 단계별 DNS 구성 (Route 53)
16. ISP’s DNS
Resolver
Name server for .com
Your web server
Root name server
domain name 등록
Name server for
example.com
hosted zone 생성
해당 zone에서 DNS 레코드 생성
웹 사이트에 대한 단계별 DNS 구성 (Route 53)
17. ISP’s DNS
Resolver
Your web server
Name server for
example.com
Root name server
Name server for .com
Route 53으로 “Delegate”
domain name 등록
hosted zone 생성
해당 zone에서 DNS 레코드 생성
웹 사이트에 대한 단계별 DNS 구성 (Route 53)
18. 다양한 로드 밸런싱 / Fail over
• 지역 기반 라우팅
• 클라이언트의 국가 위치에 따른 라우팅
• 언어 및 지역에 따른 설정 적용
• ECS (EDNS-Client-Subnet) 지원
• 지연시간 기반 라우팅
• 사용자로부터 가장 지연시간이 낮은 Region을 사용
• 가중치 기반 라우팅
• 가중치에 따른 로드 밸런싱 (A/B 테스트, 블루/그린 배포)
• 모든 정책에서 Health Check 사용 가능
• 알람으로 정책 수행 가능
19. Health Check을 통한 Site Fail Over 구성
EC2 instance
web app
server
Elastic Load
Balancing
users
EC2 instance
web app
server
Elastic Load
Balancing
Health Check
(HTTP/TCP)
www.mymediaservice.net
web1
web2
DNS 요청
가용한 웹 엔드포인트 리턴
(web1 / web2)
• 엔드포인트 간 로드 밸런싱 가능
(가중치 기반, 예 50:50)
• A/B 테스트, 블루/그린 배포
20. 지연시간 기반 라우팅
EC2 instance
web app
server
Elastic Load
Balancing
Users @ 일본
EC2 instance
web app
server
Elastic Load
Balancing
미국 동부 리전
www.mymediaservice.net
web-us-east-1
web-ap-northeast-2
DNS 요청
• 사용자와 네트워크 지연시간이
가장 낮은 곳으로 유도
서울 리전
Users @ 멕시코
web-ap-northeast-2
web-us-east-1
21. 지역 기반 라우팅
EC2 instance
web app
server
Elastic Load
Balancing
Users @ 한국
EC2 instance
web app
server
Elastic Load
Balancing
도쿄 리전
www.mymediaservice.net
web-ap-northeast-1
web-ap-northeast-2
DNS 요청
서울 리전
Users @ 일본
web-ap-northeast-2
web-ap-northeast-1
22. Private Hosted Zones
app-server-01.example.com?
IP: 10.0.1.2
Route 53 private DNS
Your app server
IP address: 10.0.1.2
virtual private cloud
Client: a server
in your VPC
• VPC 내부에서 동작
• 하나의 Private Hosted Zone으로
여러 VPC 관리 가능
24. Self Service 글로벌 CDN 서비스
• 73개의 엣지 및 지속적으로 추가되는 엣지를 이용한 글로벌 CDN
서비스
• 가장 큰 규모의 고가용 CDN 서비스
• 다른 AWS 서비스와 통합된 클라우드 CDN의 기준
• 어플리케이션 확장 및 성능 향상
• AWS WAF 및 DDoS 보안 서비스와 통합
• Lambda@Edge를 통한 유연성 (컴퓨팅 자원)
• S3 Transfer Accelerator 및 PUT/POST를 통한 S3 오브젝트 전송
• AWS 운영 콘솔 및 API/SDK를 활용한 Self-Service
25. Amazon CloudFront 주요 개념
• 사용자 (Viewer)
• CloudFront로부터 컨텐트를 요청하는 End-User
• 모바일 기기, 데스크톱 PC, 혹은 여러 형태의 인터넷에 연결된 기기
• CloudFront 엣지 로케이션 (Edge Location)
• Point of Presence 혹은 엣지 로케이션
• 주요 도시 지역에 위치 (여러 ISP에 직접 연결)
• 서버, 네트웍 자원을 통하여 사용자(Viewer)들의 요청을 처리
• 오리진 (Origin)
• 서비스가 위치하는 곳 (EC2, ELB, S3, API Gateway, ……)
26. Why cache?
두 가지 원칙:
1. 사용자들을 위한 성능/응답성 개선
2. 오리진에 대한 워크로드 감소
28. Amazon CloudFront 주요 구성 요소
• Distributions : 서비스되는 객체들을 위한 고유 cloudfront.net 도메인 이름
• D111111abcdef8.cloudfront.net
• Web / RTMP Distribution
• Origins : 인터넷으로 접근 가능한 모든 HTTP Server (Amazon S3 포함)
• Behaviors : Origin별 특성을 고려한 설정
• Restrictions, Error Pages, Tags
• 지역 기반 접근 제한 (국가별)
• 4XX, 5XX 별 에러 페이지 캐쉬
• 기본 페이지 캐쉬
• Price Classes
• All – Best Coverage
• North America + Europe – Lowest Cost
• North America + Europe + East and South East Asia – Optimized Cost
29. CloudFront : Origin 구성
• 인터넷으로 접근 가능한 모든 HTTP Server (S3 Bucket 포함)
• 하나의 CloudFront를 통하여 여러 Origin 사용 가능 (Path별)
• Origin별 Behavior 설정 (Cache, Header, Private Content, …)
Custom Origin
EC2 instance
web app
server
Elastic/Application
Load Balancing
Amazon S3
Bucket
CloudFront
Distribution
/image /web_source /login /api
D111111abcdef8.cloudfront.net/
30. HTTPS 사용 – Half Bridge
Amazon
CloudFront
HTTP
Region
• CloudFront – AWS 오리진 간 HTTP 사용 – 성능에 초점
31. HTTPS 사용 – Half Bridge
Amazon
CloudFront
HTTPS
Region
• 모든 구간 암호화
32. SSL 인증서 옵션
• Default
• CloudFront 도메인 이름 (예. https://d111111abcdef8.cloudfront.net/logo.jpg) 사용
• 브라우저 및 디바이스는 TLSv1 이상 지원
• Custom SSL Certificate
• 3rd party 인증서 – AWS Certificate Manager (ACM) 으로 import 혹은 IAM certificate
store 사용
• ACM에서 제공되는 인증서 (US East, N. Virginia에서 발급)
• SNI Support
• Custom SSL Certificate을 사용하는 경우 SNI를 지원하는 클라이언트에만 HTTPS
세션을 제공하는 경우 (무료) – SNI는 TLS 프로토콜의 확장
• 모든 Client에게 서비스를 제공하는 경우 ($600/월)
33. CloudFront Private Content
Signed URLs
• URL Querystring에 서명 추가
• URL 변경됨
언제 사용합니까?
• 파일 단위 접근 통제
• Cookie를 지원하지 않는 클라이언트
• RTMP Distribution을 사용하는 경우
Signed cookies
• Cookie에 서명 추가
• URL 변경되지 않음
언제 사용합니까?
• 여러 파일들을 묶어서 통제
• URL이 변경되는 것을 원하지
않을때
35. Origin에서 Expire header 사용
CloudFront에 존재하는 캐쉬 object의 변경 유무를 확인하는
시점을 “Expire” 헤더로 정의
시간 동기화 중요
< Expires: Fri, 1 Dec 2017 12:34:50 GMT
36. 오리진에서의 Cache-Control header
아래의 directive를 통해 세부 캐쉬 정책을 적용할 수 있음:
< Cache-Control: max-age=300
< Cache-Control: max-age=30, s-maxage=3600
Example: max-age=0, s-maxage=86400 : 광고 배포
브라우저
엣지 캐쉬
38. 동적 컨텐트 캐쉬
오리진의 부담을 최소화하도록 Cache-Control 설정:
- no-cache: 캐쉬, 오리진에 질의
- max-age=0: 캐쉬, 오리진에 질의
다른 옵션:
- no-store: 엣지나 브라우저 어느 것도 캐쉬하지 않음
- private: 엣지에서는 캐쉬되지 않으나, 브라우저에서는 캐쉬될 수 있음
39. CloudFront의
Cache 설정
URL path별 캐쉬 구성 (예.
다른 종류의 컨텐트)
CloudFront에서 forward되는
값 (Query String, Header)에
따라 캐쉬 키 변경
다음을 주의 :
• header 포워딩
• Query String 포워딩
• Cookie 포워딩
40. CloudFront TTL 설정 (Min/Max)
Min TTL Max TTLmax-age /
Expires
Browser Edge Cache
max-age /
s-maxage /
Expires
Max TTLmax-age /
Expires
max-age /
s-maxage /
Expires
Min TTL
Max TTL
max-age /
s-maxage /
Expires
Min TTLmax-age /
Expires
44. 사용자의 위치에서 가까운 Edge Location을 활용해 S3 업로드 속도 향상
https://aws.amazon.com/blogs/aws/aws-storage-update-amazon-s3-transfer-acceleration-larger-snowballs-in-more-regions/
Amazon S3 Transfer Acceleration
미국 동부 리전
(Virginia)
Amazon
S3
엣지 (서울)
사용자
(서울)
퍼블릭 인터넷을 통한 S3 업로드
최적화된 네트웍 경로를 통한 S3 업로드
46. • S3에 로그 파일이 PUT될 때 이벤트 처리를 통해 elasticsearch로 데이터 로드. Kibana로 모니터링 대쉬보드 생성 및 데이터 분석. 모니터링에 적합.
• 참조 - http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-aws-integrations.html#es-aws-integrations-s3-lambda-es
• 샘플 람다 코드 (Node.js) - https://github.com/awslabs/amazon-elasticsearch-lambda-samples
CloudFront Log Analysis – elasticsearch
AWS 리전
모니터링
로그생성
이벤트
CloudFront
Distribution
S3 버킷 람다 함수
Amazon ES
로그 설정
Elasticsearch API
48. • Amazon Athena를 통해 S3에 있는 데이터에 직접 SQL 쿼리를 통하여 분석 데이터 추출
• Amazon Quicksight를 통해서 데이터로부터 빠르게 insight를 얻음
• 문제 분석 및 현황 분석에 적합
CloudFront Log Analysis – Amazon Athena
AWS 리전
Insight
스키마 생성 / 로드
CloudFront
Distribution
S3 버킷
Amazon
Athena
로그 설정
Amazon
Quicksight
SQL 쿼리
52. Lambda@Edge
• Lambda@Edge를 통해 글로벌 엣지 지역에서 Node.js 코드를 실행
• 고객 서비스 향상을 위해 고객과 가장 가까운 곳에서 Lambda 함수를 통해
컨텐트 최적화 수행
Continuous
scaling
No servers
to manage
Never pay for idle
– no cold servers
Globally
distributed
60. Web Application Firewall?
• Web application firewall (WAF) 은 HTTP
Traffic에 적용할 룰셋을 어플라이언스, 서버
플러그인 혹은 필터 형태로 제공
• 네 가지 WAF 유형
• Pure play: 어플라이언스 혹은 소프트웨어
• CDN: Content Delivery Network과 통합
• Load balancer: 로드 밸런서와 통합
• Universal threat manager (UTM): 모든
종류의 보안 위협을 탐지
61. WAF를 사용하는 이유
어플리케이션 보안 취약성 :
Good users
Bad folks
Web server Database
코드
활용
Your application
62. WAF를 사용하는 이유
Abuse 감지 혹은 예방 :
Good users
Bad folks
Web server Database
Your application데이터
유출
63. WAF를 사용하는 이유
Distributed denial of service (DDOS) attacks:
Good users
Bad folks
Web server Database
Your application
64. WAF를 사용하는 이유
AWS
WAF
AWS WAF - 악의적 사용자를 차단하여 유저 보호 :
Good users
Bad folks
Web server Database
Your application
68. AWS Shield Standard
Layer 3/4 protection
ü 일반적인 공격으로부터의 보호
(SYN/UDP Floods, Reflection
Attacks)
ü 자동 감지 및 조치
ü AWS 서비스에 구성되어 있음
Layer 7 protection
ü AWS WAF를 통한 Layer 7 DDoS
공격 대응
ü Self-service & pay-as-you-go
71. 고객 데이터 센터
AND, OR
CloudFront 엣지 로케이션
정적 컨텐트 오리진
EC2 instance
web app
server
Elastic Load
Balancing
Amazon S3
bucket
동적 컨텐트 오리진
AWS WAF
Web Application Firewall
AWS SHIELD
Managed DDoS Protection
X
Lambda@Edge
Intelligent Compute
Amazon CloudFront
Content Delivery
Network (CDN)
정적 컨텐트 오리진
동적 컨텐트 오리진
X
엣지 서비스: 클라우드 및 하이브리드 아키텍쳐
72. 체크 포인트
• Amazon Route 53을 활용하여 가중치, 지역, 지연시간
기준의 다양한 라우팅 환경을 Health Check 기능과 함께
사용할 수 있습니다.
• Amazon CloudFront를 사용하여 사용자들이 빠르게
컨텐트를 사용할 수 있고 오리진 자원들을 적게 사용하여
비용을 절약할 수 있습니다.
• AWS WAF 및 Shield 서비스를 통하여 엣지에서부터
서비스를 안전하게 보호할 수 있습니다.
73. 본 강연이 끝난 후…
다음 보충 자료들을 통해 더 많은 정보를 얻으시기 바랍니다.
• Amazon CloudFront 웨비나 & re:Invent 세션
https://aws.amazon.com/cloudfront/webinars/
• Amazon CloudFront What’s new
https://aws.amazon.com/cloudfront/whats-new/
• Lambda@Edge
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge.html
75. https://www.awssummit.kr
AWS Summit 모바일 앱을 통해 지금 세션 평가에
참여하시면, 행사후 기념품을 드립니다.
#AWSSummitKR 해시태그로 소셜 미디어에
여러분의 행사 소감을 올려주세요.
발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜
채널로 공유될 예정입니다.
여러분의 피드백을 기다립니다!