왜 글로벌 애플리케이션을 만들까?
글로벌 애플리케이션은 여러 지역에 배포되는 애플리케이션이며, 이는 AWS에선 다양한 AWS 리전과 엣지 로케이션으로 애플리케이션이 배포된다는 의미이다. 이를 통해 전 세계 사용자의 지연 시간이 줄어들게 된다.
지연 시간은 네트워크 패킷이 서버에 도달하는 시간이다.
두 번째 이유는 재해 복구 때문이다. 하나의 데이터 센터나 한 리전에 의존하지 않는 것으로 자연 재해 등으로 인해 전체 리전이 정지되면 재해 복구 계획으로 다른 리전으로 장애 조치를 해서 애플리케이션이 계속 실행되도록 하는 것이다. 그래서 재해 복구 계획은 애플리케이션의 가용성을 높이는데 매우 중요하다.
마지막 이유는 공격에 대비하기 위함이다. 해커들은 온라인에서 여러 이유로 애플리케이션을 중단시키기 위해 공격하지만 이때 애플리케이션이 여러 리전에 있고 전 세계적으로 배포했다면 여러 리전을 한 번에 공격하기 어려워지기 때문이다.
Route 53은 관리 DNS이다. 이때 DNS는 Domain Name System의 약자로 전화번호부와 같다. 규칙과 레코드의 모음집으로 클라이언트가 URL을 통해 올바른 서버를 찾아갈 수 있게 도와준다.
상태 확인을 하지 않는 정책이다. 웹 브라우저는 DNS 시스템에 가서 DNS 검색을 하고 IPv4를 결과로 얻는다.
이것이 단순 라우팅 정책이며 기본적인 정책이다.
트래픽을 여러 기관의 인스턴스에 분산한다. 인스턴스에 정의한 가중치에 따라 트래픽을 분산하는 것이고 로드 밸런싱을 할 때 효율적이다. 또한 가중치 라우팅 정책에서는 상태 확인을 한다.
예를 들어 인스턴스 A, B, C가 있고, 각 가중치가 70%, 20%, 10% 라면 트래픽의 70%는 A로 가고, 트래픽의 20%는 B로 가고, 나머지 10%가 C로 가도록 하는 것이다.
지연 시간 라우팅 정책은 사용자의 위치를 살펴보고 지연 시간이 가장 짧은 인스턴스와 통신하도록 리디렉션 하는 것이다.
즉, 지연 시간에 근거하여 가까운 서버에 리디렉션되는 것이다.
DNS 시스템은 기본 인스턴스에 장애가 발생하면 장애 회복을 위해 장애 조치 인스턴스로 리디렉션한다. Route 53 덕분에 클라이언트는 인스턴스의 상태에 따라 어떤 인스턴스에 연결될 지 정확히 알고 있다.
첫 번째 정책을 제외한 나머지 정책은 모두 상태 확인을 한다. 이때 각자 다른 목적이 있다.
- 가중치 라우팅 정책: 트래픽을 여러 기관 인스턴스에 분산
- 지연 시간 라우팅 정책: 지연 시간 최소화
- 장애 조치 라우팅 정책: 장애 회복에 도움
CloudFront는 Content Delivery Network, 즉 CDN이다. 여러 엣지 로케이션에서 웹사이트의 콘텐츠를 캐싱해서 읽기 성능을 향상시킨다. 전 세계에서 콘텐츠를 캐싱하기 때문에 전 세계 사용자들의 대기 시간이 단축되어서 사용자 경험을 개선해준다.
예를 들어, 호주에 S3 버킷을 생성하고 거기에 웹사이트를 만들었는데 사용자가 미국에 있을 경우 사용자는 CloudFront를 사용해서 미국에 있는 엣지 로케이션에서 콘텐츠를 요청하고 CloudFront가 호주에서 콘텐츠를 가져올 수 있다. 이후 미국에 있는 또 다른 사용자가 동일한 콘텐츠를 요청할 경우 엣지에서 바로 제공될 것이다.
CloudFront는 전 세계 216개 접속 지점을 두고 있는데 이것은 세계 곳곳에 위치해 있는 AWS 엣지 로케이션에 해당한다. 또한 계속 로케이션을 추가해서 모든 곳에서 사용자 경험을 개선하고 있다. 무엇보다 콘텐츠를 전 세계에 배포함으로써 디도스 공격을 방어한다.
요점은 애플리케이션을 전 세계에서 사용하기 때문에 CloudFront를 이용하면 이런 공격을 막아준다는 것이다. 또 보안 섹션에서 배우게 될 Shield와 Web Application Firewall도 이용한다.
전 세계에 엣지 로케이션이 위치해 있고, 이 로케이션이 사용자의 오리진에 연결한다. 이때 오리진은 S3 버킷이거나 HTTP 서버일 수도 있다.
클라이언트가 사용자의 엣지 로케이션으로 연결해서 HTTP 요청을 하면 엣지 로케이션은 캐시에 있는지 확인한다. 캐시에 없다면 오리진으로 가서 결과를 받아오고 로컬 캐시에 캐싱해서 다른 클라이언트가 동일한 콘텐츠를 요청할 경우 해당 엣지 로케이션이 오리진으로 이동할 필요가 없다.
CloudFront와 엣지 로케이션을 이용하면 한 리전에 있는 S3 버킷의 콘텐츠를 접속 지점을 통해 전 세계에 배포 가능한지 확인할 수 있다.
CloudFront와 S3 복제의 차이점
- CloudFront는 글로벌 엣지 네트워크를 사용하는 것이다. 전 세계 어디서나 이용이 가능해야 하는 정적 콘텐츠가 있을 때 유용하다. 즉, 컨텐츠를 전 세계에서 캐싱하는 게 목적인 CDN이다.
- S3 리전 간 복제는 복제가 일어나길 원하는 리전마다 각각 설정해야 하기 때문에 전 세계 모든 리전에 적용되는 것이 아니고 캐싱이 일어나지 않으며 읽기 전용으로만 된다. 일부 리전에서 항상 바뀌면서 대기 시간이 짧아야 하는 동적 컨텐츠가 있을 때 적합하다. 즉, 전체 버킷을 다른 리전으로 복제하는 게 목적이다.
전 세계에 있는 파일을 특정 S3 버킷에 전송하고 싶을 때 S3 Transfer Acceleration을 이용하여 전송 속도를 올릴 수 있다.
예를 들어, 미국에 있는 파일을 호주 S3 버킷에 업로드할 때 파일을 엣지 로케이션에 업로드하여 미국 사용자에게 가깝게 하고 내부 네트워크의 안정적이고 빠른 연결을 통해 엣지 로케이션에서 호주의 S3 버킷으로 파일을 전송한다.
즉, 멀리 떨어진 S3 버킷에 파일을 업로드하거나 다운로드할 때 사용한다. 또한 테스트를 통해 얼마나 효과적인지 확인할 수도 있다.
특정 S3 버킷에 파일을 업로드해야 하는 글로벌 애플리케이션이라면 사용해 볼 만한 도구이다.
Global Accelerator는 AWS 글로벌 네트워크를 이용하여 글로벌 애플리케이션의 가용성과 성능을 개선할 때 사용한다. 사용자와 가장 가까운 위치의 사용 가능한 정상 엔드포인트로 트래픽을 자동으로 재라우팅하여 엔드포인트 장애를 완화하며, 2개의 글로벌 정적 고객용 IP를 제공한다.
트래픽이 도착하는 최종 엔드포인트는 AWS 특정 리전의 ELB(ALB 또는 NLB), 탄력적 IP, EC2 인스턴스이다.
온프레미스 인프라를 유지하면서 클라우드 인프라를 가져가는 사업을 하이브리드 클라우드라고 한다. 이때 IT 시스템을 처리하는 두 가지 방법이 있다. 하나는 AWS 클라우드, 다른 하나는 온프레키스 인프라를 위한 방법이다. 따라서 두 가지 다른 유형의 API가 있어 복잡할 수 있다.
그래서 AWS는 하이브리드 클라우드를 이용하는 회사를 위해 Outposts 서비스를 만들었다. Outposts는 클라우드와 마찬가지로 자체 온프레미스 애플리케이션을 구축할 수 있도록 동일한 AWS 인프라, 서비스, API 및 도구를 제공하는 서버 랙(server racks)이다.
즉, 사내 온프레미스 인프라 내에 있는 서버에 Outposts 랙을 설치하여 관리하는 것이다. 이 서버에는 AWS 서비스가 미리 로드되어 있고 온프레미스의 장점도 누릴 수 있다.
Wavelength는 모바일 엣지 컴퓨팅 애플리케이션에 최적화된 인프라 제품이다. Wavelength를 사용하면 개발자가 모바일 디바이스 및 최종 사용자 측에서 발생하는 지연 시간이 매우 짧은 애플리케이션을 제작할 수 있다.
Wavelength 영역은 AWS 컴퓨팅 및 스토리지 서비스를 통신 서비스 공급자(CSP)의 5G 네트워크에 포함하여 5G 디바이스에서의 애플리케이션 트래픽이 통신 네트워크 내의 Wavelength 영역에서 실행되는 애플리케이션 서버로 전송될 수 있는 AWS 인프라 배포 환경이다. 이를 통해 지연 시간이 100밀리초를 초과하게 만들어 고객이 5G의 향상된 대역폭 및 지연 시간을 완전히 활용하지 못하게 할 수 있는 인터넷에 대한 추가적인 네트워크 홉(라우터나 게이트웨이 등 중간 노드)이 줄어들게 된다.
AWS 개발자는 이동 통신 사업자 데이터 센터 내의 5G 네트워크 엣지에 AWS 컴퓨팅 및 스토리지 서비스를 포함하는 AWS 인프라 배포 환경인 Wavelength 영역에 애플리케이션을 배포하고 해당 리전의 다양한 AWS 서비스에 원활하게 액세스할 수 있다.
로컬 영역이라는 개념은 컴퓨팅 스토리지 데이터베이스 및 데이터베이스가 선택한 다른 서비스를 최종 사용자와 가깝게 배치하여 지연 시간에 민감한 애플리케이션을 실행할 수 있게 한다.
EC2, RDS, ECS, EBS, ElastiCache, Direct Connect 등과 호환된다.
예를 들어, 한 리전이 있고 3개의 가용 영역이 있을 때, 이 가용 영역을 더 많은 로컬 영역에 확장할 수 있다. 임의의 구역에 로컬 영역을 정의하고 VPC를 가용 영역과 로컬 영역으로 확장하면 EC2 인스턴스를 로컬 영역에서 실행할 수 있다.
즉, 주요 리전이 없는 위치에 소규모 데이터 센터를 구축하여 범위를 확장하는 것이다.