AWS Cloud Practitioner Essentials - 모듈3 [리전&가용 영역, CloudFront, Elastic Beanstalk, CloudFormation]
AWS 글로벌 인프라
- 가용 영역(Availability Zone) = 리전 내의 단일 데이터 센터 또는 데이터 센터 그룹
- 각 가용 영역에는 예비 전원과 네트워킹을 구비한 하나 이상의 독립적인 데이터 센터가 있음
- 가용 영역은 서로 수십 마일 떨어져 있음, 리전 내의 가용 영역 또한 인접한 곳에 구축하지 않음(자연 재해, 재난 발생시 다 연결 끊길 수 있으니까)
- 리전 = AWS 리소스가 있는 지리적 영역
- AWS 리전은 특정 지역 내에 서로 격리되어 있고, 다시 각각의 리전은 물리적으로 분리된 여러 가용 영역으로 구성
- 엣지 로케이션 = AWS 서비스가 서비스별 작업을 수행하는 데 사용하는 데이터 센터
- AWS Outposts = 자체 온프레미스 데이터 센터에서 하이브리드 방식으로 AWS 인프라, 서비스 및 도구를 실행하는 데 사용할 수 있는 서비스
가용 영역 선택 모범 사례는 항상 두 개 이상의 가용 영역에 인프라를 배포하는 것 ( Elastic Load Balancing, Amazon SQS, Amazon SNS 같은 리전 레벨의 AWS 서비스는 이미 사용자 대신 이러한 작업들을 수행하고 있음 )
엣지 로케이션
- 전 세계 고객과 더 가까운 곳에 데이터 복사본을 캐싱하는 작업 = 콘텐츠 전송 네트워크입니다. 즉 CDN이라는 개념을 사용
- AWS에서는 CDN을 Amazon CloudFront라고 함
- CloudFront = 데이터, 동영상, 애플리케이션, API를 전 세계 고객에게 짧은 지연 시간으로 빠르게 전달해 주는 서비스(콘텐츠 전송 서비스)
- 전 세계에 있는 엣지 로케이션을 이용해 사용자가 어떤 위치에 있든 통신 속도를 높임 (리전과 구분됨)
- 엣지 로케이션 네트워크를 사용하여 콘텐츠를 캐시하여 전 세계 고객에게 콘텐츠를 전송함, 캐시된 콘텐츠는 로컬에 복사본으로 저장됨 (이러한 콘텐츠는 동영상 파일, 사진, 웹 페이지 등)
- AWS 엣지 로케이션은 Amazon Route 53라고 하는 DNS(Domain Name Service)도 실행함, 상당히 짧은 지연 시간으로 고객의 요청을 올바른 웹 위치로 보내기 위함
- AWS Outposts(엣지 디바이스) = 하이브리드 클라우드 방식으로 인프라를 실행할 수 있도록 지원하는 서비스
- AWS가 사용자의 데이터 센터 내부에 정상적으로 작동하는 소형 리전을 기본적으로 설치하는 곳, AWS가 소유하고 운영하며 AWS의 모든 기능을 사용하지만 사용자의 건물에 격리됨
글로벌 인프라 관련 핵심 내용 정리
- 리전 = 지리적으로 격리된 영역으로 리전을 통해 기업 운영에 필요한 서비스를 액세스할 수 있다.
- 리전에는 가용 영역이 있어 물리적으로 수십 킬로미터 떨어진 여러 건물에서 애플리케이션을 실행하면서도 논리적 통합을 유지할 수 있다. 이 가용 영역을 이용하게 되면 사용자의 추가 노력 없이도 고가용성 및 재해복구 시나리오를 해결할 수 있다.
- AWS 엣지 로케이션은 Amazon CloudFront를 실행하여 고객이 전 세계 어디에 있더라도 콘텐츠를 고객과 가까운 곳으로 가져올 수 있다.
AWS 리소스를 프로비저닝 하는 방법 / 서비스와 상호작용 하는 방법
- AWS리소스와 AWS 서비스 상호작용 하는 방법 = API 이용
< AWS 서비스를 액세스 및 관리할 수 있는 옵션 >
1) AWS Management Console = Amazon 서비스 액세스 및 관리를 위한 웹 기반 인터페이스
- 최근에 사용한 서비스에 빠르게 액세스하고 이름, 키워드 또는 약어로 다른 서비스를 검색할 수 있다.
- 콘솔에는 작업을 수행하는 프로세스를 단순화할 수 있는 마법사 및 자동화된 워크플로가 포함되어 있다.
AWS 콘솔 모바일 애플리케이션을 사용하여 리소스 모니터링, 경보 보기, 결제 정보 확인 등의 작업을 수행할 수 있다. - 여러 ID가 동시에 AWS 콘솔 모바일 앱에 로그인할 수 있다.
2) AWS Command Line Interface(AWS CLI) (API 요청을 수행할 때 시간을 절약하기 위해)
- AWS CLI를 사용하면 하나의 도구를 통해 명령줄에서 직접 여러 AWS 서비스를 제어할 수 있다.
- Windows, macOS, Linux 사용자가 AWS CLI를 사용할 수 있다.
- AWS CLI를 사용하면 스크립트를 통해 서비스 및 애플리케이션이 수행하는 작업을 자동화할 수 있다.
- 예를 들어 Amazon EC2 인스턴스를 시작하고 Amazon EC2 인스턴스를 특정 Auto Scaling 그룹에 연결하는 등의 작업을 명령을 사용해 수행할 수 있다.
3) 소프트웨어 개발 키트(SDK)
- SDK를 사용하면 프로그래밍 언어 또는 플랫폼용으로 설계된 API를 통해 AWS 서비스를 보다 간편하게 사용할 수 있다.
- SDK를 통해 AWS 서비스를 기존 애플리케이션과 함께 사용하거나 AWS에서 실행할 완전히 새로운 애플리케이션을 생성할 수 있다.
- SDK를 사용하기 시작하는 데 도움이 되도록 AWS는 지원되는 각 프로그래밍 언어에 대한 설명서와 샘플 코드를 제공(지원되는 프로그래밍 언어에는 C++, Java, .NET 등)
AWS Elastic Beanstalk / AWS CloudFormation
1) AWS Elastic Beanstalk = Amazon EC2를 기반으로 하는 환경을 프로비저닝할 수 있게 지원하는 서비스
- 네트워크, EC2 인스턴스, 규모 조정, Elastic Load Balancer를 구축하기 위해서 콘솔을 직접 클릭하거나 여러 명령을 작성하지 않아도 됨
- 사용자가 코드 및 구성 설정을 제공하면 Elastic Beanstalk이 [ 용량 조정/ 로드 밸런싱/ 자동조정/ 애플리케이션 상태 모니터링 ]을 수행하는 데 필요한 리소스를 배포
- -> 인프라가 아닌 비즈니스 애플리케이션에 집중할 수 있게 도와줌
2) AWS CloudFormation = 우리가 자동화되고 반복 가능한 배포를 만드는 데 도움이 되는 또 다른 서비스, 코드형 인프라 도구CloudFormation 템플릿이라고 하는 JSON 혹은 YAML 텍스트 기반 문서를 사용
- 원하는 항목을 사용자가 정의할 수가 있고 추후에 CloudFormation 엔진이라고 하는 것이 API 호출과 관련한 세부 사항들을 모두 처리해서 필요한 모든 것들을 구축해 줌
- EC2 기반 솔루션에만 구축되지 않고 스토리지, 데이터베이스, 분석, 기계 학습 등의 굉장히 다양한 AWS 리소스를 지원
- CloudFormation 템플릿에서 우리가 리소스를 정의하면 CloudFormation이 템플릿을 분석하고 우리가 정의한 모든 리소스의 프로비저닝을 알아서 시작해 줌. 즉, CloudFormation은 AWS 백엔드로 가는 모든 호출과 API를 사용자 대신해서 관리
- 템플릿을 여러 계정이나 또 여러 리전에서 동시에 우리가 실행한다면 여러 계정 또는 리전에서 동일한 환경이 생성됨
Q. AWS 글로벌 인프라에 대한 올바른 설명?
A. 리전은 세 개 이상의 가용 영역으로 구성됨
리전 - 세 개 이상 가용 영역 ( 서로 격리된 여러 위치로 이루어진 개별적인 지리적 위치 )
가용 영역 - 리전 내 단일 데이터 센터 또는 그룹 (AWS 글로벌 인프라의 완전히 격리된 부분)
Q. 리전 선택시 고려 요소는?
- 데이터 거버넌스 및 법적 요구 사항 준수
- 고객과의 근접성
- 리전 내에서 사용 가능한 서비스
- 요금
(선택한 지원 수준은 리전별로 결정되지 않음...? AWS Support 플랜 관련 이야기
다른 사용자에게 사용자 지정 권한을 할당하는 것은 모든 AWS 리전에서 가능한 기능.
AWS Command Line Interface(AWS CLI)는 모든 AWS 리전에서 사용할 수 있음.)
Q. Amazon CloudFront에서 사용자가 어느 위치에 있든 콘텐츠를 더 빠르게 전송하기 위해 콘텐츠 복사본을 캐싱하는 데 사용하는 사이트는?
A. 엣지 로케이션
(오리진 = CloudFront가 파일을 가져오는 서버
CloudFront 오리진의 예) Amazon Simple Storage Service(Amazon S3) 버킷과 웹 서버 등)
Q. AWS Outposts로 수행할 수 있는 작업은?
A. AWS 인프라 및 서비스를 온프레미스 데이터 센터 등 다른 위치로 확장
(- 스크립트를 통해 AWS 서비스 및 애플리케이션의 작업을 자동화 => AWS CLI
- 마법사 및 자동화된 워크플로에 액세스하여 AWS 서비스에서 작업을 수행 => AWS 관리 콘솔
- 지원되는 프로그래밍 언어로 AWS 애플리케이션을 개발 => SDK)