모듈 2에서 사용량에 따라 클라우드 컴퓨터를 자동 확장하고 트래픽을 분산하는 등 리소스 가용성을 높이는 방법을 알아 보았다면, 이번 장에서는 지진이나 홍수, 정전 등 예기치 못한 장애에 대해 대처하는 방법에 대하여 알아볼 것이다.
솔직히 나는 클라우드 컴퓨터를 처음 접했을 때, 이 가상의 머신이 물리적인 장비 없이 어떤 식으로 사용자에게 제공되는 지 궁금했었다. 혹시 나와 같이 이에 대해 궁금한 사람이 있을 지 모르니 적어 두지만, 클라우드 컴퓨터는 진짜로 있지도 않은 가상의 머신이 아니고 IDC(Internet data Center) 또는 데이터 센터 라는 곳에 대규모 장비를 구성해 두고 각 사용자에게 필요한 만큼의 리소스를 제공한다.
다시 본론으로 돌아와서 애플리케이션 성능이나 사용량과 상관없이 IDC에 자연재해 등의 물리적 문제가 발생하였을 때를 대비하는 방법이다. 여기서는 커피숍의 체인점을 예로 들어 설명한다.
출처 : Amazon AWS Certification
커피숍의 특정 지점이 공사를 하거나, 가게 앞에서 퍼레이드를 하여 도로가 차단되는 등의 경우가 발생하면 해당 지점은 영업을 할 수 없다. 그러나 다른 지점에서는 별 다른 문제 없이 영업을 계속할 수 있다.
리전(Region)
위 커피숍의 체인점처럼 AWS에서는 지리적으로 구분된 "리전" 이라는 영역으로 시스템의 가용성을 지원하고 있다. 미국 오하이오, 미국 오레곤, 남아메리카 상파울루, 파리, 런던, 베이징, 시드니, 도쿄, 서울 등의 리전이 있다. EC2 등 AWS의 서비스는 대부분 이 리전에 종속되며, 다음과 같이 상황과 전략에 따라 하나 이상의 리전을 선택할 수 있다.
데이터 거버넌스 및 법적 요구사항 준수 회사와 위치에 따라 특정 영역에서 데이터를 실행해야 할 수 있다. 예를 들어 회사의 모든 데이터를 영국 내부에 유지해야 한다는 규정이 있는 경우 런던 리전을 선택한다. 그러나 대부분 이러한 요구조건이 없는 경우가 많으니 다음 세 가지 요소에 더 집중해야 한다.
고객과의 접근성 지리적으로 먼 곳의 고객이 서비스에 접근하는 경우 요청 하나하나에 더 많은 지연시간이 발생된다. 이는 전체 퍼포먼스에 영향을 미치므로 대부분의 경우 고객과 가까운 위치를 선택하는 것이 좋다.
리전 내에서 사용 가능한 서비스 AWS는 늘 새로운 서비스를 개발하고 기존 서비스의 기능을 확장하며 혁신을 주도하고 있다. 서비스에 따라 물리적인 하드웨어를 새로 구축해야 하는 경우가 있을 수 있다. 이 경우 새로운 서비스를 지원하거나 지원하지 않는 리전이 존재할 수 있다.
요금 브라질 리전은 세금 정책으로 인하여 미국 리전보다 약 50% 많은 비용이 소요될 수 있다. 다양한 경우에서 리전 별로 결정되는 요금이 다를 수 있으니 이름 참고한다.
가용영역(AZ)
가용영역(AZ, Availability zone)은 리전 내의 단일 데이터 센터 또는 데이터 센터 그룹이다. 위에서 설명한 IDC 또는 데이터센터라고 볼 수 있다.
출처 : Amazon AWS Certification
각 가용영역은 자연재해같은 큰 사건을 대비하여 수십 킬로미터 이상 떨어진 곳에 구축된다. EC2 인스턴스 등을 하나의 가용영역에 두지 않고, 여러 곳에 가동한다면 유사시에도 중단 없이 비즈니스를 운영할 수 있게 된다.
엣지 로케이션
개발하는 서비스가 글로벌 영역에서 서비스 되어야 한다고 하자. 미국 사용자도 있고 중국 사용자도 있다. 위에서 설명했듯이 고객과 지리적으로 먼 곳에 리전이 위치한 경우 간단한 요청에도 지연시간이 발생할 수밖에 없다.
이 경우 아래 이미지와 같이 Amazon EC2 인스턴스가 있는 "오리진" 데이터를 엣지 로케이션에 캐싱하여 매 번 지리적으로 먼 거리에 요청하도록 하는 Amazon CloudFront 라는 서비스를 사용할 수 있다.
출처 : Amazon AWS Certification
엣지 로케이션은 리전과 구분되며, 리전에 있는 콘텐츠를 전 세계 엣지 로케이션 모음에 푸시하여 통신과 콘텐츠 전달의 속도를 높일 수 있다.
엣지 로케이션은 CloudFront만 실행하지는 않는다. Amazon Route 53라고 하는 Domain Name Service, 즉DNS도 실행하여, 상당히 짧은 지연 시간으로 고객을 올바른 웹 위치로 보낼 수 있다.
번외로 기업에서 자체 건물 내에서 AWS 서비스를 사용하고 싶다면 AWS Outposts를 사용할 수 있다. AWS가 사용자의 데이터 센터 내부에 정상적으로 작동하는 소형 리전을 기본적으로 설치하는 곳으로, AWS가 소유하고 운영하며 AWS의 모든 기능을 사용하지만 사용자의 건물에 격리된다.
AWS 리소스를 프로비저닝하는 방법
여태까지 어떤어떤 서비스가 있다. 정도의 소개만 들었지 실제로 AWS Cloud 서비스를 구축하려면 어떻게 해야 하는지 배우지는 않았다. 사실 AWS 리소스를 프로비저닝하는 방법은 여러 가지가 있다.
AWS Management Console Amazon 서비스 액세스 및 관리를 위한 웹 기반 인터페이스로, 최근에 사용한 서비스에 빠르게 액세스하고 이름, 키워드 또는 약어로 다른 서비스를 검색할 수 있다. 가장 기본적인 방법이며 콘솔에는 작업을 수행하는 프로세스를 단순화할 수 있는 마법사 및 자동화된 워크플로가 포함되어 있다. 또한 AWS 콘솔 모바일 애플리케이션을 사용하여 리소스 모니터링, 경보 보기, 결제 정보 확인 등의 작업을 수행할 수 있다. 여러 ID가 동시에 AWS 콘솔 모바일 앱에 로그인할 수 있다.
AWS 명령줄 인터페이스(AWS CLI) Linux 터미널같은 인터페이스의 AWS CLI를 사용하면 하나의 도구를 통해 명령줄에서 직접 여러 AWS 서비스를 제어할 수 있다. AWS CLI를 사용하면 스크립트를 통해 서비스 및 애플리케이션이 수행하는 작업을 자동화할 수 있다. 예를 들어 Amazon EC2 인스턴스를 시작하고 Amazon EC2 인스턴스를 특정 Auto Scaling 그룹에 연결하는 등의 작업을 명령을 사용해 수행할 수 있다.
소프트웨어 개발 키트(SDK) SDK를 사용하면 프로그래밍 언어 또는 플랫폼용으로 설계된 API를 통해 AWS 서비스를 보다 간편하게 사용할 수 있다. SDK를 통해 AWS 서비스를 기존 애플리케이션과 함께 사용하거나 AWS에서 실행할 완전히 새로운 애플리케이션을 생성할 수 있다. SDK를 사용하기 시작하는 데 도움이 되도록 AWS는 지원되는 각 프로그래밍 언어에 대한 설명서와 샘플 코드를 제공한다. C++, 자바, .NET 등의 프로그래밍 언어를 지원한다.
AWS Elastic Beanstalk 네트워크, EC2 인스턴스, 규모 조정, Elastic Load Balancer 구축, 애플리케이션 상태 모니터링 등의 환경 구성을 쉽게 저장하여 다시 배포할 수 있게 한다. AWS Elastic Beanstalk를 이용하면 모든 구성 요소를 개별적으로 프로비저닝하고 관리하는 번거로움이 없어지며 기본 리소스의 가시성과 제어 기능을 유지하여 인프라가 아닌 비즈니스 애플리케이션에 집중할 수 있다.
AWS CloudFormation AWS CloudFormation은 코드형 인프라 도구로 CloudFormation 템플릿이라고 하는 JSON 또는 YAML 텍스트 기반 문서를 사용하여 선언적인 방식으로 다양한 AWS 리소스를 정의할 수 있다. 리소스를 안전하고 반복 가능한 방식으로 프로비저닝하므로 수작업을 수행하거나 사용자 지정 스크립트를 작성할 필요 없이 인프라 및 애플리케이션을 빈번히 구축할 수 있다.
댓글 영역