AMI와 EC2
1. AMI (Amazon Machine Image)
1) AMI의 정의
AMI는 EC2 인스턴스를 실행하기 위한 템플릿이다. 운영체제, 애플리케이션, 구성 정보가 포함되어 있어, 이를 바탕으로 동일한 환경을 필요로 하는 여러 인스턴스를 쉽게 생성할 수 있다.
2) 유연성과 확장성 확보
AMI를 활용하면 여러 인스턴스에 동일한 이미지를 적용하여 일관된 환경을 빠르게 구성할 수 있다. 예를 들어, 사용자가 직접 만든 AMI를 Auto Scaling에 적용하면 트래픽 증가 시점을 감지해 자동으로 동일 환경의 인스턴스를 스케일 아웃할 수 있다.
3) AMI 선택 시 고려 요소
- 운영체제: Linux, Windows 등 사용하려는 운영체제가 무엇인지 확인해야 한다.
- 리전: AMI는 리전에 따라 사용 가능한 이미지가 다를 수 있으므로, 배포할 리전을 정확히 설정해야 한다.
- 프로세서 아키텍처: x86, ARM(Graviton) 등 원하는 프로세서 아키텍처를 선택해야 한다.
- 시작 권한: 공유된 AMI인지, 퍼블릭 AMI인지, 프라이빗 AMI인지에 따라 접근 권한이 달라진다.
- 루트 디바이스 유형: EBS 기반인지, 인스턴스 스토어 기반인지 확인한다.
- 가상화 유형: HVM, PV 등 지원되는 가상화 유형을 확인해야 한다.
2. EC2의 생명주기
EC2 인스턴스는 특정 상태에서 시작되어 여러 단계를 거치며 동작하고 종료된다. 각 단계별 특징은 다음과 같다.
- Pending
- 인스턴스를 생성할 때, AWS가 물리적으로 사용할 서버 리소스를 할당한다.
- 인스턴스가 처음 구동되거나 재시작할 때도 Pending 상태로 잠시 머문다.
- Running
- 인스턴스가 정상적으로 켜진 상태이다.
- 이 상태에서부터 사용 요금(EC2 사용료)이 발생한다.
- Stop
- 인스턴스를 일시적으로 중지한 상태이다.
- EBS 기반 인스턴스인 경우 Stop 기능을 사용할 수 있다(인스턴스 스토어 기반이면 불가능).
- 인스턴스 사용 요금은 발생하지 않지만, EBS 볼륨 사용료는 계속 청구된다.
- Terminate(종료)
- 인스턴스를 완전히 종료하고 관련 정보를 삭제한다.
- 해당 인스턴스에 연결된 EBS 볼륨도 기본적으로 삭제된다(설정에 따라 보존할 수도 있다).
- Reboot
- 인스턴스를 재부팅할 때, Pending 상태로 전환되지 않는다.
- 내부 OS와 연결된 자원만 재시작하므로 새로운 물리적 서버를 탐색하지 않는다.
인스턴스를 중지(Stop)하면 나중에 같은 인스턴스를 다시 시작할 수 있지만, 종료(Terminate)하면 완전히 삭제되어 복구가 불가능하므로 주의가 필요하다.
3. EC2
3.1 EC2 Family Type
EC2 인스턴스 패밀리는 사용 목적에 따라 다양한 사양을 제공한다.
- General Purpose
- CPU, 메모리, 네트워크 성능 간의 균형이 필요한 일반적인 워크로드에 적합하다.
- Compute Optimized
- 연산 성능이 중요한 애플리케이션에 특화되어 있다.
이 외에도 Memory Optimized, Storage Optimized 등 다양한 패밀리가 존재하며, 애플리케이션에 필요한 리소스 요구사항에 따라 적합한 패밀리를 선택한다.
3.2 EC2 Type
EC2 인스턴스 타입 이름은 보통 {패밀리}{세대}{추가정보}.{사이즈} 형식으로 구성된다.
- 예시: t4g.micro
- t: 인스턴스 패밀리(General Purpose 계열)
- 4: 세대(generation). 세대가 올라갈수록 리소스나 비용 최적화가 개선된다.
- g: Graviton 프로세서를 의미한다.
- micro: 인스턴스 사이즈로, CPU, 메모리 등 성능과 비용에 영향을 준다.
리전에 따라 지원하는 인스턴스 타입이 달라질 수 있으므로, 실제 배포 시에는 해당 리전에 원하는 타입이 제공되는지 확인해야 한다. 일반적으로 T 시리즈나 M 시리즈가 범용적으로 많이 사용된다.