본문 바로가기

개인공부

[AWS] 5. EC2 기반 컴퓨팅 서비스 이해하기

이번에는 AWS의 핵심 중 핵심, EC2를 알아보자


1. EC2 개념

EC2란?

Amazon EC2(Elastic Compute Cloud)는 AWS에서 제공하는 가상 머신 서비스다.
EC2 인스턴스 = 클라우드 위의 가상 서버 한 대.

주요 특징:

  • 필요할 때 생성하고, 필요 없을 때 삭제
  • 리눅스, 윈도우 등 다양한 OS 선택 가능
  • 콘솔 클릭 몇 번이나 CLI 명령어로 빠르게 배포
  • 온디맨드, 예약, 스팟 등 다양한 요금 옵션

EC2 인스턴스 구성요소

EC2 인스턴스는 혼자 동작할 수 없다. 다음 리소스들과 함께 구성된다.

구성 요소 설명
AMI OS + SW 환경 이미지 (리눅스, 윈도우 등)
인스턴스 타입 CPU, 메모리, 네트워크 성능 조합 (예: t2.micro, m5.large)
EBS 볼륨 EC2에 붙는 디스크 (데이터 저장 공간)
보안 그룹 인스턴스의 방화벽 (포트 허용 설정)
키 페어 SSH 접속용 비밀 키
네트워크 환경 리전, 가용영역, VPC, 서브넷
사용자 데이터 인스턴스 첫 시작 시 자동 실행되는 스크립트

네트워크 환경 — VPC

EC2 인스턴스는 항상 VPC(Virtual Private Cloud) 안에 존재한다.
VPC는 EC2가 위치한 가상 네트워크로, 서브넷, IP 주소, 보안 그룹 등 네트워크 환경을 정의한다.


2. AMI (Amazon Machine Image)

AMI란?

EC2 인스턴스를 생성할 때 기반이 되는 이미지다.
OS + 소프트웨어 환경이 담겨 있고, "OS 설치 CD 같은 역할"이라고 보면 된다.

AMI는 EC2 인스턴스를 부팅하고 구성하기 위한 청사진 이미지다.

AMI 소스 3가지

1) AWS 공식 AMI

  • AWS가 관리하는 운영체제별 표준 이미지
  • Amazon Linux, Ubuntu, Windows, Red Hat, SUSE, Debian 등
  • 보안 패치·업데이트가 정기적으로 반영됨
  • EC2 생성 시 Quick Start 탭에서 바로 선택 가능

📸 [스크린샷: EC2 인스턴스 시작 — Quick Start AMI 선택 화면]

2) Marketplace AMI

  • AWS Marketplace에 등록된 서드파티 소프트웨어 포함 이미지
  • 보안 솔루션, 개발도구, 상용 앱 등이 미리 설치되어 있음
  • 소프트웨어 라이선스 포함 비용이 추가될 수 있음

3) 사용자 정의 AMI (Custom AMI)

  • 기존 EC2 인스턴스를 커스터마이징한 후 직접 이미지로 저장
  • 이후 여러 인스턴스에 복제 배포 가능
  • 예: 웹 서버 + 보안 패치 + 설정 완료 상태 → AMI로 저장
aws ec2 create-image --instance-id i-0123456789abcdef0 --name "MyWebServerAMI"

💡 실습 중 느낀 점

  • Custom AMI는 실무에서 Golden Image 패턴으로 많이 쓰인다. 매번 인스턴스를 띄울 때마다 패키지 설치하고 설정하는 건 비효율적이다. 한 번 세팅 완료한 상태를 AMI로 찍어두면 동일 환경을 몇 초 만에 복제할 수 있다.
  • AMI는 리전에 종속된다. 서울 리전에서 만든 AMI를 오하이오에서 쓰려면 aws ec2 copy-image로 복사해야 한다. 이 점은 처음 알았다.

3. 인스턴스 타입

인스턴스 타입이란?

EC2 인스턴스의 CPU, 메모리, 스토리지, 네트워크 성능을 결정하는 조합이다.
각 타입은 특정 워크로드에 최적화되어 있고, 인스턴스 패밀리로 분류된다.

이름 형식

m5a.large를 분해하면:

구성 의미
m 인스턴스 패밀리 (범용)
5 세대
a 접두사 (AMD 프로세서)
large 크기

 

주요 인스턴스 패밀리

패밀리 특징 사용 사례 예시
t (버스팅 범용) 저렴하고 탄력적 성능 소규모 웹서버, 개발/테스트 t2.micro, t3.small
m (균형형 범용) 가장 범용적 (균형형) 웹/앱 서버, 일반 워크로드 m5.large, m6i.xlarge
c (컴퓨팅 최적화) 높은 vCPU 비율, 고성능 CPU 고성능 웹 서버, 배치 처리, 컴파일 c5.large, c6g.2xlarge
r (메모리 최적화) 메모리 대용량 구성 인메모리 캐시, DB 서버, 분석 r5.large, r6a.4xlarge
x / z (고메모리 특화) 초대용량 메모리 SAP HANA, 고속 인메모리 DB x1.16xlarge, z1d.large
g / p / inf / trn (GPU/ML) GPU 탑재, AI/ML 최적화 ML 추론/학습, 그래픽 렌더링 g4dn.xlarge
i / d / h (스토리지 최적화) 로컬 SSD, 고속 I/O NoSQL, 로그 수집, 분산 파일시스템 i3.large, d3en.2xlarge

인스턴스 크기

같은 패밀리 내에서 크기를 올리면 vCPU, 메모리, 네트워크 대역폭이 비례 증가한다.

예를 들어:

  • m5.2xlargem5.xlarge의 vCPU 두 배
  • m5.12xlargem5.xlarge보다 12배 강력

네트워크 대역폭도 인스턴스 크기에 연계된다. 네트워크 집약적 작업이라면 인스턴스 사양을 높여야 할 수 있다.

💡 실습 중 느낀 점

  • 프리티어에서 쓸 수 있는 건 t2.micro 또는 t3.micro 정도다. t 시리즈는 버스팅(burstable) 모델이라 평소에는 기본 CPU 크레딧으로 동작하다가 부하가 걸리면 크레딧을 소모해서 성능을 끌어올린다. 크레딧이 바닥나면 성능이 급격히 떨어지므로, 지속적으로 CPU를 많이 쓰는 워크로드에는 부적합하다.
  • Azure의 VM 시리즈(B, D, E, F 등)와 대응 관계가 있다. AWS t ≈ Azure B (버스팅), AWS m ≈ Azure D (범용), AWS c ≈ Azure F (컴퓨팅), AWS r ≈ Azure E (메모리). 두 클라우드를 비교하면서 보니 이해가 빨랐다.

4. 인스턴스 스토리지

EC2에는 두 가지 스토리지 타입이 있다.

EBS (Elastic Block Store)

  • 네트워크 기반의 블록 스토리지
  • 인스턴스 중지(Stop) 후에도 데이터 유지 가능
  • EC2 인스턴스에 볼륨(디스크)처럼 연결
  • EC2와 독립적으로 존재하며 스냅샷으로 백업 가능

인스턴스 스토어 (Instance Store)

  • EC2의 물리적 호스트에 연결된 임시 저장소
  • 인스턴스 중지(Stop) 시 데이터 소실
  • 매우 빠른 I/O 속도 (SSD 기반)

EBS 볼륨 타입

타입 설명
gp3 / gp2 범용 SSD. 대부분의 워크로드에 적합
io2 / io1 고성능 SSD. 고성능 IOPS가 필요할 때
st1 처리량 최적화 HDD (빅데이터 등)
sc1 콜드 HDD (저비용, 접근 빈도 낮음)

💡 실습 중 느낀 점

  • EBS와 Instance Store의 핵심 차이: 데이터 영속성. EBS는 인스턴스를 Stop해도 데이터가 살아있지만, Instance Store는 Stop 순간 데이터가 날아간다. 캐시나 임시 버퍼에는 Instance Store, 영구 데이터에는 반드시 EBS를 써야 한다.
  • gp3가 gp2보다 후속 세대인데, gp3는 IOPS와 throughput을 독립적으로 설정할 수 있다. gp2는 볼륨 크기에 따라 IOPS가 자동 결정되는 반면, gp3는 3,000 IOPS 기본 제공에 추가 비용으로 최대 16,000까지 올릴 수 있다. 신규 생성 시 gp3를 쓰는 게 합리적이다.

5. EC2 인스턴스 요금제

요금제 종류

온디맨드 (On-Demand)

  • 사용한 만큼만 비용 지불
  • 유연하지만 단가가 가장 높음

Savings Plan / 예약 인스턴스 (Reserved)

  • 1년 또는 3년 약정
  • 최대 72% 할인
  • 장기 예측 가능한 워크로드에 적합

스팟 인스턴스 (Spot)

  • AWS 여유 자원을 경매식으로 사용
  • 최대 90% 할인이지만 중단 가능성 있음
  • 2분 전 공지 후 회수될 수 있음

비용·안정성·유연성의 균형을 고려해서 선택해야 한다.

AWS 프리 티어 EC2 조건

  • AWS 가입 후 12개월간 일부 서비스 무료
  • t2.micro 또는 t3.micro (리전마다 다름) — 750시간/월 무료
  • Amazon Linux, Ubuntu, Windows 등 일부 AMI 무료
  • EBS 저장소 30GB까지 무료 (초과 시 과금)
  • 매월 1GB 아웃바운드 데이터 전송 무료

750시간 = 24시간 × 31일 = 744시간이므로, 한 대를 계속 켜 두어도 무료다.
단, 두 개 이상 인스턴스를 동시에 실행하면 750시간을 나눠 쓰게 된다.

주의사항:

  • EBS 30GB 초과 → 추가 과금
  • 인스턴스를 중지하지 않고 방치 → 예상치 못한 비용
  • Windows Server는 라이선스 포함 비용이 별도로 과금될 수 있음
  • 프리티어 혜택은 리전별로 차이가 날 수 있음

💡 실습 중 느낀 점

  • 프리티어 750시간은 넉넉해 보이지만, 인스턴스 2개를 동시에 24시간 돌리면 한 달에 1,488시간이 되어 738시간이 초과 과금된다. 실습할 때 인스턴스를 여러 개 띄워놓고 깜빡 잊으면 요금 폭탄을 맞을 수 있다.
  • Stop과 Terminate의 차이를 확실히 인식해야 한다. Stop은 EBS 비용이 계속 발생하고, Terminate는 인스턴스와 루트 EBS까지 삭제된다. 실습 끝나면 Terminate가 안전하다.

6. EC2 인스턴스 생명주기

EC2 인스턴스는 다음과 같은 상태로 전이된다:

pendingrunningstoppingstoppedshutting-downterminated

상태 설명 과금 여부
pending 인스턴스 시작 중 X
running 실행 중 O
stopping 중지 진행 중 X
stopped 중지됨 (EBS는 유지) EBS만 과금
shutting-down 종료 진행 중 X
terminated 완전 삭제됨 X

핵심 포인트:

  • Stop: 인스턴스를 끄고 EBS는 유지 (EBS 비용 발생)
  • Terminate: 인스턴스와 루트 EBS까지 삭제 (데이터 손실 위험)
  • 종료 시 EBS가 삭제되지 않도록 설정하면 데이터 보존 가능
  • Reboot은 running → running 전환이라 public IP가 바뀌지 않음

7. 보안 그룹 (Security Group)

보안 그룹이란?

EC2 인스턴스를 보호하는 가상 방화벽이다.
인스턴스를 띄우면 반드시 최소 1개의 보안 그룹과 연결된다.

핵심 특성:

  • 인바운드: 들어오는 트래픽 제어. 기본적으로 모든 인바운드 차단
  • 아웃바운드: 나가는 트래픽 제어. 기본적으로 모든 아웃바운드 허용
  • 허용 규칙만 작성 가능 (거부 규칙은 없음)
  • 상태 저장(Stateful): 인바운드를 열면 해당 연결의 응답 트래픽은 자동 허용

인바운드 규칙 예시

포트 프로토콜 소스 용도
22 TCP 내 IP SSH 접속
80 TCP 0.0.0.0/0 HTTP (전 세계 허용)
443 TCP 0.0.0.0/0 HTTPS (전 세계 허용)
3389 TCP 내 IP RDP (Windows 원격 접속)

 

 


📸 [스크린샷: EC2 인스턴스 — 보안그룹 설정]


📸 [스크린샷: EC2 인스턴스 — 보안그룹 생성 (인스턴스 생성시 선택 가능)]


💡 실습 중 느낀 점

  • SSH(22번 포트)를 0.0.0.0/0(전 세계)으로 열어두면 브루트포스 공격에 노출된다. 반드시 내 IP로 제한하거나, AWS Systems Manager Session Manager를 사용해서 SSH 없이 접속하는 것이 좋다.
  • 보안 그룹은 Stateful이고, NACL(Network ACL)은 Stateless다. 보안 그룹에서 인바운드 22번을 열면 응답은 자동 허용되지만, NACL에서는 인바운드와 아웃바운드를 각각 명시해야 한다. 이 차이는 시험에도 자주 나온다.
  • 보안 그룹은 인스턴스 레벨, NACL은 서브넷 레벨이라는 점도 구분해야 한다.

8. EC2 인스턴스 생성 & 접속 실습

생성 절차

  1. AMI 선택 (예: Windows Server 2025 Base)
  2. 인스턴스 유형 선택 (예: t3.micro)
  3. 키 페어 생성 및 다운로드 (.pem)
  4. 보안 그룹 설정 (RDP 3389 허용)
  5. 스토리지 설정 (EBS 기본)
  6. "인스턴스 시작" 클릭

📸 [스크린샷: EC2 인스턴스 시작 화면 — 이름 및 태그, AMI 선택(Windows), 인스턴스 유형(t3.micro)]

접속 절차 (Windows RDP)

  1. EC2 콘솔에서 인스턴스 선택 → "연결" 클릭
  2. RDP 클라이언트 탭에서 퍼블릭 DNS 확인
  3. "암호 가져오기" → .pem 키 업로드 → 비밀번호 복호화
  4. RDP 클라이언트(원격 데스크톱)에서 퍼블릭 DNS + 비밀번호로 접속

📸 [스크린샷: RDP로 Windows EC2 인스턴스에 접속 완료]

보안 그룹에서 RDP 포트(3389)가 허용되어 있어야 접속이 된다.

 

이후 리눅스 인스턴스를 생성하여 연결해보았는데, aws workshop studio는 접속이 불가능하여 사용자 데이터는 작성하지 못했다.

📸 [스크린샷: 리눅스 인스턴스 접속 완료]

💡 실습 중 느낀 점

  • 키 페어 .pem 파일은 생성 시 딱 한 번만 다운로드 가능하다. 잃어버리면 해당 키 페어로는 인스턴스에 접근할 수 없다. 바로 안전한 곳에 백업해둬야 한다.
  • Windows 인스턴스는 생성 후 "암호 가져오기"가 활성화되기까지 4~5분 정도 걸린다. 생성 직후에 누르면 "아직 사용할 수 없습니다" 메시지가 뜬다. 처음엔 뭔가 잘못된 줄 알고 당황했다.
  • 실습이 끝나면 반드시 인스턴스를 Terminate 해야 한다. Stop만 하면 EBS 비용이 계속 나간다.

학습 정리

  • EC2는 AWS의 가상 서버 서비스로, AMI·인스턴스 타입·EBS·보안 그룹·VPC 등의 구성요소가 함께 동작한다
  • AMI는 인스턴스의 청사진이며, AWS 공식 / Marketplace / Custom 세 가지 소스가 있다
  • 인스턴스 타입은 패밀리 + 세대 + 접두사.크기 형식이고, 워크로드 특성에 맞는 패밀리를 선택해야 한다
  • 스토리지는 EBS(영구) vs Instance Store(임시)로 나뉘며, 데이터 영속성이 핵심 차이다
  • 요금제는 온디맨드·예약·스팟 세 가지이고, 프리티어는 t2.micro/t3.micro 750시간/월 무료
  • 인스턴스 생명주기에서 Stop(EBS 유지)과 Terminate(완전 삭제)의 차이를 정확히 알아야 한다
  • 보안 그룹은 Stateful 가상 방화벽으로, 인바운드는 기본 차단 / 아웃바운드는 기본 허용이다