드뎌 AWS 클라두으 탐구생활 7일차
앞서 이고잉님이 CloudFront로 서비스할 서버를
1. 이미 aws의 서버 서비스를 사용하고 있음 이들 중에서 선택할 수 도 있고
2. 자신이 직접 관리하고 있는 서버(이고잉님은 아파치서버 사용)
이 둘 중 선택할 수 있다고 했는데 CloudFront를 사용한다는 것은 cache서버와 cdn기능을 추가적으로 사용한다는 것..!
Web Server(위 둘 중 고르기,Origin) - CloudFront(Distribution) - Clients
웹 서버가 가지고 있는 문제를 캐시서버와 cdn기능으로 해결하기 위해 CloudFront를 사용하는 것이다..!
1.Cloud Front 4- 캐쉬설정1
이전시간에 origin의 내용이 바뀌었음에도 distribution의 내용이 바뀌지 않는 문제를 마주했었다.
이걸 해결하고 성능을 적당히 발휘하는 방법,,그
cloud front의 콘솔에서 distribution으로 들어가면>관리자화면으로 들어가진다
behaviors탭에는 path pattern은 cloud front로 들어오는 모든 경로의 동작방법을 지정한다.
이를 선택하고edit을 클릭하면 나오는 Edit Behavior
우릐의 관심사는 이중 object cacheing(웹페이지의 캐싱 지정방법)
2가지 옵션이 있다:
Use origin cache headers
Customize
💥잠깐💦
Web Server에서 Cloud Front로 응답할 때 헤더에 다음과 같은 정보를 같이 전달할 수 있다.
'이 정보가 60초 동안은 유효하니깐 Cloud Front가 WebServer에게 60초 동안은 묻지마'
Cloud Front는 나름대로 60초 동안은 Web Server에게 묻지 않도록 시간을 세고 또 Web Browser에게 이를 전달한다.
그러면 또 Web Browser는 나름대로 60초동안 Cloud Front에게 요청하지 않는다.
그동안 CloudFront에 요청 들어오는 다른 Web Browser들에게도 초기의 정보와 60초를 세도록 전해준다.
아래는 그 실습...
2.ClouFront 5-캐쉬설정 2
직접 캐시를 설정해보자 -CloudFront없이, Origin인 아파치 서버에서.
0️⃣먼저 아무런 캐시 설정을 하지 않았을 때
왼쪽의 아파치 웹서버는 접속이 들어올 때마다 acces log라는 텍스트 파일에 접속자 정보를 저장해둔다.
log파일을 실시간으로 출력하고 싶으면 아래와 같은 명령어로 볼 수 있다.
$tail -f var/log/appache2/access log
오른쪽의 cloudfront에 재접속(reload)할때마다 log가 기록된다.
그런데 최초 재접속시에만 log뜨고 당분간은 cloudfront가 가져온 정보를 보여주므로 Webserver(Origin)는 놀고있기에 log가 기록되지 않는다! 왜냐면 CloudFront가 기본적으로 24시간 캐시를 제공하므로
캐시가 유지되는 동안에는 Origin서버에는 CloudFront가 새로운 정보를 요청하지 않는다.
1️⃣ CloudFront를 유지하지 않고 직접 Origin서버에 캐시를 10초동안 유지하도록 설정해보자.
php로..헤더파일에 다음과 같이 작성하면 된다.
그런데 직접 새로고침해선 안되고 링크로만 유지 가능하다..!
2️⃣Cloudfront로도 캐시 설정해보기
Cloudfront는 기본적으로 캐시를 24시간 설정으로 되어있기에 먼저 이전의 캐시를 지워야한다.
3.ClouFront 6-캐쉬설정 3(무효화)
⏸Origin은 바뀌었으나 Distribution이 바뀌지 않았을 경우의 옵션 중 하나인 강제로 캐시를 삭제하기
(invalidation)
무효화 탭에서
마우스 있는 곳 누르면 도움말 있다.(무효화할 파일 설정하는 방법)
create invalidation누르고 무효화 할 파일을 지정하면된다.
그럼 새로고침했을때 origin이 distribution에 반영되어있다.
그런데 이는 사실!유료!!
따라서 무효화보단 다른 전략을 사용하는게 이득이다...
4.CloudFront 7-캐시설정4
2️⃣CloudFront로 캐시를 설정하는 방법을 마저 알아보자.
캐시컨트롤이라는 헤더값 조정으로 cloudfront의 캐시의 생명을 조절 할 수있다.
cloudfront는 origin이 전달받은 것을 distribution에도 전달한다.
헤더값을 직접쓰지 않고도 1에서 처럼 Edit Behavior> Object Cacheing옵션에서> Customize, 아래 값 설정하기
Minimum TTL:5캐시가 얼마나 살아있을지 최소
Maximum TTL:15최대
Default TTL:10
Default TTL은 오리진에서 캐싱타임을 지정하지 않았다면 10초 Origin에서 지정했을경우:
WebServer- CloudFront로는 둘의 타협값을 한다.
CloudFront-WebBrowser로는 무조건 Origin에서 지정한 값이 캐시 시간으로한다.
WebServer(Origin) - CloudFront로는 CloudFront에서 지정한 값 반영한다..?
*Query String Forward and Caching옵션도 있는데
none이면 새로운 요청이 들어왔을 때 쿼리스트링이 있어도 무시되고 원래 페이지 보여주고
forward all,..이면 쿼리스트링 들어올 때마다 새로정보 가져다주고 캐시도 새로 만들어진다.
저장을 잊지 말자!
5.CloudFront 8-CDN
전세계 어디에서 접속하든간에 비슷하게 빠르게 서비스하기 위해 필요한 서비스
Content Delivery Network!
CloudFront는 이를 기본적으로 제공하기에 따로 키지 않아도 적용된다.
누르면 들어가는 Edit Distribution창..
Price Class(요금계층)의 옵션 중
서비스할 지역을 고룰 수 있다.
서비스하는 지역마다 요금이 다르기때문에 선택한데 우선,,
⏸Edge Location마다 요금이 다른데
2번과 3번에 대해 과금이 생긴다.이것이 지역마다 다른다 Amazon CloudFront>요금 에서 확인가능하다.
기본적으로 영미권이 저렴하고 아시아가 상대적으로 더 비싸므로 어느곳들에 Distribution을 둘지, 서비스할지 선택할 수 있는 것이다.
*Edge Locaiton 하나 하나가 Cloud Front의 Distribution하나라고 생각하면 된다.
6.CloudFront 9-요금
CloudFront는 기본적으로 켜도 요금이 나가지 않고 사용될때마다 요금이 나간다.
Origin Server가 있고 Edge Location(CloudFront)이 있고 Edge Location에 접속하는 클라이언트 웹브라우저가 있다.
온디맨드 요금은
리전데이터를 인터넷으로 전송 :EdgeLocation에서 각각의 클라이언트에게 데이터 보내는(2)
리전데이터를 오리진으로 전송:EdgeLocation이 Origin Server로 업로드(3)
모든 HTTP 메서드에 대한 요청 요금:각각의클라이언트들이 EdgeLocation에게 하는 요청의 수에 대한 요금(2의 역)
무효화 요청
요금계층 :주로 트래픽이 어디서 발생하는지에 따라 다르지
등등..
*프리티어 50GB까지 12개월동안은 무료
*aws cost calculator를 검색하면 계산해주는 사이트 있당
7.수업을 마치며
CloudFront를 살펴보았다. 끄는 방법과 다른 기능들은 뭐가 있는지 어떻게 응용할 수 있을까
CloudFront를 끄는 방법
CloudFront Distribution에서 Disable을 누름 된다.>Disabled되면 선택후 Delete된다.
AWS에서 제공하는 DNS서비스인 Route53이 있다.
사용자의 개인화된 정보(로그인 등)사용한다면 HTTPS,SSL,TLS서비스를 살펴볼것
CloudFront는 기본적으로 HTTPS를 제공한다.
(아니면 AWS certificate manager를 이용하면 https를 적용할 수 있는 인증서를 발급해준다.)
CloudFront는 Cookie,Header,GeoIP를 저장하는 기능 제공->사용자마다 개인화된 정보 제공하며 성능은 좋다.
통계기능도 제공한다.
https://www.youtube.com/playlist?list=PLORxAVAC5fUU_gsWiwA9KprDxIxR_M7eg
생활 코딩과 함께하는 AWS 클라우드 탐구생활 - 7일차 - YouTube
www.youtube.com
어렵다고 생각했던 AWS사용법도 조금은 익숙해진 느낌이다..(그냥 느낌>.6)
목표했던 게임서버를 만들기위해 AWS를 사용해야겠다.
직접 Origin서버를 유지하긴 힘들것같고 S3나 ElasticBeanstalk등을 알아봐야지..
프리티어나,,크레딧 사용하는 방법으로..ㅎ CloudFront는 좋은 기능을 제공하지만 많은 접속자가 있지 않을것으로
굳이 필요할것 같지는 않다..!
고마워이고이이이이이!
'[AWS]' 카테고리의 다른 글
공부하기 좋은 사이트들 (0) | 2020.12.12 |
---|---|
2020 AWSome Day 온라인 컨퍼런스 참여 후기 (2) | 2020.11.04 |
AWS 공부 6일차 - 서버클라이언트, S3 WEB Hosting, CloudFront사용하기 (0) | 2020.07.01 |
AWS 공부 5일차 - 웹의 기초 (0) | 2020.06.30 |
AWS 공부 4일차 - S3 스토리지 클래스,요금체계,부가 기능 (0) | 2020.06.29 |