AWS 웹 호스팅 아키텍처의 핵심 구성 요소 - AWS 클라우드에서의 웹 애플리케이션 호스팅

AWS 웹 호스팅 아키텍처의 핵심 구성 요소

다음 섹션에서는 AWS 클라우드에 배포된 웹 호스팅 아키텍처의 주요 구성 요소 중 일부를 간략하게 설명하고 기존 웹 호스팅 아키텍처와 어떻게 다른지 설명합니다.

네트워크 관리

AWS 클라우드에서는 네트워크를 다른 고객의 네트워크와 분할할 수 있으므로 보다 안전하고 확장 가능한 아키텍처를 구현할 수 있습니다. 보안 그룹은 호스트 수준의 보안을 제공하지만(호스트 보안 섹션 참조), Amazon Virtual Private Cloud(Amazon VPC)를 사용하면 사용자가 정의한 논리적으로 격리된 가상 네트워크에서 리소스를 시작할 수 있습니다.

Amazon VPC는 AWS에서 네트워킹 설정 세부 사항을 완벽하게 제어할 수 있는 서비스입니다. 이러한 제어의 예로는 웹 서버용 퍼블릭 서브넷과 데이터베이스에 대한 인터넷 액세스가 없는 프라이빗 서브넷을 만드는 것이 있습니다. 또한 Amazon VPC를 사용하면 하드웨어 가상 사설 네트워크(VPN)를 사용하여 하이브리드 아키텍처를 생성하고 AWS 클라우드를 자체 데이터 센터의 확장으로 사용할 수 있습니다.

또한 Amazon VPC에는 네트워크에 대한 IPv4 지원 외에도 IPv6 지원이 포함되어 있습니다.

콘텐츠 전송

웹 트래픽이 지리적으로 분산되어 있는 경우, 전 세계에 걸쳐 전체 인프라를 복제하는 방식이 현실적으로 불가능할 수도 있고 비용상 효율적이지도 않습니다. 콘텐츠 전송 네트워크(CDN)는 글로벌 엣지 로케이션 네트워크를 활용하여 동영상, 웹 페이지, 이미지 등 웹 콘텐츠의 캐싱된 복사본을 고객에게 제공하는 기능을 제공합니다. 응답 시간을 줄이기 위해 CDN은 고객과 가장 가까운 엣지 로케이션 또는 원래 요청 위치를 활용함으로써 응답 시간을 단축합니다. 웹 자산이 캐시에서 제공되므로 처리량이 대폭 늘어납니다. 동적 데이터의 경우 많은 수의 CDN을 구성하여 오리진 서버에서 데이터를 검색할 수 있습니다.

CloudFront를 사용하여 글로벌 네트워크의 엣지 로케이션을 통해 동적, 정적 및 스트리밍 콘텐츠를 포함하는 웹 사이트를 전송할 수 있습니다. CloudFront는 자동으로 콘텐츠에 대한 요청을 가장 가까운 엣지 로케이션으로 라우팅하므로 콘텐츠가 가능한 최상의 성능으로 전송됩니다. CloudFront는 Amazon S3Amazon Elastic Compute Cloud(Amazon EC2) 같은 다른 AWS 서비스와 연동하도록 최적화되어 있습니다. CloudFront는 AWS 오리진 서버는 아니지만 파일의 원본 버전을 저장하는 다른 모든 오리진 서버에서도 원활하게 작동합니다.

다른 AWS 서비스와 마찬가지로 CloudFront 사용에 대한 계약 또는 월간 약정은 없습니다. 서비스를 통해 실제로 전송하는 콘텐츠 만큼만 비용을 지불하면 됩니다.

또한 웹 애플리케이션 인프라의 엣지 캐싱을 위한 기존 솔루션이 AWS 클라우드에서 제대로 작동해야 합니다.

퍼블릭 DNS 관리

웹 애플리케이션을 AWS 클라우드로 이동하려면 도메인 이름 시스템(DNS)을 일부 변경해야 합니다. DNS 라우팅을 관리할 수 있도록 AWS는 가용성 및 확장성이 뛰어난 클라우드 DNS 웹 서비스인 Amazon Route 53를 제공합니다. Route 53는 최종 사용자를 인터넷 애플리케이션으로 라우팅할 수 있는 매우 안정적이고 비용 효율적인 방법을 개발자와 기업에 제공하기 위해 설계되었습니다. 이 서비스에서는 ‘www.example.com’과 같은 이름을 192.0.2.1과 같은 컴퓨터 간 연결에 사용되는 숫자 IP 주소로 변환합니다. 또한 Route 53는 IPv6와도 완벽히 호환됩니다.

호스트 보안

AWS는 엣지에서의 인바운드 네트워크 트래픽 필터링 외에도 웹 애플리케이션이 호스트 수준에서 네트워크 트래픽 필터링을 적용할 것을 권장합니다. Amazon EC2보안 그룹이라는 기능을 제공합니다. 보안 그룹은 인바운드 네트워크 방화벽과 유사하며, 이를 위해 EC2 인스턴스에 도달할 수 있는 프로토콜, 포트 및 소스 IP 범위를 지정할 수 있습니다.

각 EC2 인스턴스에 하나 이상의 보안 그룹을 할당할 수 있습니다. 각 보안 그룹은 각 인스턴스에 적절한 트래픽을 허용합니다. 특정 서브넷, IP 주소 및 리소스만 EC2 인스턴스에 액세스할 수 있도록 보안 그룹을 구성할 수 있습니다. 또는 다른 보안 그룹을 참조하여 특정 그룹에 있는 EC2 인스턴스에 대한 액세스를 제한할 수 있습니다.

그림 3의 AWS 웹 호스팅 아키텍처에서 웹 서버 클러스터의 보안 그룹은 웹 계층 로드 밸런스에서만 액세스를 허용하고 포트 80 및 443(HTTP 및 HTTPS)에서 TCP를 통해서만 액세스를 허용할 수 있습니다. 반면 애플리케이션 서버 보안 그룹은 애플리케이션 계층 로드 밸런서에서만 액세스를 허용할 수 있습니다. 이 모델에서 지원 엔지니어도 EC2 인스턴스에 액세스해야 하는데, 이는 AWS Systems Manager 세션 관리자를 통해 달성할 수 있습니다. 보안에 대한 자세한 내용은 AWS의 보안 기능을 설명하는 보안 게시판, 인증 정보 및 보안 백서가 포함된 AWS 클라우드 보안을 참조하십시오.

클러스터 간 로드 밸런싱

하드웨어 로드 밸런서는 기존 웹 애플리케이션 아키텍처에서 사용되는 일반적인 네트워크 어플라이언스입니다. AWS는 Elastic Load Balancing(ELB) 서비스를 통해 이 기능을 제공합니다. ELB는 EC2 인스턴스, 컨테이너, IP 주소, AWS Lambda 함수, 가상 어플라이언스와 같은 여러 대상에 걸쳐 수신 애플리케이션 트래픽을 자동으로 분산합니다. Elastic Load Balancing은 단일 가용 영역 또는 여러 가용 영역에서 다양한 애플리케이션 부하를 처리할 수 있습니다. Elastic Load Balancing이 제공하는 네 가지 로드 밸런서는 모두 애플리케이션의 내결함성에 필요한 고가용성, 자동 크기 조정, 강력한 보안을 갖추고 있습니다.

다른 호스팅 및 서비스 검색

기존 웹 호스팅 아키텍처에서는 대부분의 호스트에 고정 IP 주소가 있습니다. AWS 클라우드에서는 대부분의 호스트에 동적 IP 주소가 있습니다. 모든 EC2 인스턴스는 퍼블릭 및 프라이빗 DNS 항목을 둘 다 가질 수 있고 인터넷 상에서 주소를 지정할 수 있지만, 인스턴스를 시작할 때 DNS 항목과 IP 주소가 동적으로 할당됩니다. 수동으로 할당할 수는 없습니다. 고정 IP 주소(AWS 용어에서는 탄력적 IP 주소)는 인스턴스가 시작된 후 실행 중인 인스턴스에 할당할 수 있습니다. 프라이머리 데이터베이스, 중앙 파일 서버, EC2 호스팅 로드 밸런서와 같이 일관된 엔드포인트가 필요한 인스턴스 및 서비스에는 탄력적 IP 주소를 사용해야 합니다.

웹 애플리케이션 내에서의 캐싱

인 메모리 애플리케이션 캐시는 자주 사용하는 정보를 캐시하여 서비스에 대한 부하를 줄이고 데이터베이스 계층의 성능과 확장성을 향상시킬 수 있습니다. Amazon ElastiCache는 클라우드에서 인 메모리 캐시를 손쉽게 배포, 운영 및 조정할 수 있게 해주는 웹 서비스입니다. 로드에 따라 자동으로 크기가 조정되고 장애가 발생한 노드를 자동으로 교체하도록 생성한 인 메모리 캐시를 구성할 수 있습니다. ElastiCache는 Memcached 및 Redis와 프로토콜이 호환되므로 현재 온프레미스 솔루션에서 간단하게 마이그레이션할 수 있습니다.