AWS의 CDN 서비스
CloudFront
CDN이란 Content Delivery Network의 약자로
컨텐츠( 이미지, 동영상, 각종 파일)등을 유저가 가장 가까운 서버에서 받을 수 있게 해주는 서비스이다.
AWS에서는 Cloud Front라는 이름으로 서비스를 제공한다.
AWS는 전세계적으로 많은 리전을 갖고 있기 때문에 어느 지역에서도 내가 배포한 파일을 빠르게 받을 수 있는 장점이 있다.
이러한 캐시 서버를 구축해서 사용자의 환경을 개선한다.
S3의 저장소는 내가 미국에 저장하더라도
서울 리전의 CDN을 통해 다운받을 수 있다는 말과 같다.
하지만 바로 이것이 제공되는 것은 아니다.
컨텐츠가 캐시서버에 있다면 다행이다.
콘텐츠가 이미 지연 시간이 가장 낮은 엣지 로케이션에 있는 경우 CloudFront가 콘텐츠를 즉시 제공한다.
만약 캐시 서버에 컨텐츠가 없다면..?
콘텐츠가 엣지 로케이션에 없는 경우 CloudFront는 콘텐츠의 최종 버전에 대한 소스로 지정된 오리진(Amazon S3 버킷, MediaPackage 채널, HTTP 서버(예: 웹 서버) 등)에서 콘텐츠를 검색한다.
CloudFront는 AWS 백본 네트워크를 통해 콘텐츠를 가장 효과적으로 서비스할 수 있는 엣지로 각 사용자 요청을 라우팅하여 콘텐츠 배포 속도를 높인다.
일반적으로 CloudFront 엣지가 최종 사용자에게 가장 빨리 제공한다.
**혹시 유튜브도 은근히 빠르지 않나? 유튜브도 캐시 서버가 존재해서 그렇다.
docs에서 필요한 부분만 추려보자.
Cloud Front를 설정하는 법은 간단하다.
먼저 아래 공식 DOC은 이렇다.
- Amazon S3 버킷 또는 고유 HTTP 서버와 같은 오리진 서버를 지정하고, CloudFront는 이로부터 파일을 가져온 다음 전 세계 CloudFront 엣지 로케이션에 배포합니다.
- 오리진 서버는 객체의 최종 원본 버전을 저장합니다. HTTP를 통해 콘텐츠를 서비스하는 경우 오리진 서버가 Amazon S3 버킷 또는 웹 서버 같은 HTTP 서버입니다. HTTP 서버는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스나 사용자가 관리하는 서버에서 실행할 수 있습니다. 이 서버를 사용자 지정 오리진이라고도 합니다.
- 오리진 서버에 파일을 업로드합니다. 객체라고도 하는 파일은 일반적으로 웹 페이지, 이미지 및 미디어 파일을 포함하지만 HTTP를 통해 제공될 수 있는 모든 항목이 될 수 있습니다.
- Amazon S3 버킷을 오리진 서버로 사용할 경우 버킷에 있는 객체를 공개적으로 읽을 수 있는 상태로 만들 수 있으므로 객체의 CloudFront URL을 아는 사람이라면 누구나 액세스할 수 있습니다. 객체를 비공개로 유지하고 액세스할 수 있는 사용자를 제어할 수 있는 옵션도 있습니다. 서명된 URL과 서명된 쿠키를 사용하여 프라이빗 콘텐츠 제공을(를) 참조하세요.
- 사용자가 웹 사이트나 애플리케이션을 통해 파일을 요청할 경우 &CF;에 어떤 오리진 서버에서 파일을 가져올지 알려 주는 CloudFront 배포를 만듭니다. 동시에 CloudFront에서 모든 요청을 기록할지, 배포를 만들자마자 활성화할지 여부와 같은 세부 사항을 지정합니다.
- CloudFront는 새 배포에 도메인 이름을 할당하고, 이는 CloudFront 콘솔에서 볼 수 있습니다. 또는 API 요청 등과 같은 프로그램 요청에 대한 응답으로 반환됩니다. 원하는 경우 대신 사용할 대체 도메인 이름을 추가할 수 있습니다.
- CloudFront에서는 배포의 구성(사용자의 콘텐츠가 아님)을 모든 해당 엣지 로케이션 또는 CloudFront가 파일의 사본을 캐싱하는 지리적으로 분산된 데이터 센터의 POP(Point of Presence) 서버 모음으로 보냅니다.
내가 요약해보겠다.
1. Origin Server 지정, 파일 업로드 (최종 원본 버전을 뜻함)
2.Origin Server에 있는 컨텐츠를 전세계 엣지 로케이션에 배포
3. CloudFront URL을 이용해서 CDN에 접근
4. 사용자는 웹서비스나 애플리케이션을 통해 파일을 요청한다. 이 때 어떤 Origin Server에서 어떤 파일을 가져와야 할 지 모르므로 CloudFront 배포를 한다.
5. 배포를 할 때 도메인 이름을 할당하고 API 요청과 같은 요청에 대한 응답을 할 수 있게 된다.
6.CloudFront 배포 구성에서 설정된 지리적으로 분산된 데이터 센터에 파일 사본을 캐싱한다.
** 웹 사이트 또는 애플리케이션을 개발할 경우 CloudFront가 URL을 제공한다.
예를 들어, CloudFront가 d111111abcdef8.cloudfront.net을 배포의 도메인 이름으로 반환할 경우 Amazon S3 버킷(또는 HTTP 서버의 루트 디렉터리)에 있는 logo.jpg의 URL이 https://d111111abcdef8.cloudfront.net/logo.jpg가 됩니다.
또는 CloudFront를 설정하여 고유한 도메인 이름을 배포와 사용할 수도 있습니다. 이 경우 URL이 https://www.example.com/logo.jpg가 될 수 있습니다.
공식 문서는 위와 같고 쉽게 말하자면
=> 저 URL이 곧 파일을 가리킨다고 보면 된다.
EC2는
Elastic Compute Cloud로 C가 2개 들어가서 C2이다.
EC2는 인터넷에 연결된 가상서버를 제공한다.
EC2 인스턴스는 서버와 똑같다고 보면 된다.
Linux나 Windows가 설치가능하지만 거의 Linux 운영체제를 쓴다.
CLI환경을 통해 제어가능하다.
EC2는 바로 생성해서 제어가 가능하다.
여러가지 기능이 있는데
시작(Start): EC2 인스턴스를 사용할 수 있다. 시작하자마자 과금도 같이 시작된다.
정지(Stop): EC2 인스턴스를 정지하는 것이며 당연히 운영체제를 종료하여 시스템이 정지한 상태이며 과금되지 않는다.
삭제(Terminate): EC2 인스턴스를 삭제한다. 정지와 삭제는 엄연히 다른 것이다. 삭제에도 시간이 걸리며 완전히 삭제될 때까지 목록에 남는다.
재부팅(Reboot): EC2 인스턴스를 재부팅하는 것이다. 일반적인 컴퓨터를 껐다 키는 것과 같다.
Root 장치: 운영체제가 설치되는 스토리지다. Root 장치로 EBS와 인스턴스 스토리지를 사용 가능하다.
Kernel ID: EC2 인스턴스가 사용하는 Linux 커널을 가리킨다. AWS에서 제공하는 다양한 Linux 커널을 선택하면 된다.
리눅스 자손들이 많다.
그리고 EC2 인스턴스는 정말 많은 종류가 있다.
이렇게 많이 나눠놓은 것은 필요한 사양이 다르기 때문이다.
이렇게 나눠놓았기 때문에 사용자가 비용에 맞는 장비를 쓸 수 있다.
범용만해도 이렇게 많다.
알아서 잘 구별해보자
다음은 Storage다.
EBS다.
교육 방송이 아니라 Elastic Block Storage다.
???S3 냅두고 왜 다른 Storage를 쓰는거야??
S3는 일반적으로 진짜 저장용이다.
사용하는 것이 아니라는 말이다.
즉, EC2에서 직접 쓰기 위한 Storage는 조금 다르다.
그냥 일반적인 하드디스크 또는 SSD처럼 인식된다.
원하는 크기로 만들 수 있고 성능(IOPS)또한, 원하는 수치로 설정할 수 있다.
또한, 사용자가 삭제하기 전까지는 데이터가 안전하게 유지한다.
EBS는 몇가지 타입이 있다.
볼륨(Volume): EBS의 가장 기본적인 형태로 OS에서 바로 사용 가능하다.
EC2에 볼륨을 연결한 후에는 해당 볼륨 위에 파일 시스템을 생성하거나, 데이터베이스를 실행하거나, 블록 스토리지를 사용하는 것과 같은 방식으로 사용할 수 있다.
스냅샷(Snapshot): EBS 볼륨의 특정 시점을 그대로 복사하여 저장한 파일이다.
Amazon EBS는 볼륨의 특정 시점 스냅샷을 Amazon S3에 저장할 수 있는 기능을 제공한다.
IOPS(Input/Output Operation Per Second): 저장 장치의 성능 측정 단위를 말한다.
AWS에서는 추가 비용을 지불하고 높은 성능(IOPS)의 EBS를 생성 가능하다.
참고링크
https://aws.amazon.com/ko/ebs/?nc2=type_a
https://aws.amazon.com/ko/ec2/instance-types/
https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Introduction.html
'클라우드' 카테고리의 다른 글
코드형 인프라란 , Infrastructure as Code? IaC (0) | 2022.09.18 |
---|