aws summit 2017_이상오_fn
TRANSCRIPT
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
이상오 , 솔루션아키텍트
ROUTE53 및 CLOUDFRONT 를 이용한
CDN 활용기GS 네오텍
본 강연에서 다룰 내용
CDN 관련된 AWS 서비스의 개요
CDN 을 활용하여 성능 / 보안 / 비용측면 개선해보기
Lambda@Edge 를 활용한 기능 구현해보기 - 원본 스토리지 이전 문제 - 전처리 광고 구현해 보기 - Adaptive Contents Delivery 구현해보기
기타 CloudFront 사용 TIP
(ROUTE53, CLOUDFRONT, SHIELD, WAF, Lambda@Edge)
What is CDN….
IT 서비스 =Computing Delivery+서비스관점 : CDN
Contents Delivery Network (CDN)
어떻게 하면 사용자에게 가장 효율적이고 , 빠르게 서비스 할것인가 ?
100ms
10msCDN
(CloudFront)
캐시기반의 데이터 저장 Network 경로 최적화
지리적으로 가장 가까운 서버로부터 컨텐츠를 전송받음 .
AWS CDN 관련 서비스의 개요
AmazonRoute 53
Amazon CloudFront
CloudFro
nt
정적 / 동적 컨텐츠 가속 서비스HTTP/HTTPS 서비스 , Custom SSL 지원커스텀 오류 응답쿠키 / 헤더 오리진 서버 전달다양한 통계 보고서컨텐츠 보안 : Signed URL, Signed CookieAPI 호출 감사 : CloudTrail 연계업로드 가속
AMAZON CLOUDFRONT
CLOUDFRONT 는 모든형식의 컨텐츠를 전송
Dynamic
Static Video
UserInput
SSL
Ashburn, VA (3)Atlanta, GA (3)Chicago, ILDallas/Fort Worth, TX (2)Hayward, CAJacksonville, FLLos Angeles, CA (2)Miami, FLMinneapolis, MNMontreal, QCNewark, NJNew York, NY (3)Palo Alto, CAPhiladelphia, PASan Jose, CASeattle, WASouth Bend, INSt. Louis, MOToronto, ON
North AmericaCities: 19PoPs: 27
South AmericaCities: 2PoPs: 3
Rio de Janeiro, Brazil (2)São Paulo, Brazil
Europe / Middle East / AfricaCities: 15PoPs: 24
Amsterdam, The Netherlands (2)Berlin, GermanyDublin, Ireland
Frankfurt, Germany (5)London, England (4)
Madrid, SpainMarseille, France
Milan, ItalyMunich, GermanyParis, France (2)
Prague, Czech RepublicStockholm, Sweden
Vienna, AustriaWarsaw, Poland
Zurich, Switzerland
Asia PacificCities: 12PoPs: 20
Chennai, India
Hong Kong, China (3)Manila, the PhilippinesMelbourne, Australia
Mumbai, India (2)New Delhi, India
Osaka, JapanSeoul, Korea (3)
Singapore (2)Sydney, Australia
Taipei, TaiwanTokyo, Japan (3)
CloudFront Regional Edge CachesRegional Edge Caches: 9
Oregon, N. Virginia, Frankfurt, Sao Paulo, Mumbai, Singapore, Seoul, Tokyo, Sydney
Edge location
AWS Region / Regional Edge Cache
Regional Edge Cache
74 CloudFront Edge Locations (PoPs), 9 Regional Edge Caches (PoPs), 48 Cities, 5 Continents
AmazonRoute 53
AMAZON ROUTE53
Global Server Load Balancer(GSLB)
서버와 네트워크 장비들의 상태 및 성능 정보를체크하며 동적으로 사용자에게 노출될 DNS 레코드 타입과 값을 조정합니다 .
글로벌 DNS
가용성과 확장성이 우수한 클라우드 DNS( 도메인 이름 시스템 ) 서비스입니다 .
Route 53
GSLB
ROUTE53 : WEIGHTED
SYSTEMS SYSTEMS
80% 20%
ROUTE53 : LATENCY
SYSTEMS SYSTEMS
60ms 10ms
ROUTE53 : FAILOVER
SYSTEMS SYSTEMS
Health Check : OK Health Check : Fail
ROUTE53 : GEOLOCATION
SYSTEMS SYSTEMS
KOREA US
성능 개선해보기
80%
20%
일반적인 웹트래픽 비율Static Contents Dynamic Contents
Classic ELB(LoadBlancer)
EC2
S3
www.example.com
Dynamic Contents
Static Contents
DataBase
Classic ELB(LoadBlancer)
EC2
S3
www.example.com
Dynamic Contents
Static Contents
DataBase
CDN(CloudFront)
CDN(CloudFront)
/*.* (DEFAULT)
/images/*
/*.css
ORIGIN A: web
ORIGIN B : Images
GET http://www.example.com/do?login to ORIGIN AGET http://www.example.com/images/logo.jpg to
ORIGIN BGET http://www.example.com/css/main.css to ORIGIN C
ORIGIN C : CSS
Path Pattern Matching
CLOUDFRONT BEHAVIOR
STATIC CONTENTS 성능개선
100ms
10msCDN
(CloudFront)
STATIC CONTENTS LATENCY 성능 개선
Gzip 압축 기능을 통한 페이지 로딩속도 개선
362KB 81ms
51.3KB 27ms
DYNAMIC CONTENTS 성능개선
SYN
SYN-ACK
ACK
GET index.php
SYN
SYN-ACK
ACK
GET index.php
Classic ELB(LoadBlancer)
EC2
Dynamic Contents
DataBase
2 번째 사용자
400ms
400ms
100ms
DYNAMIC CONTENTS 성능개선
SYN
SYN-ACK
ACK
GET index.php
SYN
SYN-ACK
ACK
GET index.php
2 번째 사용자
400ms
130ms
SYN
SYN-ACK
ACK
GET index.php
GET index.php
Keep Alive Connections
90ms10ms
Classic ELB(LoadBlancer)
EC2
Dynamic Contents
DYNAMIC CONTENTS 성능개선
SSL 성능개선
WEB SERVER
WEB SERVER
Enable SSL
SSL 사용으로 인한 인프라 성능 저하
CPU Load 증가+ 가용량 60% 감소
( 세션기준 )
WEB
WEB
WEB
WEBClassic ELB(LoadBlancer)
WEB
WEB
WEB
WEB
SSL 사용으로 인해 더 많은 인프라 필요
Classic ELB(LoadBlancer)
SSL 성능개선
WEB
WEB
WEBAmazonCloudFront
HTTP/HTTPS비용 동일
ROUTE53 을 활용하여 중국향 성능개선
ROUTE53 : GEOLOCATION
GLOBAL CHINA
AmazonCloudFront
Local(China)CDN
ROUTE53 : SETTING
GLOBAL(CHINA) SPEED UPGlobal ABC 사 CF + Local CDN
보안성 강화해보기
CLOUDFRONT 를 사용하는 것만으로 보안 강화
AmazonSheild
AmazonWAF
Layer 3/4 보호
자동 탐지 및 대응
일반적인 공격유형방어
(SYN/UDP Floods, Reflection Attacks 등 )
AWS 서비스 결합
Layer 7 보호
Layer7 Application 방어
Custom Rule 기반
웹트래픽 필터링
악의적인 요청 차단
ORIGIN SYSTEM 보안 강화
ORIGIN 보호
Classic ELB(LoadBlancer)
EC2
S3
www.example.com
Dynamic Contents
Static Contents
DataBase
CDN(CloudFront)
Access Control to Origin
Amazon S3 Custom Origin
Origin Access Identify(OAI) Block by IP address
Prevents direct access to your
Amazon S3 bucket
Ensure performance benefits to all customers
Whitelist only the Amazon CloudFront IP Range
Protects origin from overload
Ensure performance benefits to all customers
Auto updated CF IP Range
CDN(CloudFront)
AmazonSNS
AWSLambda security group
UpdateIP Range
SNSMessage
UpdatingIP Range
Anti-DDos 보안 강화
DDos 공격 유형
대규모 트래픽 기반
상태 소진형
Application Layer
65%17%
18%
자원고갈형 공격비율
82%
ORIGINSYSTEMS
UDP/SYNFlooding Attack
HTTP
HTTP
AWSCloudFront
Layer7 Traffic 만이 ORIGIN SYSTEM 에 전달
AWSShield
GLOBAL Presence and Redundancy
Invalid Protocol
valid Request
Invalid Request
Country A
Country B
Country C
Route A
Route B
Route C
Layer7 보안 강화
WAF(Web Application Firewall)
AWSWAF
Host: www.example.comUser-Agent: Mozilla/5.0 (Macintosh; …Accept: image/png,image/*;q=0.8,*/*;q=0.5Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateReferrer: http://www.example.com/Connection: keep-alive
Check: Header “Referrer” Match Type: Contains Match: “example.com” Action: ALLOW
RAW REQUEST HEADERS Rule : String match condition
Match any part of the web request
WAF(Web Application Firewall)
AWSWAF
Host: www.example.comUser-Agent: badbotAccept: image/png,image/*;q=0.8,*/*;q=0.5Accept-Language: en-US,en;q=0.5Accept-Encoding: gzip, deflateReferrer: http://www.example.com/Connection: keep-alive
Check: Header “Referrer” Match Type: Contains Match: “example.com” Action: BLOCK
RAW REQUEST HEADERS Rule : String match condition
Use transforms to stop evasion
추가적인 보안 강화 기능
Security Enhancements Signed URL
Signed Cookies
Enforce HTTPS to origin
Support iOS ATS
Support for TLSv1 .1 and TLSv1.2 between edge and origin
Add/Modify Request Headers Forwarded From CloudFront to Origin
Integration with AWS Certificate Manager (SNI Certs from Amazon)
Integration with AWS WAF (web application firewall)
Geographic Restriction
IPv6 Support
비용 절약해보기
WEB
WEB
WEB
WEB (n)EC2 비용+ DataOut 비용
Classic ELB(LoadBlancer)
WEB
Reduce Computing Cost
Classic ELB(LoadBlancer) WEB
WEB (n)EC2 비용+ CF Dataout 비용
Reduce Computing Cost
CloudFront
Reduce Traffic Cost
ORIGINSYSTEMS
CloudFront
$$$
$$$
$ Free
Managed CloudFront Service
Based
3rd Party Solution
WiseN Monitoring System
AWS Cloud Watch
24x7x365Monitoring System 전문화된 NOC 운영
(Network Operation Center)
PriceDiscountProgram
ManagedCloudFrontProgram
전용 CLOUDFRONT 통계 제공
Traffic BandWidth 통계
REFERENCE 게임 미디어 / 엔터인먼트
쇼핑몰 공공 / 엔터프라이즈
Lambda@Edge 활용해보기
Triggers for Lambda@Edge Functions
Viewer Request
Viewer Response
Origin Request
Origin ResponseAmazon
CloudFrontOrigin(S3)
Lambda@Edge Limits
Max memory setting 128 MB
Maximum duration 50 ms
Size of code/dependencies that you can zip into a deployment package (uncompressed zip/jar size)
1 MB
Maximum Global TPS 100
STORAGE MIGRATION
Amazon S3CUSTOM STORAGE
What the hell happened????
Amazon S3MS Windows Server IIS
대소문자 구분 (X)
대소문자 구분 (O)
Service Flow
AmazonS3
/20170412/Logo.jpg
HTTP STATUS : 404(File Not
Found)
HTTP STATUS : 404(File Not
Found)
AmazonCloudFron
t
http://~/20170412/LoGo.jpg
http://~/20170412/LoGo.jpg
Service Flow
AmazonS3
/20170412/logo.jpg
HTTP STATUS : 200(OK)
HTTP STATUS : 200(OK)
AmazonCloudFron
t
http://~/20170412/LoGo.jpg
http://~/20170412/logo.jpg
Lambda@edge Source Code
CloudFront+Lambda@edge
Dynamic Quality Delivery
Dynamic Quality Delivery
AmazonS3
AmazonCloudFron
t
Request Headers and Hint
URLAdaptive Request Headers
Adaptive URL
Best-Fit ContentsCached Contents
Lambda@edge Source Code
CloudFront+Lambda@edge
PRE-ADVERTISING CONTENTS
Service Flow
Pre-processing Ad Main Video
http://video.example.com/ad/main.mp4
1
2 3
AD Contents
AmazonS3
/20170412/logo.jpg
AmazonCloudFron
t
http://video.example.com/ad/
main.mp4
/ad/ad.mp4 /ad/
main.mp4
Lambda@edge Source Code
CloudFront+Lambda@edge
기타 활용 TIP
HLS Streaming
HLS 스트리밍을 구성하였지만 , 비주기적으로 화면이 멈추거나 , 프레임 점프 현상이 발생합니다 .
설명
ORIGIN 응답시간 제어
사용자가 월간 CSV 다운로드 요청을 하였을경우 , 원본에서 해당 CSV 를 생성해서 응답을 합니다 . 그런데 이때 생성대상 데이터가 많아 생성하는데 약 1 분의시간이 필요하다 .
설명
CloudFront Edge Cache Control
CloudFront 에서는 지정한 시간만큼 캐싱을 하고 , 실제 사용자브라우저에는 캐싱을 하지 않도록 구성하고 싶습니다 .
설명
cache-control : max-age=0, s-maxage=3600
RTMP Streaming Service
AmazonS3
AmazonCloudFron
t
rtmp://video.example.com/wisen.mp4
반드시 S3 사용
HTTP 기반의 스트리밍 서비스가 아닌 , Flash Player 기반의 RTMP 스트리밍 서비스를 하고 싶습니다 .
설명
Fast Invalidations
기존 : 10 분 - 15 분
현재 : Edge 의 90% 5 초 , 10% 는 최대 1 분내
본 강연이 끝난 후…
blog.wisen.co.kr www.studyforcloud.com을 통해 Lambda@edge Source code 를 다운로드 받으실수 있습니다 .
16:20 – 17:00 Track3_ 그랜드볼룸 103AWS 엣지 서비스를 통한 글로벌 서비스 관리 전략
함께 해주셔서 감사합니다 [email protected]
https://www.awssummit.kr AWS Summit 모바일 앱을 통해 지금 세션 평가에 참여하시면 , 행사 후 기념품을 드립니다 .
#AWSSummitKR 해시태그로 소셜 미디어에 여러분의 행사 소감을 올려주세요 .
발표 자료 및 녹화 동영상은 AWS Korea 공식 소셜 채널로 곧 공유될 예정입니다 .
여러분의 피드백을 기다립니다 !