Code States/TIL

[0418] AWS - 서비스 노출

ki1111m2 2023. 4. 18. 17:18

학습 목표

  • 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를 이용해 루트 도메인으로 콘텐츠를 전송할 수 있음
  • 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 라우팅을 이용
      • 요청 발신지를 기준으로 가장 가까운 엔드포인트로 트래픽을 라우팅하며, 지역에 특화된 콘텐츠 서비스를 제공하거나 특정 지역에서 금지 규정이 있는 콘텐츠는 배포되지 않도록 할 수 있음