이두잉의 AWS 세상

AWS CloudFront 동적 컨텐츠 캐싱 및 주요 기능

2016.01.18 18:29 - leedoing leedoing

안녕하세요. 이두잉입니다.

금일은 AWS CDN 서비스인 CloudFront의 동적 컨텐츠 및 주요 기능에 대해서 설명하도록 하겠습니다.

CloudFront 구축 실습은 다음 기회에 하도록 하구요. 지금 블로깅에서는 주요 기능과 Best Practice 정보 소개하겠습니다.

해당 내용은 AWS SA분의 'CloudFront로 동적 컨텐츠를 전송하는 네 가지 이유' Korea Region 발표 내용을 참고 했습니다.

(https://aws.amazon.com/ko/events/aws-cloud-ondemand/?sc_ichannel=em&sc_icountry=apac&sc_icampaigntype=event&sc_icampaign=em_9276&mkt_tok=3RkMMJWWfF9wsRovuavPZKXonjHpfsX66%2B0oWKSxlMI%2F0ER3fOvrPUfGjI4DScVlI%2BSLDwEYGJlv6SgFS7HHMbR617gKXRc%3D)


현재 CDN을 사용하는 분이라면 보통 정적 컨텐츠를 분리해서 CDN을 사용하고 있습니다.

Index 페이지는 App Server에서 구동되고, 그 안에 컨텐츠는 CDN Server를 통해 End-Point를 구분지어 컨텐츠를 딜러버리합니다.

최근 CDN 플랫폼의 경우 Get 요청뿐만 아니라 Post, Put, Option 등 동적 컨텐츠를 위한 HTTP Method를 원본에 바이패스 시키고 Keep Alive, QueryString, Cookie를 이용해서 동적 컨텐츠 캐싱이 가능합니다. 다만 CDN과 Origin 구간에서 성능 보장의 문제가 발생됩니다. 사실 성능 보다는 책임소재로 인해 분리를 많이 합니다.

CloudFront의 경우도 앞 서 설명한 내용과 대동소이 하나, Origin이 AWS의 경우 CF와 Origin 구간의 성능이 보장되어 좀 더 나은 성능을 발휘합니다. 

(참고 - http://www.slideshare.net/awskorea/cloudfront-aws-cloud-track-3-gaming)

위와 같이 CloudFront를 End-Point로 설정 했을 시에 장점은 L3/L4 Layer(flooding 등) 공격을 CloudFront에서 먼저 막아줍니다. SA분 말로는 DDOS의 80%가 L3/L4 Layer, 20%가 L7 Layer라고 합니다. 또한 두 번째 사용자에 대한 세션 연결 3 hand-shake는 생략되어 조금 더 우월한 성능을 나타낸다고 합니다. 그리고 CloudFront와 WAF를 연동하여 L7(HTTP, DB 쿼리 인잭션 등) 공격에 대한 방어가 가능합니다. 즉 IPS/IDS, Firewall, UTM 등 장비 없이 WAF, CloudFront를 통해 가능하다는 말이 됩니다. 물론 기존 Appliance보다는 기능이 부족하겠죠. 로깅도 되지 않습니다.


Cloufront의 설정은 다음과 같이 진행하시면 됩니다. Origins/Behaviors 설정을 매핑합니다. 쓱 가능합니다.


Behaviors 동적컨텐츠(*.php, *.jsp 등) 설정은 아래와 같이 PUT, POST, PATCH, DELETE 항목을 모두 체크하고, Forward Headers에서 필요한 Headers를 넣어주시면 됩니다. 또한 Query String도 Yes로 바꿔주세요.


이상 AWS CloudFront 동적컨텐츠 캐싱에 대해서 알아봤습니다. 특별한 이유가 없는 일반적인 웹 서비스라면 Cloudfront를 APP Server 앞단에 배치해서 보안 및 성능, 비용에 대한 절감을 하시기 바랍니다. 또한 Cloudfront Traffic의 경우 사용량에 따라 비용을 절감되니 적극 활용하시기를 바랍니다. 시간이 되시는 분은 발표 내용을 한 번 보시면 좋을 듯 합니다!

감사합니다.