4일차. AWS 글로벌 인프라

변현섭·2023년 6월 23일
0

Ⅰ. 글로벌 인프라

글로벌 인프라를 구축했을 때 얻을 수 있는 이점은 무엇일까? 대형 퍼레이드 또는 재난사태, 정전과 같은 상황이 한 커피숍 주변에 생겼다고 해보자. 커피숍이 하나밖에 없다면 고객은 해당 커피숍을 이용할 수 없다. 반면, 커피숍이 체인점 형태로 여러 군데에 위치한다면 고객은 얼마든지 주변에 위치한 다른 곳을 방문할 수 있다. 고객은 그대로 서비스를 이용할 수 있고 서비스 제공자 역시 계속해서 돈을 벌 수 있다. 이와 비슷한 원리로 AWS의 글로벌 인프라가 동작한다.

1. 리전 선택

1) 데이터 거버넌스 및 법적 요구 사항 준수

회사와 위치에 따라 특정 영역에서 데이터를 실행해야 할 수도 있다. 예를 들어 회사에 모든 데이터를 영국 내부에 유지해야 한다는 규정이 있는 경우 런던 리전을 선택하면 된다. 하지만 모든 경우에 위치 기반 데이터 규정이 있는 것은 아니므로 아래 세 가지 요소에 더 집중해야 한다.

2) 고객과의 근접성

고객과 가까운 리전을 선택하면 고객에게 콘텐츠를 더 빠르게 제공하는 데 도움이 된다. 예를 들어 본사는 워싱턴 DC에 있고 고객 중 다수가 싱가포르에 거주하고 있다고 가정해보자. 인프라를 본사와 가까운 버지니아 북부 리전에서 실행할지, 고객과 가까운 싱가포르 리전에서 실행할지 고려해야 한다.

3) 리전 내에서 사용 가능한 서비스

경우에 따라 고객에게 제공하려는 기능이 가장 가까운 리전에 없을 수도 있다. AWS가 전 세계에서 새로운 서비스를 제공할 수 있으려면, 각 리전마다 물리적 하드웨어를 구축해야 한다. 선호하는 리전이 아직 서비스의 기능이 미처 확장되지 못한 리전일 경우, 적절한 다른 리전을 선택하면 된다.

4) 요금

미국과 브라질 모두에서 애플리케이션을 실행할 것을 고려한다고 가정해 보자. 브라질의 세금 제도 때문에 상파울루 리전은 오레곤 리전과 비교하여 동일한 워크로드를 실행하는 데 50% 더 많은 비용이 소요될 수 있다. 요금을 결정하는 요인은 이외에도 여러가지이지만, 지금은 서비스 비용이 리전마다 다를 수 있음만 알고 넘어가자.

2. 가용 영역

가용 영역은 리전 내의 단일 데이터 센터 또는 데이터 센터 그룹이다. 가용 영역은 서로 수십 마일 떨어져 있다. 이 간격은 가용 영역 간의 지연 시간(콘텐츠가 요청된 시점과 수신된 시점 간의 차이)이 짧을 정도로 충분히 가깝다. 그러나 리전의 한 부분에서 재해가 발생할 경우 여러 가용 영역이 영향을 받을 가능성을 줄이기에는 충분할 만큼 멀리 떨어져 있다.

1) 단일 가용영역에 있는 EC2 인스턴스

캘리포니아 북부 리전의 단일 Amazon EC2 인스턴스에서 애플리케이션을 실행하고 있다고 가정해 보자. 인스턴스는 us-west-1a 가용 영역에서 실행 중이다. us-west-1a에 장애가 발생할 경우 이 인스턴스는 손실된다.

2) 여러 가용 영역에 있는 EC2 인스턴스

한 리전의 가용 영역 두 개 이상에서 애플리케이션을 실행하는 것이 권장된다. 이 예에서는 두 번째 Amazon EC2 인스턴스를 us-west-1b에서 실행하도록 선택하였다.

가용 영역((us-west-1a)에 장애가 발생하더라도 애플리케이션은 여전히 us-west-1b에서 실행될 수 있다.

3. 엣지 로케이션

엣지 로케이션은 Amazon CloudFront가 더 빠른 콘텐츠 전송을 위해 고객과 가까운 위치에 콘텐츠 사본을 캐시하는 데 사용하는 사이트이다.

1) 오리진

회사의 데이터가 브라질에 저장되어 있고 중국에 거주하는 고객들이 있다고 가정해 보자. 이러한 고객에게 콘텐츠를 제공하기 위해 모든 콘텐츠를 중국 리전 중 하나로 이동할 필요는 없다.

2) 엣지로케이션

고객이 브라질에서 데이터를 가져올 필요가 없도록 중국 내 고객과 가까운 엣지 로케이션에 사본을 로컬로 캐시할 수 있다.

3) 캐시

중국 내 고객이 파일을 요청하면 Amazon CloudFront는 엣지 로케이션의 캐시에서 해당 파일을 검색하여 고객에게 전송한다. 이 파일은 브라질에 저장된 원본이 아니라 중국 근처의 엣지 로케이션에서 가져온 것이므로 고객에게 더 빠르게 전달될 수 있다.

Ⅱ. AWS 리소스를 프로비저닝하는 방법

1. AWS 서비스와 상호작용하는 방법

1) AWS Management Console

AWS Management Console은 Amazon 서비스 액세스 및 관리를 위한 웹 기반 인터페이스이다. 최근에 사용한 서비스에 빠르게 액세스하고 이름, 키워드 또는 약어로 다른 서비스를 검색할 수도 있다. 콘솔에는 작업을 수행하는 프로세스를 단순화할 수 있는 마법사 및 자동화된 워크플로가 포함되어 있다. 쉽게 말해 GUI환경이다.

또한 AWS 콘솔 모바일 애플리케이션을 사용하여 리소스 모니터링, 경보 보기, 결제 정보 확인 등의 작업을 수행할 수 있다. 여러 ID가 동시에 AWS 콘솔 모바일 앱에 로그인하는 것도 가능하다.

2) AWS CLI

API 요청을 수행할 때 시간을 절약하기 위해 AWS 명령줄 인터페이스(AWS Command Line Interface)를 사용할 수 있다. AWS CLI를 사용하면 하나의 도구를 통해 명령줄에서 직접 여러 AWS 서비스를 제어할 수 있다. AWS CLI는 Windows, macOS 및 Linux 사용자가 사용할 수 있다.

AWS CLI를 사용하면 스크립트를 통해 서비스 및 애플리케이션이 수행하는 작업을 자동화할 수 있다. 예를 들어 Amazon EC2 인스턴스를 시작하고 Amazon EC2 인스턴스를 특정 Auto Scaling 그룹에 연결하는 등의 작업을 명령을 사용해 수행할 수 있다.

3) SDK

AWS 서비스를 액세스 및 관리할 수 있는 또 다른 옵션은 소프트웨어 개발 키트(SDK)이다. SDK를 사용하면 프로그래밍 언어 또는 플랫폼용으로 설계된 API를 통해 AWS 서비스를 보다 간편하게 사용할 수 있다. SDK를 통해 AWS 서비스를 기존 애플리케이션과 함께 사용하거나 AWS에서 실행할 완전히 새로운 애플리케이션을 생성할 수 있다.

SDK를 사용하기 시작하는 데 도움이 되도록 AWS는 지원되는 각 프로그래밍 언어에 대한 설명서와 샘플 코드를 제공힌다. 지원되는 프로그래밍 언어에는 C++, 자바, .NET 등이 있다.

2. AWS Elastic Beanstalk

AWS Elastic Beanstalk은 Amazon EC2를 기반으로 하는 환경을 프로비저닝할 수 있게 지원하는 서비스이다. AWS Elastic Beanstalk는 사용자가 코드 및 구성 설정을 제공하면, 아래의 작업을 수행하는 데 필요한 리소스를 배포한다.

  • 용량 조정
  • 로드 밸런싱
  • 자동 조정
  • 애플리케이션 상태 모니터링

3. AWS Cloud Foramtion

AWS CloudFormation을 사용하여 인프라를 코드로 취급할 수 있다. 즉, AWS Management Console을 사용하여 개별적으로 리소스를 프로비저닝하는 대신 command line을 작성하여 환경을 구축할 수 있다.

AWS CloudFormation은 리소스를 안전하고 반복 가능한 방식으로 프로비저닝하므로 수작업을 수행하거나 사용자 지정 스크립트를 작성할 필요 없이 인프라 및 애플리케이션을 빈번히 구축할 수 있다. 이 서비스는 스택을 관리할 때 수행해야 할 적절한 작업을 결정하고 오류를 감지하면 변경 사항을 자동으로 롤백한다.

지금까지의 내용을 정리하자면, AWS Management Console은 사용자가 학습하기에 좋고 시각적 정보 확인을 할 때는 굉장히 유용하다. 하지만 Management Console은 수동 도구이기 때문에 자동화 구축에 있어서는 좋은 옵션이 아니다. 이 때 CLI를 사용해서 터미널로 AWS와 상호작용하도록 스크립트를 작성하실 수 있다. 혹은 SDK를 사용해서 AWS와의 상호작용에 대한 프로그램을 작성할 수도 있고 AWS Elastic Beanstalk 혹은 AWS CloudFormation과 같은 관리 도구를 사용할 수도 있다.

이 시리즈의 글들은 AWS Skill Builder의 교육 내용을 모방하고 있으며, 이미지는 AWS Skill Builder에서 가져온 것입니다. 넷제로 해커톤을 준비하는 과정에서 수료해야 하는 교육 내용이기에 블로그에 정리해 둔 것입니다. 문제 시 삭제하겠습니다.
>> AWS Skill Builder

profile
Java Spring, Android Kotlin, Node.js, ML/DL 개발을 공부하는 인하대학교 정보통신공학과 학생입니다.

0개의 댓글