아마존 일래스틱 컴퓨트 클라우드

아마존 일래스틱 컴퓨트 클라우드(Amazon Elastic Compute Cloud, EC2)는 아마존닷컴의 클라우드 컴퓨팅 플랫폼 아마존 웹 서비스의 중앙부를 이루며, 사용자가 가상 컴퓨터를 임대 받아 그 위에 자신만의 컴퓨터 애플리케이션들을 실행할 수 있게 한다. EC2는 사용자가 아마존 머신 이미지(AMI)로 부팅하여 아마존이 "인스턴스"라 부르는 가상 머신을, 원하는 소프트웨어를 포함하여 구성할 수 있게 하는 웹 서비스를 제공함으로써 스케일링이 가능한 애플리케이션 배치(deployment)를 장려한다. 사용자는 필요하면 서버 인스턴스를 만들고 시작하고 종료할 수 있으며, 실행 중인 서버에 대해 시간 당 지불하므로 "일래스틱"(elastic, 탄력적인)이라는 용어를 사용하게 된다. EC2는 사용자에게 레이턴시 최적화와 높은 수준의 다중화를 허용하는 지리학적 인스턴스 위치에 대한 통제 기능을 제공한다.
2010년 11월, 아마존은 자체 웹사이트를 EC2와 AWS를 사용하도록 전환하였다.
역사.
아마존은 2006년 8월 25일 EC2의 제한된 공개 베타 테스트를 선언하였으며 선입 선처리 기반 접근을 제공하였다. 2007년 10월 16일, 2개의 새로운 인스턴스 유형(Large, Extra-Large)을 추가하였다. 2008년 5월 29일, 2개의 유형(High-CPU Medium, High-CPU Extra Large)이 더 추가되었다. 12개의 인스턴스 유형을 사용할 수 있다.
2008년 3월 27일, 아마존은 3개의 새로운 기능을 추가하였다. (고정 IP 주소, 가용 지역/zone, 사용자 선택 가능 커널) 2008년 8월 20일, 아마존은 일래스틱 블록 스토어(EBS)를 추가하였다. 이것은 서비스 도입 이후로 존재하지 않던 기능인 지속형 스토리지(persistent storage)를 제공한다.
2008년 10월 23일, 아마존 EC2는 베타 딱지를 떼어내고 정식 운영 방식으로 변경하였다. 같은 날, 아마존은 다음의 기능들을 발표하였다: EC2 서비스 수준 협약, EC2의 베타 형태의 마이크로소프트 윈도우, EC2의 베타 형태의 마이크로소프트 SQL 서버, AWS 관리 콘솔 계획, 부하 균형, 자동 스케일링, 클라우드 모니터링 서비스를 위한 계획. 이 기능들은 2009년 5월 18일 최종적으로 추가되었다.
아마존 EC2는 대부분 Chris Pinkham이 주도하는 케이프타운의 한 팀에 의해 개발되었다.
Pinkham은 EC2의 초기 아키텍처의 지침을 제공한 뒤에 팀을 만들어 Willem van Biljon 등과 함께 프로젝트의 개발을 이끌었다.
EC2 컴퓨트 유닛.
EC2 컴퓨트 유닛(ECU)은 컴퓨터 자원의 추상화로서 아마존 EC2에 의해 도입되었다. 아마존의 ECU에 대한 정의에 따르면 회사는 EC2 컴퓨트 유닛의 성능의 일관성과 예측 가능성을 관리하기 위해 여러 벤치마크와 테스트를 사용한다. 하나의 EC2 컴퓨트 유닛은 1.0-1.2 GHz 2007 옵테론 또는 2007 제온 프로세서의 CPU 성능과 맞먹는다.
일래스틱 블록 스토리지.
아마존 일래스틱 블록 스토어(Amazon Elastic Block Store, EBS)는 아마존 EC2 인스턴스에 부착할 수 있는 로우 블록 장치를 제공한다. 이 블록 장치들은 로우 블록 장치처럼 사용이 가능하다. 일반적인 용례로 파일 시스템으로 장치를 포맷하고 마운트하는 작업을 포함할 수 있다. 또, EBS는 스냅샷, 복제를 포함한 수많은 고급 스토리지 기능들을 지원한다. EBS 볼륨들은 최대 1TB의 크기를 가질 수 있다. EBS 볼륨들은 레플리케이션 스토리지 위에 만들어지므로 하나의 부품에 장애가 발생하더라도 데이터 손실이 발생하지 않는다. EBS는 2008년 8월 아마존에 의해 대중에게 선보였다.
인스턴스 유형.
EC2는 젠 가상화를 사용한다. "인스턴스"라는 이름의 각 가상 머신은 가상 사설 서버의 기능을 한다. 아마존은 "일래스틱 컴퓨트 유닛"(Elastic Compute Unit) 기반으로 인스턴스들의 크기를 지정한다. 유사 가상 머신의 성능은 다양할 수 있다.
2012년 12월 기준으로 다음의 인스턴스 유형이 제공되었다:
비용.
2016년 10월, 아마존은 리눅스나 윈도우를 구동하는 가장 작은 "나노 인스턴스" (t2.nano) 가상 머신에 대해 약 $0.0065/시간($4.75/월)을 부과하였다. 스토리지에 최적화된 인스턴스는 $6.82/시간만큼 비용이 든다. (i2.8xlarge) "예약"된 인스턴스들은 3년 선불을 조건으로 $4.50/월의 비용이 들어갈 수 있다. 데이터 전송 과금은 방향 및 월간 사용량(인바운드 데이터 전송은 모든 AWS 서비스에서 무료임)에 따라 무료에서 기가바이트 당 $0.12로까지 다양하다.
서드파티 벤더들(예: 클라우드헬스 테크놀로지스, Cloudyn, CloudCheckr)은 가격 할인을 돕기 위한 서비스를 위한 비용 분석을 제공한다. 아마존은 각기 다른 주제 간 비용 최적화를 적용하는, AWS Trusted Advisor라는 이름의 자체 조언 서비스를 제공한다. 실시간 주문형 스케줄링을 가능케 하는 제품들은 빠르게 서드파티 벤더들에 의해 개발되고 있다. (예: ParkMyCloud, Cloud Machine Manager)
프리 티어.
2010년 12월 기준으로, 아마존은 새로운 계정 소유자들에게 무료 자원 크레딧 묶음을 제공하였다. 이 크레딧은 "마이크로" 크기의 서버, 스토리지(EBS), 대역을 한 해 동안 운영할 수 있게 설계되어 있다. 사용하지 않은 크레딧은 다음 달로 가져갈 수 없다.
예약 인스턴스.
예약 인스턴스들은 EC2나 RDS 서비스 사용자들이 1~3년 동안 인스턴스를 예약할 수 있게 한다. 인스턴스 운영 시 아마존이 과금하는 시간 당 금액을 비교해 보면 주문형 인스턴스에 과금되는 요금 보다 훨씬 더 낮은 편이다.
예약 인스턴스들은 3개의 방식으로 구매가 가능하다: All Upfront, Partial Upfront, No Upfront. 각기 다른 구매 옵션은 각기 다른 지불 모델의 형성을 가능케 한다.
2016년 9월, AWS는 예약 인스턴스들에 대한 일부 개선 사항을 발표하였는데, 스코프(scope)라 불리는 새로운 기능과 컨버터블(Convertible)이라 불리는 새로운 유형을 도입하였다.
기능.
운영 체제.
2006년 8월 런칭된 EC2 서비스는 리눅스 및 이후 썬 마이크로시스템즈의 오픈솔라리스와 솔라리스 익스프레스 커뮤니티 에디션을 제공하였다. 2008년 10월, EC2는 윈도우 서버 2003과 윈도우 서버 2008 운영 체제를 사용 가능한 운영 체제 목록에 추가하였다.
2011년 3월, NetBSD AMI를 이용할 수 있게 되었다. 2012년 11월, 윈도우 서버 2012 지원이 추가되었다.
2006년 이후로 FreeBSD 개발자이자 보안 책임자 콜린 퍼시벌(Colin Percival)은 아마존에 FreeBSD를 추가해줄 것을 요청하였다. 2012년 11월, 아마존은 EC2에 공식적으로 FreeBSD의 실행을 공식 지원하였다. FreeBSD/EC2 플랫폼은 퍼시벌에 의해 관리되고 있는데 그는 보안 중복 제거 아마존 S3-클라우드 기반 백업 서비스 Tarsnap을 개발하기도 했다.
아마존은 아마존 리눅스 AMI라는 이름의 낮은 가격으로 페도라, 레드햇 엔터프라이즈 리눅스(RHEL) 기반의 리눅스 배포판을 가지고 있다. 버전 2013.03은 다음을 포함한다:
지속형 스토리지.
EC2 인스턴스는 부팅 디스크 또는 루트 디스크 중 하나의 스토리지 유형을 사용하여 시작할 수 있다. 첫 번째 옵션은 루트 장치로서의 로컬 "인스턴스 스토어" 디스크이다. (원래는 유일한 선택 사항이었음) 두 번째 옵션은 루트 장치로 EBS 볼륨을 사용하는 것이다. 인스턴스 스토어 볼륨들은 임시 스토리지로서 EC2 인스턴스를 재기동해도 살아남지만, 인스턴스를 중단하거나 종료하면(API 호출이나 장애 등으로 인해) 이 스토어는 소실된다.
EBS 볼륨은 EC2 인스턴스의 생존과는 독립적으로 지속형 스토리지를 제공하며 마치 실제 서버의 하드 드라이브처럼 동작한다. 더 정확히 말해, 아마존의 디스크 어레이에 의해 지원되는, 운영 체제에 대한 블록 장치로 나타난다. 운영 체제는 필요에 따라 장치를 자유로이 사용할 수 있다. 대부분의 경우 파일 시스템이 로드된 다음 볼륨이 하드 드라이브로 동작한다. 둘 이상의 EBS 볼륨을 결합함으로써 RAID 어레이를 만드는 것도 가능성 있는 한 방법이다. RAID는 EBS의 속도 및 신뢰성의 개선을 허용한다. 사용자들은 1G부터 1TB에 이르는 크기의 스토리지 볼륨을 설정, 관리할 수 있다. 이 볼륨들은 스냅샷을 지원하며, 스냅샷은 API의 GUI 도구로부터 가져올 수 있다. EBS 볼륨들은 인스턴스가 실행 중에도 인스턴스에서 탈부착이 가능하며, 한 인스턴스에서 다른 인스턴스로 옮길 수도 있다.
심플 스토리지 서비스 (S3)는 데이터가 EC2 인스턴스에 대해, 또는 네트워크를 통해 적절히 인증된 호출자(모든 통신은 HTTP를 통함)에 대해 접근이 가능한 스토리지 시스템이다. 아마존은 "동일 리전에 있는" EC2 인스턴스와 S3 스토리지 간 통신을 위한 대역을 과금하지 않는다. 다른 리전에 있는 S3 데이터에 접근할 경우(이를테면, US East Coast EC2 인스턴스에서 유럽에 저장된 데이터에 접근) 아마존의 일반 요금에 청구된다.
S3 기반 스토리지는 1개월 당 기가바이트로 가격을 매긴다. 애플리케이션들은 API를 통해 S3에 접근한다. 이를테면 아파치 하둡은 특수 s3를 지원한다: 맵리듀스 작업 중 S3 스토리지의 읽기/쓰기를 지원하는 파일 시스템. 리눅스용 S3 파일 시스템도 존재하는데, 원격 S3 파일스토어를 EC2 이미지 위에 마운트함으로써 마치 로컬 스토리지처럼 보이게 한다. S3가 실제로 온전한 POSIX 파일 시스템은 아니므로, 로컬 디스크와 동일하게 동작하지 않을 수도 있다. (예: 락 지원 없음)
일래스틱 IP 주소.
아마존의 일래스틱 IP 주소(Elastic IP address) 기능은 전통적인 데이터 센터의 고정 IP 주소와 비슷하지만, 한 가지 주된 차이점이 있다. 사용자는 네트워크 관리자의 도움 없이, DNS의 바인딩을 대기할 필요 없이 어떠한 가상 머신 인스턴스에라도 일래스틱 IP 주소를 프로그래밍적으로 부여할 수 있다. 일래스틱 IP 주소는 계정이나 가상 머신 인스턴스에 소속되지 않는다. 외견상 제거될 때까지 존재하며, 인스턴스에 연결되어 있지 않더라도 계정에 연결된 채로 남아있는다.
아마존 클라우드워치.
아마존 클라우드워치(Amazon CloudWatch)는 CPU, 디스크, 네트워크와 같은 아마존의 EC2 고객의 자원 이용률에 대한 실시간 모니터링을 제공하는 웹 서비스이다. 클라우드워치는 추가 소프트웨어를 인스턴스에 설치하지 않을 경우 메모리, 디스크 공간, 부하 평균 메트릭을 제공하지 않는다. 아마존은 리눅스 인스턴스를 위한 예제 스크립트를 제공한다. 데이터는 축적되어 AWS 관리 콘솔을 통해 제공된다. 고객이 자신들의 EC2 자원을 자신들의 엔터프라이즈 모니터링 소프트웨어를 통해 모니터링하고 싶다면 명령 줄 도구와 웹 API를 통해 접근할 수도 있다.
아마존 클라우드워치를 통해 수집된 메트릭들은 오토스케일링 기능을 활성화시켜 동적으로 EC2 인스턴스를 추가하거나 제거할 수 있게 한다. 고객들은 모니터링 인스턴스의 수에 따라 과금을 받는다.
2011년 5월 이후 아마존 클라우드워치는 웹 서비스 API를 통해 프로그래밍적으로 제출한 다음 알람 설정을 포함한 기타 모든 내부 메트릭과 동일한 방법으로 모니터링할 수 있는 사용자 지정 메트릭을 수락한다.
자동화된 스케일링.
아마존 EC2의 자동 스케일링 기능은 연산 능력을 사이트 트래픽에 자동으로 순응시킬 수 있게 한다. 스케줄 기반(예: 특정 일자의 시간) 및 규칙 기반(CPU 이용률 임계치) 자동 스케일링 매커니즘은 단순한 애플리케이션들에 대해서는 사용하기 쉽고 효율적이다. 그러나 VM이 사용 준비에 최대 수 분 동안 시간을 소요할 수 있는 잠재적인 문제점이 하나 있으며, 이는 시간이 중요한 애플리케이션에는 적합하지 않다. VM 시작 시간은 이미지의 크기, VM 유형, 데이터 센터 위치 등에 따라 다르다.
신뢰성.
아마존은 EC2가 장애 허용이 가능하도록 "가용 지역"(Availability Zone)을 구성하였는데, 이 지역은 다른 가용 지역에서 발생한 장애로부터 영향받지 않도록 설계되어 있다. 가용 지역들은 동일한 인프라스트럭처를 공유하지 않는다. 둘 이상의 가용 지역에서 실행 중인 애플리케이션들은 더 높은 가용성을 달성할 수 있다.