Amazon EC2는 Amazon Web Services(AWS)의 중요한 서비스 중 하나로, 사용자가 클라우드에서 가상 서버를 생성하고 관리할 수 있도록 도와준다. 이 서비스는 확장성과 유연성이 뛰어나며, 다양한 워크로드를 처리할 수 있는 다양한 인스턴스 유형을 제공한다.
EC2의 가장 큰 장점 중 하나는 필요에 따라 컴퓨팅 자원을 신속하게 늘리거나 줄일 수 있다는 점이다. 사용자는 초기 투자 없이도 필요한 만큼의 컴퓨팅 파워를 사용할 수 있으며, 사용한 만큼만 비용을 지불하면 된다. 이러한 특징은 특히 스타트업이나 프로젝트 기반의 업무에 매우 유용하다.
AMI(Amazon Machine Image)
EC2 인스턴스를 생성하기 위해서는 먼저 AMI(Amazon Machine Image)를 선택해야 한다. AMI는 운영 체제, 애플리케이션 서버, 애플리케이션, 그리고 해당 인스턴스를 구성하는 모든 설정 정보를 포함하고 있어, 사용자가 손쉽게 필요한 환경을 설정하고 배포할 수 있게 해준다. AMI는 사용자가 자신의 애플리케이션을 더욱 빠르고 일관되게 배포할 수 있도록 돕는다.
AMI를 선택할 때, 사용자는 자신의 요구사항에 맞는 운영 체제와 소프트웨어 스택을 선택할 수 있다. 예를 들어, Ubuntu, CentOS, Windows Server 등 다양한 운영 체제와 Apache, Nginx, MySQL, PostgreSQL 등 다양한 애플리케이션 서버를 포함한 AMI가 준비되어 있다. 또한, 사용자는 AWS Marketplace에서 다양한 서드파티 소프트웨어가 포함된 AMI를 구매하거나 무료로 사용할 수도 있다.
사용자는 자신만의 커스텀 AMI를 생성할 수도 있다. 이를 위해 먼저 기본 AMI를 선택하고, 해당 인스턴스를 원하는 대로 설정한 후에 해당 설정을 이미지로 캡처하면 된다. 이렇게 생성된 커스텀 AMI는 동일한 설정이 필요한 다른 인스턴스를 생성할 때 재사용할 수 있어, 일관된 환경을 유지할 수 있다. 또한, 커스텀 AMI는 보안 설정, 네트워크 구성, 애플리케이션 설치 등이 미리 설정되어 있어, 새로운 인스턴스를 생성할 때마다 반복적으로 설정할 필요가 없다.
AMI는 세 가지 주요 구성 요소로 이루어져 있다.
첫째, 루트 볼륨을 포함한 하나 이상의 EBS 스냅샷 또는 인스턴스 스토어 기반 루트 볼륨이다. 이는 인스턴스의 운영 체제와 애플리케이션을 포함한 모든 데이터를 저장한다.
둘째, 런치 퍼미션(Launch Permission)으로, 이는 해당 AMI를 사용할 수 있는 AWS 계정을 지정한다. 이를 통해 사용자는 자신의 AMI를 다른 사용자와 공유할 수 있다.
셋째, 블록 디바이스 맵핑(Block Device Mapping)으로, 이는 인스턴스 시작 시 연결할 추가적인 EBS 볼륨이나 인스턴스 스토어 디바이스를 정의한다.
EC2 인스턴스 유형과 패밀리
Amazon EC2는 다양한 워크로드를 처리할 수 있도록 여러 인스턴스 유형과 패밀리를 제공한다. 각 인스턴스 유형은 CPU, 메모리, 스토리지, 네트워크 성능 등이 다르기 때문에 사용자는 자신의 애플리케이션 요구 사항에 맞는 인스턴스를 선택할 수 있다. 여기서는 EC2 인스턴스 유형과 패밀리에 대해 상세하게 설명한다.
먼저, 인스턴스 유형은 크게 여섯 가지 카테고리로 나눌 수 있다. 각 카테고리는 특정한 워크로드에 최적화되어 있으며, 각각의 인스턴스 패밀리는 다양한 크기로 제공된다.
범용 인스턴스(General Purpose Instances)
범용 인스턴스는 CPU, 메모리, 네트워크 리소스가 균형 있게 제공되므로, 다양한 워크로드에 적합하다. 이 유형의 대표적인 인스턴스 패밀리에는 t4g, t3, m6g, m5 등이 있다.
t4g 및 t3 인스턴스: 저렴한 비용으로 가변적인 워크로드를 처리할 수 있는 버스트 가능 인스턴스이다. 주로 웹 서버, 개발 및 테스트 환경에 사용된다.
m6g 및 m5 인스턴스: 균형 잡힌 리소스가 필요할 때 사용되며, 웹 서버, 애플리케이션 서버, 작은 데이터베이스 등에 적합하다.
컴퓨팅 최적화 인스턴스(Compute Optimized Instances)
컴퓨팅 최적화 인스턴스는 높은 성능의 CPU를 제공하여 컴퓨팅 집약적인 애플리케이션에 적합하다. 이 유형의 대표적인 인스턴스 패밀리에는 c6g, c5 등이 있다.
c6g 및 c5 인스턴스: 높은 컴퓨팅 성능이 필요한 애플리케이션에 사용되며, 예를 들어, 고성능 웹 서버, 과학적 모델링, 분산 분석, 머신 러닝 추론 등에 적합하다.
메모리 최적화 인스턴스(Memory Optimized Instances)
메모리 최적화 인스턴스는 높은 메모리 용량을 제공하여 메모리 집약적인 애플리케이션에 적합하다. 이 유형의 대표적인 인스턴스 패밀리에는 r6g, r5, x1e, z1d 등이 있다.
r6g 및 r5 인스턴스: 인메모리 데이터베이스, 빅 데이터 처리, 메모리 집약적인 고성능 컴퓨팅 등에 사용된다.
x1e 인스턴스: 초대형 인메모리 데이터베이스, 고성능 분석 애플리케이션 등에 적합하다.
z1d 인스턴스: 높은 클럭 속도와 많은 메모리가 필요한 워크로드에 적합하다.
가속화 컴퓨팅 인스턴스(Accelerated Computing Instances)
가속화 컴퓨팅 인스턴스는 GPU, FPGA 등을 사용하여 그래픽 처리, 데이터 패턴 매칭, 딥 러닝 추론 및 훈련 등 가속화된 컴퓨팅 작업에 적합하다. 이 유형의 대표적인 인스턴스 패밀리에는 p4, p3, g4, f1 등이 있다.
p4 및 p3 인스턴스: 딥 러닝 모델의 훈련 및 추론, 고성능 컴퓨팅 시뮬레이션, 고성능 데이터 분석 등에 사용된다.
g4 인스턴스: 머신 러닝 추론, 그래픽 집약적인 애플리케이션, 비디오 트랜스코딩 등에 적합하다.
f1 인스턴스: FPGA를 사용한 커스텀 하드웨어 가속이 필요한 워크로드에 사용된다.
스토리지 최적화 인스턴스(Storage Optimized Instances)
스토리지 최적화 인스턴스는 대용량의 로컬 스토리지가 필요한 워크로드에 적합하다. 이 유형의 대표적인 인스턴스 패밀리에는 i3, d2, h1 등이 있다.
i3 인스턴스: 고성능 NoSQL 데이터베이스, 데이터 웨어하우징, 분산 파일 시스템 등에 적합하다.
d2 인스턴스: 대용량 데이터 집합의 분석, 데이터 웨어하우징, 로그 처리 등에 사용된다.
h1 인스턴스: 고성능 데이터 처리 및 분석, 분산 파일 시스템 등에 적합하다.
버스트 가능 인스턴스(Burstable Performance Instances)
버스트 가능 인스턴스는 CPU 크레딧 시스템을 사용하여 필요 시 추가 컴퓨팅 파워를 제공한다. 이 유형의 대표적인 인스턴스 패밀리에는 t4g, t3가 있다.
t4g 및 t3 인스턴스: 일상적인 사용량은 낮지만, 간헐적으로 높은 CPU 성능이 필요한 워크로드에 적합하다. 웹 사이트, 마이크로서비스, 개발 및 테스트 환경 등에 사용된다.
예약 인스턴스와 스팟 인스턴스
예약 인스턴스는 사용자가 일정 기간 동안 특정 유형의 인스턴스를 예약하여 사용할 수 있는 방법이다. 일반적으로 1년 또는 3년 기간 동안 예약할 수 있으며, 이 기간 동안 해당 인스턴스를 지속적으로 사용할 수 있는 권한을 얻는다. 예약 인스턴스는 온디맨드 인스턴스보다 비용이 저렴하며, 사용자는 장기적인 계획에 맞춰 리소스를 예측 가능하게 사용할 수 있다. 예약 인스턴스를 사용하면 장기적인 워크로드에 대해 안정적인 비용 절감 효과를 기대할 수 있다.
반면, 스팟 인스턴스는 AWS의 유휴 컴퓨팅 용량을 활용하는 방식이다. AWS는 데이터 센터에 유휴 상태로 있는 인스턴스를 스팟 시장에 저렴한 가격으로 제공하며, 사용자는 이를 입찰하여 사용할 수 있다. 스팟 인스턴스는 온디맨드 인스턴스에 비해 최대 90%까지 비용을 절감할 수 있는 장점이 있다. 하지만 스팟 인스턴스는 사용 가능 여부가 유동적이며, AWS가 해당 인스턴스를 다시 필요로 할 경우 언제든지 중단될 수 있다.
따라서 스팟 인스턴스는 비즈니스적으로 중요한 작업보다는 유연하게 중단될 수 있는 작업, 예를 들어 데이터 분석, 배치 처리, 대규모 분산 처리 작업 등에 적합하다. AWS는 스팟 인스턴스가 종료되기 약 2분 전에 사용자에게 사전 통보를 제공하는 기능을 제공한다. 이러한 2분 통보는 애플리케이션이 중단에 대비할 수 있도록 도와주며, 중요한 데이터를 저장하거나 작업 상태를 보존할 수 있는 시간을 제공한다.
요약
Amazon EC2 개요: Amazon EC2는 AWS의 가상 서버 서비스로, 사용자가 클라우드에서 서버를 생성하고 관리할 수 있게 한다. 확장성과 유연성이 뛰어나며, 다양한 워크로드에 맞는 인스턴스 유형을 제공한다. 초기 투자 없이 필요한 만큼의 컴퓨팅 파워를 사용하고 비용을 절감할 수 있다.
AMI (Amazon Machine Image): EC2 인스턴스를 생성하려면 AMI를 선택해야 하며, 이는 운영 체제, 애플리케이션 서버 및 모든 설정 정보를 포함한다. 사용자는 자신의 요구에 맞는 운영 체제와 소프트웨어 스택을 선택할 수 있으며, 커스텀 AMI를 만들어 일관된 환경을 유지할 수 있다.
EC2 인스턴스 유형과 패밀리: EC2는 다양한 워크로드를 처리할 수 있도록 여러 인스턴스 유형과 패밀리를 제공한다. 범용, 컴퓨팅 최적화, 메모리 최적화, 가속화 컴퓨팅, 스토리지 최적화, 버스트 가능 인스턴스 등이 있으며, 각 유형은 특정 워크로드에 최적화되어 있다.