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 종료 방법]

  1. One-time request (일회성 요청)
  2. 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 을 사용하면 여러개의 런치 풀과 여러 인스턴스 유형을 정의할 수 있다.