학습 목표
- Cloud와 Deployment의 의미를 각각 알고, 서비스를 다른사람에게 배포할 수 있다.
- 클라우드 컴퓨팅이 무엇인지 설명할 수 있다.
- 애플리케이션 배포가 어떻게 변화되어 왔는지 이해할 수 있다.
- AWS의 각 서비스가 어떤 목적에 부합하는지 이해할 수 있다.
- S3의 목적과, 정적 웹 사이트 배포 방법을 이해할 수 있다.
- EC2의 주요 용어를 이해할 수 있다. (AMI, 인스턴스, 인스턴스 유형, 스토리지 타입, 퍼블릭/프라이빗 IP)
- EC2의 인스턴스 시작/중지/종료에 대해 이해할 수 있다.
- RDS와 EC2에서의 MySQL 사용이 어떻게 다른지 이해할 수 있다.
- CloudFront의 목적을 이해할 수 있다.
- Auto Scaling의 특징 및 역할을 알 수 있다.
- 로드 밸런서 중 ELB, 그 중에서 Application Load Balancer의 목적을 이해할 수 있다.
- AWS 인프라 중 VPC에 대해서 이해할 수 있다.
- Route 53의 목적을 이해하고, 도메인을 연결해 HTTPS로 배포할 수 있다.
- 빌드 및 배포시 필요한 환경 설정을 할 수 있다.
- 배포 시 발생하는 문제를 이해하고 고칠 수 있다.
Cloud Front
- 전 세계 티어 1,2,3 의 이동통신사와 협력하여 네트워크에 연결된 글로벌 CDN(Content Delivery Network) 서비스
- 저지연성과 고속전송 속성을 지닌 콘텐츠 배포 기능을 제공
- 콘텐츠 사용자와 가까운 지역(엣지 로케이션)에 네트워크망을 구축
- 지역별 엣지 캐시를 통해 사용자 경험 수준을 높일 수 있게 함
- 정적 콘텐츠 뿐만 아니라 동적 콘텐츠도 지원하며, 사용자 요청은 가장 가까운 엣지 로케이션에서 처리됨
- 핵심 개념
- 엣지 로케이션
- CloudFront는 엣지 로케이션이라 부르는 글로벌 데이터센터 네트워크를 통해 콘텐츠를 배포함
- 엣지 로케이션은 전 세계 주요 대도시에 위치하며, AWS 리전 시설의 위치와는 다를 수 있음
- 지역별 엣지 캐시
- 지역별 엣지 캐시는 오리진 웹 서버와 엣지 로케이션 사이에 위치해 사용자에게 직접 콘텐츠를 전송함
- 특정 콘텐츠의 인기가 줄어들수록 개별 엣지 로케이션에서는 해당 객체를 삭제해 인기가 많은 콘텐츠를 제공할 수 있는 여유 공간을 확보하고, 지역별 엣지 캐시는 엣지 로케이션보다 높은 수준의 캐싱 능력을 바탕으로 좀 더 오랜 시간 캐싱 데이터를 유지할 수 있음
- 캐싱 데이터가 존재하면 사용자의 콘텐츠 요청 시, CloudFront는 오리진 웹 서버에 돌아갈 필요 없이 지역별 엣지 캐시로 사용자 요청에 대응하기 떄문에 콘텐츠 제공 성능이 높아짐
- 지역별 엣지 캐시는 CloudFront의 기본 기능이므로 사용자는 별도의 설정 작업을 하거나 비용을 부담할 필요가 없음
- 엣지 로케이션
- 활용 시나리오
- 정적 콘텐츠 캐싱
- CloudFront의 가장 대표적인 활용방식
- 사진, 영상, 자바스크립트, 스타일시트 등의 정적 콘텐츠 전송 속도를 높여주고 사용자는 엣지 로케이션을 통해 요청한 콘텐츠를 제공 받음
- 동적 콘텐츠
- 네트워크 최적화를 통한 동적 콘텐츠 가속화 기능을 제공하며, EC2 서버에서 실행 중인 애플리케이션 또는 웹사이트를 CloudFront와 통합할 수 있음
- DDoS 공격 대응
- CloudFront는 OSI 모델의 L3, L4, L7을 보호할 수 있는 AWS Shield, WAF를 통합해 DDoS 공격을 방어할 수 있음
- TLS 연결 및 서명 URL을 통한 사용자 인증 등의 기능을 제공
- 강화된 보안성
- CloudFront는 SSL(HTTPS)방식의 보안 기능을 제공하며, 보안이 강화된 API, SSL/TSL 적용, advanced SSL 기능을 자동으로 적용할 수 있음
- 모든 인프라와 프로세스는 중요 콘텐츠의 보안 수준을 유지하기 위해 PCI, DDS, HIPAA, ISO 규정을 준수
- 정적 콘텐츠 캐싱
- 적용 방식
- 경로 패턴 매칭
- 사용자는 웹사이트 또는 애플리케이션의 URL 경로 패턴에 따라 다양한 캐시 제어 동작을 설정할 수 있음
- CloudFront가 이미지 뷰어로부터 요청을 받으면 요청 경로는 images/*.jpg 와 같은 경로 패턴과 비교해 그에 맞는 제어 동작을 적용
- 사용자는 경로 패턴에 따라 HTTP/HTTPS 프로토콜 설정, 헤어 또는 캐싱 옵션 설정, 쿠키 및 쿼리 문자열 포워딩 설정, 접근 제한등의 방식으로 특정 오리진으로 요청을 전송할 수 있음
- 헤더
- 헤더 값을 통해 요청 헤더를 오리진 캐시로 포워딩 할 수 있으므로, 디바이스의 헤더를 확인한 뒤 그에 맞는 동작을 적용할 수 있음
- 동일한 사이트를 접속한 노트북 사용자와 스마트폰 사용자의 요청에 각기 다른 반응을 제공할 수 있음
- 쿼리(query) 문자열 및 쿠키
- 웹 애플리케이션 중 일부는 오리진으로 정보를 전달하기 위해 쿼리 문자열을 사용
- 쿼리 문자열은 웹 요청의 일부로, ? 기호 다음에 나오며, 하나 이상의 파라미터를 & 기호로 연결해 사용
- 서명 URL
- 정적 콘텐츠를 S3 버킷에 옮긴 뒤에는 CloudFront의 서명 URL 방식을 통해 해당 콘텐츠에 대한 비인가 접근을 막을 수 있음
- 서명 URL에는 만료일 및 만료 시간 등의 부가 정보가 포함돼 있어 콘텐츠에 대한 접근을 조금 더 세심하게 제어 할 수 있음
- 서명 URL을 이용해 웹 서버가 S3 버킷의 콘텐츠에 접근할 수 있는 시간 또는 방식을 제어 할 수 있으며, 사용자가 특정 콘텐츠에 대한 접근을 요청할 경우 접속 시간 제약이 설정된 서명 URL 링크를 전달 받게 됨
- 서명 쿠키
- 기능상으로는 서명 URL과 거의 동일하며 단지 HTTP 쿠키에 추가 정보를 넣는다는 점이 다름
- 다수 객체에 대한 접근 제어, URL 변경 없이 동일 객체에 대한 접근 제어를 해야할 때 유용함
- 작동 방식
- 사용자가 웹사이트에서 인증을 받으면 Set-Cookie 헤더가 사용자 계정에 전달되며 이는 사용자 디바이스의 쿠키에 적용됨
- 사용자가 제한 객체에 대한 접근을 요청하면 브라우저는 요청에 포함된 쿠키를 포워딩함
- CloudFront가 쿠키 속성을 확인해 접근 허용 또는 차단 여부를 결정하게
- 경로 패턴 매칭
- 지역 제한 기능
- 사용자가 콘텐츠에 대한 요청을 하면 CloudFront는 사용자의 위치에 상관 없이 콘텐츠를 전송함
- 특정 국가의 콘텐츠 요청을 거부하려면 다음과 같은 지역 제한 기능을 사용하면 됨
- 접속 허용 국가 목록인 화이트리스트를 기반으로 요청 콘텐츠에 대한 접근을 허용하는 방법
- 접속 금지 국가 목록인 블랙리스트를 기반으로 요청 콘텐츠에 대한 접근을 거절하는 방법
- 오류 처리 기능
- 콘텐츠 요청에 대해 오리진 서버가 HTTP 4xx, 5xx 상태 코드를 반환하면 사용자에게 커스텀 오류 페이지를 제공할 수 있음
- 최소 유지시간(TTL)을 정의해 CloudFront 캐시 오류를 얼마나 오래 유지 할지 조절할 수 있음
- ex) 커스텀 오리진 서버가 사용 불능 상태고, 5xx 응답을 반환하면, CloudFront는 S3에 호스팅된 정적 페이지를 제공할 수 있음
Route 53
- 관리형 DNS(Domain Name Service) 서비스
- 사용자의 요청을 EC2 인스턴스, ELB 로드밸런서, S3 버킷 등 AWS 내의 인프라에 연결시켜주며, AWS 외부의 인프라에도 연결 시킬 수 있음
- 리전과 독립적으로 작동하기 때문에 다수의 리전을 교차해 연결할 수 있고, 다수의 리전과 VPC간의 DNS 주소변환도 가능함
- 퍼블릭 DNS 기록 관리 기능 외에도 도메인 등록, 신규 도메인을 위한 DNS 생성, 기존의 도메인에 DNS 기록 전송 등 다양한 기능을 제공
- 주요 DNS 기록 타입
- A(주소기록)
- AAAA(IPv6 주소기록)
- CNAME(캐노니컬 네임 기록)
- CAA(인증 권한 증명)
- MX(메일 교환 기록)
- NAPTR(네임 권한 포인터 기록)
- NS(네임 서버 기록)
- PTR(포인터 기록)
- SOA(권한 시작 기록)
- 알리아스(Alias Records, 또는 존 에이펙스 Zone Apex) 지원
- 존 에이펙스는 웹사이트의 루트 도메인을 의미하며, CloudFront를 이용해 루트 도메인으로 콘텐츠를 전송할 수 있음
- http://www.example.com 주소와 http://example.com 주소 모두 동일한 페이지로 연결되도록 할 수 있음
- DNS 명세서에는 CNAME이 아닌 IP주소(A주소 기록)를 가리키는 존 에이펙스를 입력해야 하며, 이때 Route53의 알리아스 기록을 사용하면 됨
- 라우팅 정책
- 가중치 라운드 로빈(Weighted Round Robin)
- 하나의 웹사이트를 위한 여러 대의 웹서버 같은 경우처럼, 동일한 기능을 수행하는 여러 개의 리소스를 보유하고 있다면 Route53을 이용해서 리소스 별로 트래픽을 분산 시킬 수 있으며 그 중 한 방법
- 이제 막 소프트웨어 설정을 변경한 서버에 소량의 트래픽만(새 서버세 10%, 기존 서버에 90%를 분산)을 보내 성능 및 안전 여부를 확인 할 수 있음
- 지연 기반 라우팅(Latency-Based Routing)
- 동일한 기능을 수행하는 다수의 EC2 기반 데이터 센터에 리소스를 확보하고 있다면 특정 리소스에 대한 DNS 쿼리 요청 시, Route53을 이용해 신속하게 응답할 수 있는 방법
- 글로벌 사용자를 확보한 애플리케이션의 성능을 높일 수 있음
- 다수의 AWS 리전에서 실행되는 애플리케이션을 Route53 엣지 로케이션에 연결해 최저 지연 시간으로 글로벌 사용자에게 서비스를 제공할 수 있음
- 장애 대응 라우팅(Failover Routing)
- 능동적 혹은 수동적 페일오버 즉, 장애 대응을 통해 가용 리소스 쪽으로 트래픽을 라우팅 하고 싶다면 Route 53의 장애 대응 라우팅을 이용
- 특정 리전에서 모든 리소스를 제공하는 상황에서 해당 리전에 장애가 발생하면, 장애 대응 라우팅을 통해 정상적으로 작동중인 리전으로 트래픽을 라우팅 할 수 있음
- 지역DNS 라우팅(Geo DNS Louting)
- 사용자의 지역에 따라 DNS 쿼리에 응답하도록 하려면 지역 DNS 라우팅을 이용
- 요청 발신지를 기준으로 가장 가까운 엔드포인트로 트래픽을 라우팅하며, 지역에 특화된 콘텐츠 서비스를 제공하거나 특정 지역에서 금지 규정이 있는 콘텐츠는 배포되지 않도록 할 수 있음
- 가중치 라운드 로빈(Weighted Round Robin)
'Code States > TIL' 카테고리의 다른 글
[0418] (페어) AWS - 도메인 연결과 CDN 및 HTTPS 적용 (0) | 2023.04.18 |
---|---|
[0418] AWS - 보안 (0) | 2023.04.18 |
[0418] AWS - 수평 확장 (0) | 2023.04.18 |
[0417] (페어) AWS - 3 Tier 아키텍처 배포 (1) | 2023.04.17 |
[0414] AWS - 스토리지 (0) | 2023.04.14 |