모든 내용은 Cousera의 'AWS Cloud Technical Essentials' 강좌 내용을 기반으로 정리하였습니다.
Amazon Ec2는 클라우드에서 안전하고 유연한 컴퓨팅 수행능력을 제공하는 웹서비스 입니다.
Amazon EC2를 통해 가상서버인 EC2 인스턴스를 프로비저닝할 수 있는데요, EC2 인스턴스를 생성하기 위해서는 CPU, 메모리, 네트워크 및 스토리지와 같은 하드웨어 사양이나 사용자가 원하는 리소스를 포함하고 있는 네트워크를 설정하는 Logical Configuration(networking location, firewall rules, authentication, and the operating system)를 정의해야 합니다. 이 때, 사용자는 어떤 운영체제를 설정할 것인가를 정해야 하는데, 이때 Amazon Machine Image(AMI)를 선택해야 합니다.
그렇다면 AMI란 정확히 어떤 것일까요?
AMI가 왜 필요하고 얼마나 유용한지 알려면, 기존 인프라 환경을 구축하는 방식을 이해해야 합니다. 일반적으로 서버를 구축하는 방법은 설치 드라이브나 설치 마법사를 통해 운영체제를 설치하고, 스토리지 매핑, 아키텍쳐 유형, 추가적인 소프트웨어 등 고려해야할 요소들이 많은데요. 사용자가 사용목적에 맞는 AMI를 선택하기만 하면 이러한 프로세스를 단축할 수 있습니다.
EC2 인스턴스의 운영체제를 선택한 다음에 무엇을 해야할까요? 그 다음에는, 인스턴스 유형, 네트워크, 스토리지와 같은 환경 설정을 해야 합니다. 어플리케이션를 만들 때, 고객 요청을 처리하기 위한 충분한 용량의 인스턴스가 필요한데요. on-premise 앱의 경우 서버 용량을 예측하려면 선행 자본 지출을 고려하는 등 어려운 결정들을 필요로 하지만 AWS 모델은 간단한 API 호출을 통해 클라우드 기반 서비스를 할당하여 어플리케이션 수요에 따른 인프라 용량을 맞출 수 있습니다.
EC2 인스턴스는 가상프로세서, 메모리, 네트워크, 인스턴스 스토리지, 그래픽 처리 장치를 조합하여 구성할 수 있습니다. EC2 인스턴스를 만들 때, 이러한 구성 요소에 맞는 configuration이 필요합니다.
위 인스턴스 유형의 이름(c5.large)를 세부적으로 나누어서 그 뜻을 자세히 알아보겠습니다.
우선 c5는 인스턴스 패밀리 및 세대 번호를 결정합니다. 해당 인스턴스는 5세대 인스턴스에 속합니다. large는 인스턴스 용량의 크기를 결정합니다.
Instance 패밀리란 무엇인가?
isntance Family | Description | Use Cases |
---|---|---|
일반적인 목적 | 컴퓨팅, 메모리 및 네트워킹 리소스의 균형을 제공하고 다양한 워크로드에 사용할 수 있습니다. | 웹 서버, 컨테이너화된 마이크로서비스, 캐싱 플릿, 분산데이터 저장소 및 개발환경과 같은 확장 워크로드 |
Compute 최적화 | 고성능 프로세서의 이점을 활용하는 컴퓨팅 기반 애플리케이션에 이상적 | 고성능 웹서버, 과학 모델링, 일괄처리, 분산 분석, 고성능 컴퓨팅, 딥러닝, 광고 게재, 게임 |
Memory 최적화 | 메모리에서 대용량 데이터 세트를 처리하는 작업에 빠른 성능을 제공하도록 설계 | 고성능 데이터 베이스, 분산 웹 규모 인메모리 캐시, 중간 규모 인메모리 데이터 베이스, 실시간 빅데이터 분석 및 기타 엔터프라이즈 애플리케이션 |
컴퓨팅 가속화 | 하드웨어 가속기 또는 보조 프로세서를 사용하여 부동 소수점 수 계산, 그래픽 처리 또는 데이터 패턴 일치와 같은 기능 | 3D 시각화, 그래픽 집약적인 원격 워크스테이션, 3D 렌더링, 애플리케이션 스트리밍, 비디오 인코딩 |
스토리지 최적화 | 로컬 스토리지의 대용량 데이터 세트에 대한 높은 순차 읽기 및 쓰기 액세스 권한이 필요한 작업으로 설계, 다른 인스턴스 간에 데이터를 복제하는 애플리케이션에 대기 시간이 짧은 수만 개의 임의 I/O를 제공하도록 최적화 | Cansandra, MongoDB 및 Redis와 같은 NoSQL 데이터 베이스, 인 메모리 데이터베이스, 스케일 아웃 트랜젝션 데이터베이스, 데이터 웨어하우징, ElasticSearch 및 분석 |
EC2 인스턴스는 Amazon Virtual Private Cloud(VPC)라는 네트워크에 배치된다. 이 네트워크는 VPC 생성 및 구성방법을 배우지 않고도 Amazon EC2를 쉽게 시작할 수 있도록 생성되었다.
기본 VPC에 넣은 모든 리소스는 공개되고 인터넷에서 액세스할 수 있으므로 내부에 고객 데이터나 개인 정보를 두어서는 안된다.
EC2 인스턴스는 생성되는 순간부터 종료될때 까지 다양한 상태로 전환됩니다.
(1) 보류상태(Pending) : 인스턴스가 실행상태로 들어갈 준비를 하는 단계로 AWS가 AMI 콘텐츠를 Root Device에 복사하고 필요한 네트워킹 구성 요소를 할당하는 것과 같이 인스턴스를 설정하는데 필요한 모든 작업을 수행하는 상태입니다
(2) 실행중(Running) : 사용할 준비가 된 상태로, 과금이 시작되는 단계이기도 합니다. 실행 중 상태에서 즉시 재부팅, 종료, 중지 및 최대 절전 모드 중지와 가틍ㄴ 인스턴스에서 다른 작업을 수행할 수 있습니다
(3) 재부팅(rebooting) : 운영 체제를 재부팅하는 것과 같습니다. 인스턴스는 동일한 호스트 컴퓨터에 남아있고, 모든 데이터는 유지 및 관리됩니다.
(4) 중지(stopping) : 인스턴스를 중지하고 시작하면 인스턴스가 새로운 물리적 서버에 배치될 수 있습니다. 따라서 이전 호스트 컴퓨터에 있던 인스턴스 스토어의 모든 데이터를 잃어버립니다.
(5) 종료(terminiated) : 인스턴스 스토어가 지워지고 퍼블릭 IP 주소, private IP 주소를 잃게 됩니다. 인스턴스가 종료되면 더 이상 시스템에 엑세스할 수 없습니다.
Stop과 Stop-Hibernate의 차이
인스턴스를 중지한후 인스턴스에 대한 사용 및 데이터 전송 요금을 내지는 않지만 Amazon EBS 크기에 대한 스토리지는 계속 청구됩니다. 인스턴스가 중지된 경우에는 인스턴스 유형과 같은 일부 속성을 수정할 수 있으며, 메모리에 저장된 데이터가 손실됩니다
하지만 최대절전 모드 중지(Stop-Hibernate)를 하면 AWS는 최대 절전 모드(디스크 일시 중단)를 수행하도록 운영 체제에 신호를 보내 인스턴스 메모리(RAM)의 콘텐츠를 Amazon EBS root Volume에 저장합니다.
Stop-hibernate(최대 절전 모드 중지 기능)은 스토리지를 유지하는데 유용합니다. 예를 들어, 애플리케이션을 지원하는 데이터베이스에 대한 병목현상을 완화하기 위해 메모리(RAM)에 데이터베이스 정보를 캐시하는 사용자 백엔드 레이어를 구현하려합니다. 이 때, Amazon EC2에서 이 사용자 지정 백엔드 캐싱 솔루션을 실행한다면, 최대 절전모드 중지기능을 사용하여 서버를 종료하기 전, 이 데이터를 저장하기 위한 스크립트를 수동으로 만들 필요가 없습니다.
부팅(Boot) : 컴퓨터를 동작시키는데 필요한 프로그램을 실행하는 과정을 의미합니다.
프로비저닝 : 가상 머신(VM)을 생성하고 실행하는 프로세스입니다.
하이퍼바이저 : 컴퓨터의 리소스를 가상으로 공유하여 호스트 컴퓨터가 여러 게스트 가상 머신을 지원할 수 있도록 합니다.
스케일 아웃(scale out) : 접속한 서버의 대수를 늘려 처리 능력을 향상시키는 것
Cache(캐시) : 데이터의 원본이나 원본 데이터를 통해 연산된 값을 미리 저장(복사)해두는 임시 저장소를 의미한다.