AWS
[AWS] EC2
배씌
2025. 9. 19. 16:41
EC2 란?
EC2(Elastic Compute Cloud) -> 인프라 구조형 서비스
즉, EC2 는 하나의 서비스가 아님. 많은 서비스를 포함.
- EC2 : 가상 머신 대여
- EBS : 데이터를 저장할 수 있는 가상 드라이브
- ELB : 로드밸런싱 모듈
- ASG : 오토 스케일링을 통해 서비스 확장
⚙️ EC2 초기 설정
- OS : Linux / Windows / mac
- CPU
- RAM
- 저장 용량
- 네트워크 : EBS & EFS
- 하드웨어 : EC2 Instance Store
- Network card : 네트워크 속도 / 공용 IP
- Firewall Rules : 방화벽 규칙 (보안그룹)
- Bootstrap script : 초기 설정 용 User Data
-> 원하는대로 가상머신 옵션을 선택하여 대여 가능
👤 EC2 User Data
EC2 인스턴스에 부팅될 때 실행되는 스크립트 또는 데이터를 의미. 주로 EC2 인스턴스의 초기 설정을 자동화하는 데 사용됨.
- EC2 User data : script를 사용하여 인스턴스를 bootstrap(부트스트래핑)을 할 수 있음.
- bootstrapping: 머신이 작동될 때 명령을 시작하는 것, 부트 작업을 자동화하기 때문에 부트스트래핑이라는 이름을 갖게 됨.
- 스크립트는 처음 시작할 때 한 번만 실행되고 다시 실행되지 않음.
- 인스턴스를 부팅할 때 자동화하는 작업들?
- 업데이트, 설치, 인터넷에서 파일 설치 등
User Data는 EC2 인스턴스 시작 시에만 사용되며, 인스턴스가 시작된 후에는 수정할 수 없다. 또한 User Data는 암호화되지 않은 텍스트로 저장되므로, 민감 정보 포함 ❌
✅ EC2 인스턴스 종류
[인스턴스 타입]
- General Purpose (범용)
- Compute Optimized (컴퓨팅 최적화)
- Memory Optimized (메모리 최적화)
- Accelerated Computing (가속화된 컴퓨팅)
- Storage Optimized (스토리지 최적화)
- Instance Features (인스턴스 기능)
- Measuring Instance Performance (인스턴스 성능 측정)
[인스턴스 네이밍 규칙]
m5.2xlarge
- m : instance class
- 5 : 인스턴스 세대
- 2xlarge : 인스턴스 크기
1. General Purpose (범용)
- 웹 서버나 코드 레파지토리 같은 다양한 작업에 적합함. -> 가장 무난
- 컴퓨팅, 메모리, 네트워크 간의 균형도 잘 맞음.
- ex) t2.micro
2. Compute Optimized (컴퓨팅 최적화)
- 컴퓨터 집약적인 애플리케이션에 최적화된 인스턴스. -> (고성능, 머신러닝, 게임서버 등)
- 고성능 프로세서의 활용
- Batch processing workloads
- Media transcoding
- High performace web server
- Hight performance computing (HPC)
- Scientific modeling & machine learning
- Dedicated gaming servers
- C로 시작하는 인스턴스 이름을 가지고 있음(ex: C5, C6)
3. Memory Optimized (메모리 최적화)
- 메모리에서 대규모 데이터 세트를 처리하는 워크로드를 위한 빠른 성능을 제공함. -> (인 메모리, 데이터베이스)
- 사용 사례
- High performance, relational/non-relational databases
- Distributed web scale cache stores
- In-memory databases optimized for BI (business intelligence)
- Applications performing real-time processing of big unstrutured data
- R로 시작하는 인스턴스 이름을 가지고 있음 + X1, Z1 (대용량 메모리)
4. Storage Optimized (스토리지 최적화)
- 로컬 스토리지에서 매우 큰 데이터 세트에 대해 많은 순차적 읽기 및 쓰기 액세스를 요구하는 워크로드를 위해 설계됨. -> (Redis, NoSQL)
- 사용 사례
- High frequency online transcation processing (OLTP) systems
- Relational & NoSQL databases
- Cache for in-memory databases (ex: Redis)
- Data warehousing applications
- Distributed file systems
🔐 Security Groups (보안 그룹)
-> EC2 인스턴스의 "방화벽" 이다.
- 보안 그룹은 AWS에서 네트워크 보안을 실행하는데 핵심이 됨.
- EC2 인스턴스에 들어오고 나가는 트래픽을 제어함.
- 보안 그룹은 허용(allow) 규칙만 포함함.
- IP 주소나 다른 보안 그룹을 참조할 수 있음. (보안 그룹끼리 서로 참조 가능)
[보안 규제]
- Ports : 포트
- IP ranges - 승인된 IP 범위 (IPv4, IPv6)
- Inbound network - 인바운드 규칙 (외부 -> 인스턴스)
- Outbound network - 아웃바운드 규칙 (인스턴스 -> 외부)
* 보안 그룹 - 알아두면 좋은 것들
1. 여러 인스턴스에 연결 가능
2. 특정 지역마다 각각 설정 -> 지역 변경 시 보안 그룹 다시 생성 필요
3. 보안 그룹은 EC2 외부에 있음. -> 트래픽이 차단되면 EC2는 트래픽을 볼 수 조차 없다.
4. SSH 액세스 전용 보안 그룹을 만드는 것이 좋다.
5. 타임 아웃 문제가 발생하면 보안 그룹 문제일 가능성이 높다!
6. 기본적으로 모든 인바운드 트래픽은 차단 / 아웃바운드 트래픽은 승인됨
🧾 EC2 인스턴스 구매 옵션
- On-Demand Instances : 일반적으로 사용하는 인스턴스, 비용 예측 가능, 초 단위 비용 지불
- Reserved (1 & 3년) : 장기간 사용해야할 때
- Saving Plans (1 & 3년) : 절약 플랜
- Spot Instances : 아주 짧은 사용 기간, 저렴, 인스턴스 손실 위험
- Dedicated Hosts : 물리적 서버 전체를 예약, 인스턴스 배치 제어
- Dedicated Instances : 다른 고객과의 하드웨어 공유가 없음.
- Capacity Reservations : 원하는 기간 동안 특정 AZ(Availability Zone)에 용량 예약 가능.
1. EC2 On-Demand Instances
- 사용한 만큼 지불.
- Linux / Windows: 1분 이후 초 단위로 청구
- 기타 : 시간 단위로 청구
- 비용은 가장 많이 발생, 바로 지불은 X
-> 단기적이고, 중단 없는 워크로드가 필요할 때, 또는 애플리케이션의 거동을 예측할 수 없을 때 추천
2. EC2 Reserved Instances
- 온디맨드(On-Demand) 인스턴스에 비해 최대 72% 할인
- 특정 속성 예약 (Instance Type, Region, Tenancy, OS)
- 예약 기간 : 1년 or 3년
- 지불 방법 : 선결제, 부분 선결제, 후불
* Convertible Reserved Instances (전환형 예약 인스턴스)
- 인스턴스 속성들을 사용 중에 변경 가능
- 최대 66% 할인
3. EC2 Savings Plans (절약 플랜)
- 장기간 사용 시 할인 가능
- 1년 or 3년 동안 시간당 $10 약정
- 사용량이 한도를 넘어서게 되면 On-demand 가격으로 청구.
- 특정한 instance family & AWS region으로 고정. (ex. M5 in us-east-1)
4. EC2 Spot Instances
- 가장 큰 할인율 (최대 90% 할인)
- 사용자가 지정한 최대 가격보다 높아지면, 인스턴스가 종료될 수 있음
- AWS에서 가장 비용 효율적인 인스턴스
-> 중요한 작업이나, 데이터베이스에는 적절하지 않음.
5. EC2 Dedicated Hosts
- EC2 인스턴스 용량이 완전히 사용자 전용으로 할당된 물리적 서버
- 구매 옵션
- On-demand: 초당 비용 지불
- Reserved: 1 or 3 yesrs(후불 결제, 부분 선결제, 전액 선결제)
- 가장 비싼 옵션
6. EC2 Dedicated Instances
- 사용자 전용 하드웨어에서 인스턴스가 실행
- 동일한 계정 내 다른 인스턴스와 하드웨어를 공유할 수 있음.
Dedicated Instance는 사용자 전용 인스턴스를 자신의 하드웨어에 가지고,
Dedicated Host 는 물리적 서버자체에 접근권을 가진다.
7. EC2 Capacity Reservations
- 지정된 특정 AZ에서 필요한 기간 동안 On-demand 인스턴스 용량 예약
- 필요할 때 언제든지 EC2 용량에 액세스할 수 있음.
- 약정 기간이 없으며(원하는 때에 생성/취소 가능), 요금 할인 X
- 인스턴스를 실행하든 안 하든 On-demand 요금이 부과됨.
-> 특정 AZ에서 실행해야 하는 단기적이고 중단되지 않는 워크로드에 적합
🎯 EC2 Spot Instance 심층 분석
- On-Demand 대비 최대 90% 할인
- max spot price를 설정. current spot price < max spot price일 때 인스턴스를 얻을 수 있음.
- 현재 spot 가격이 최대 가격보다 높은 경우 2분의 유예 시간 동안 인스턴스를 중지하거나 종료
- Spot Block : 지정 시간 동안 스팟 인스턴스 차단 (1~6시간)
- 주 사용 목적 : 배치 작업, 데이터 분석, 장애 복원이 용이한 작업들
[Spot Instance 종료 방법]
- One-time request (일회성 요청)
- Persistent request (영구 인스턴스 요청)
- Spot request가 취소되기 위해서는 open, active, disabled 상태여야만 한다. (failed, cancelled, closed ❌)
- Spot request를 취소하더라도 인스턴스가 종료되지는 않는다.
- 따라서, 먼저 Spot 요청을 취소한 다음, 연관된 Spot Instance를 종료해야 한다.
🧑🧑🧒 Spot Fleet
- Spot Fleets = set of Spot Instance + (optional) On-Demand Instance
- Spot Fleet은 가격 제약 조건을 충족하며 대상 용량을 맞추려고 시도한다.
- Spot Instance 할당 전략
- lowestPrice: 가장 적은 비용을 가진 풀에서부터 (비용 최적화, 짧은 워크로드)
- diversified: 모든 풀에 분산 (가용성 우수, 긴 워크로드)
- capacityOptimized: 용량 최적화
- priceCapacityOptimized (recommended): 가장 높은 용량을 가진 풀을 선택한 다음 가장 낮은 가격의 풀을 선택(대부분의 워크로드에 가장 적합함)
-> Spot Fleet 을 사용하면 여러개의 런치 풀과 여러 인스턴스 유형을 정의할 수 있다.