$ yh.log
AWS EC2 Basics 정리

AWS EC2 Basics 정리

AWSEC2Security GroupDVA-C02

작성자 : 오예환 | 작성일 : 2026-01-04 | 수정일 : 2026-01-04

1. Amazon EC2 개요

🤔 EC2가 뭔가요?

비유로 이해하기: EC2는 클라우드에 있는 내 컴퓨터입니다.

  • 집에서 데스크톱 PC를 사는 대신
  • AWS에서 가상 컴퓨터를 빌려서 사용
  • 필요할 때 켜고, 안 쓸 때 끄면 사용한 만큼만 요금!

EC2 = Elastic Compute Cloud

┌─────────────────────────────────────────────────────────────────┐
                         EC2의 의미

  Elastic  = 탄력적으로 크기 조절 가능
  Compute  = 컴퓨팅 파워 (CPU, RAM)                               │
  Cloud    = 클라우드에서 제공

  = Infrastructure as a Service (IaaS)                          │
  = 인프라를 서비스로 제공

└─────────────────────────────────────────────────────────────────┘

EC2와 함께 사용하는 것들

서비스역할비유
EC2가상 머신컴퓨터 본체
EBS가상 디스크하드드라이브
ELB로드 밸런서트래픽 분배기
ASG오토 스케일링자동 증설

왜 EC2를 알아야 하나요?

EC2는 AWS의 가장 기본!
 
온프레미스 (예전 방식):
서버 구매 설치 유지보수 업그레이드...
💰 초기 비용 높음, 🕐 시간 오래 걸림
 
클라우드 (EC2):
클릭 서버 생성! 필요 없으면 삭제
💰 사용한 만큼만, 만에 생성

2. EC2 구성 옵션

🤔 EC2를 만들 때 뭘 선택해야 하나요?

비유로 이해하기: 조립 컴퓨터 주문과 같습니다.

  • CPU는 어떤 걸로? (인스턴스 타입)
  • RAM은 몇 GB? (메모리)
  • 하드디스크는? (스토리지)
  • 운영체제는? (AMI)

선택 옵션

┌─────────────────────────────────────────────────────────────────┐
                    EC2 인스턴스 구성 요소

  ┌─────────────────────────────────────────────────────────┐
  운영체제 (OS)                                           │   │
  ├─ Linux (Amazon Linux, Ubuntu, RHEL...)               │   │
  ├─ Windows Server
  └─ Mac OS
  └─────────────────────────────────────────────────────────┘

  ┌─────────────────────────────────────────────────────────┐
  컴퓨팅 파워
  ├─ CPU (vCPU 개수)                                     │   │
  └─ RAM (메모리 크기)                                    │   │
  └─────────────────────────────────────────────────────────┘

  ┌─────────────────────────────────────────────────────────┐
  스토리지
  ├─ EBS (네트워크 드라이브, 영구 저장)                   │   │
  ├─ EFS (공유 파일 시스템)                               │   │
  └─ Instance Store (로컬 SSD, 임시 저장)                 │   │
  └─────────────────────────────────────────────────────────┘

  ┌─────────────────────────────────────────────────────────┐
  네트워크
  ├─ 네트워크 카드 속도
  └─ Public IP (외부 접근용)                              │   │
  └─────────────────────────────────────────────────────────┘

  ┌─────────────────────────────────────────────────────────┐
  방화벽
  └─ Security Group (접근 제어)                           │   │
  └─────────────────────────────────────────────────────────┘

  ┌─────────────────────────────────────────────────────────┐
  부트스트랩 스크립트
  └─ EC2 User Data (첫 시작 실행할 명령)               │   │
  └─────────────────────────────────────────────────────────┘

└─────────────────────────────────────────────────────────────────┘

3. EC2 User Data

🤔 User Data가 뭔가요?

비유로 이해하기: 새 컴퓨터 초기 설정 자동화와 같습니다.

  • 새 컴퓨터 사면: 윈도우 업데이트, 프로그램 설치, 설정...
  • User Data: EC2가 처음 시작할 때 자동으로 실행할 스크립트

User Data 특징

특징설명
실행 시점인스턴스 첫 시작 시 1번만
실행 권한root 사용자로 실행
용도초기 설정 자동화

사용 예시

#!/bin/bash
# EC2 User Data 예시
 
# 1. 시스템 업데이트
yum update -y
 
# 2. 웹 서버 설치
yum install -y httpd
 
# 3. 웹 서버 시작
systemctl start httpd
systemctl enable httpd
 
# 4. 간단한 웹 페이지 생성
echo "<h1>Hello from EC2!</h1>" > /var/www/html/index.html

실제 사용 사례

사례User Data 내용
웹 서버nginx/apache 설치, 설정
Node.js 앱Node.js 설치, 앱 클론, npm install
Docker 컨테이너Docker 설치, 이미지 pull, 컨테이너 실행
모니터링CloudWatch Agent 설치

초보자 팁: User Data는 디버깅이 어려움! → 복잡한 설정은 AMI로 미리 만들어두는 것 추천


4. EC2 인스턴스 타입

🤔 인스턴스 타입이 뭔가요?

비유로 이해하기: 자동차 등급과 같습니다.

  • 경차(t2.micro): 가볍고 저렴, 일상용
  • 세단(m5.large): 균형 잡힌 성능
  • 스포츠카(c5.xlarge): 고성능, 빠름
  • 트럭(r5.xlarge): 짐(메모리) 많이 싣기

인스턴스 타입 명명 규칙

┌─────────────────────────────────────────────────────────────────┐
                    m5.2xlarge 분석

                    m   5   .   2xlarge

       └─ 크기 (nano < micro < small
            < medium < large < xlarge
            < 2xlarge < 4xlarge ...)    │

   └─ 세대 (숫자가 클수록 최신, 좋음)      │

                    └─ 인스턴스 클래스 (용도별 분류)               │
                       t = 범용 (버스트)                          │
                       m = 범용 (일반)                            │
                       c = 컴퓨팅 최적화
                       r = 메모리 최적화
                       i = 스토리지 최적화

└─────────────────────────────────────────────────────────────────┘

인스턴스 타입 카테고리

1️⃣ General Purpose (범용) - T, M 시리즈

균형 잡힌 성능: CPU, 메모리, 네트워크
 
사용 사례:
├─ 서버
├─ 코드 저장소
├─ 개발/테스트 환경
└─ 소규모 데이터베이스
 
예시: t2.micro, t3.medium, m5.large, m6i.xlarge

t2.micro는 무료 티어! → AWS 학습 시 사용

2️⃣ Compute Optimized (컴퓨팅 최적화) - C 시리즈

CPU 성능이 중요한 작업
 
사용 사례:
├─ 배치 처리
├─ 미디어 트랜스코딩 (영상 변환)
├─ 고성능 서버
├─ 과학 모델링 / 머신러닝
├─ 게임 서버
└─ HPC (고성능 컴퓨팅)
 
예시: c5.large, c6i.xlarge, c7g.2xlarge

3️⃣ Memory Optimized (메모리 최적화) - R, X, z 시리즈

메모리에서 대용량 데이터 처리
 
사용 사례:
├─ 고성능 데이터베이스
├─ 분산 캐시 (Redis, Memcached)
├─ 인메모리 데이터베이스
├─ 실시간 빅데이터 처리
└─ BI (비즈니스 인텔리전스)
 
예시: r5.large, r6i.xlarge, x2idn.xlarge

4️⃣ Storage Optimized (스토리지 최적화) - I, D, H 시리즈

대용량 데이터 읽기/쓰기
 
사용 사례:
├─ OLTP 시스템 (고빈도 트랜잭션)
├─ 관계형/NoSQL 데이터베이스
├─ 데이터 웨어하우스
├─ 분산 파일 시스템
└─ 캐시 (Redis )
 
예시: i3.large, d2.xlarge, h1.2xlarge

인스턴스 타입 비교 표

인스턴스vCPU메모리용도
t2.micro11 GB무료 티어, 테스트
t3.medium24 GB개발 환경
m5.large28 GB범용 프로덕션
c5.xlarge48 GBCPU 집약적
r5.large216 GB메모리 집약적

💡 유용한 사이트: https://instances.vantage.sh 모든 EC2 인스턴스 타입과 가격 비교!


5. Security Groups (보안 그룹)

🤔 Security Group이 뭔가요?

비유로 이해하기: EC2 앞에 있는 보안 경비원입니다.

  • "22번 포트로 오는 사람? 들어와도 됨"
  • "80번 포트로 오는 모든 사람? OK"
  • "3306번 포트? 특정 IP만 허용"

Security Group = 방화벽

┌─────────────────────────────────────────────────────────────────┐
                    Security Group 개념

                     ┌───────────────┐
     인터넷
   Security         ┌──────────┐
  ┌────┴────┐    Group   EC2
 요청 1  │──────▶│   (방화벽)    │────────▶│ Instance │      │
 Port 80
  └─────────┘ ┌───────────┐         └──────────┘
 Inbound:
  ┌─────────┐ Port 80 ✅│
 요청 2  │──────▶│ Port 22 ✅│
  │Port 3306│ Port 3306❌│
  └─────────┘ └───────────┘

 ┌───────────┐
 Outbound:
 All
 └───────────┘
                    └───────────────┘

  ⚠️ 차단된 요청은 EC2에 도달하지도 않음!

└─────────────────────────────────────────────────────────────────┘

Security Group 규칙

규칙설명
Inbound외부 → EC2 (들어오는 트래픽)
OutboundEC2 → 외부 (나가는 트래픽)

기본 설정

방향기본값
Inbound모두 차단
Outbound모두 허용

Security Group 규칙 예시

┌─────────────────────────────────────────────────────────────────┐
                    Inbound Rules 예시

  Type        Protocol   Port   Source            Description
  ─────────────────────────────────────────────────────────────
  SSH         TCP        22     My IP IP만 SSH
  HTTP        TCP        80     0.0.0.0/0         모든 곳에서
  HTTPS       TCP        443    0.0.0.0/0         모든 곳에서 HTTPS│
  Custom TCP  TCP        3000   0.0.0.0/0         Node.js 개발서버│
  MySQL       TCP        3306   sg-12345          특정 SG에서만

└─────────────────────────────────────────────────────────────────┘

Security Group 알아야 할 것들

✅ 알아야 할 특징

특징설명
다중 연결하나의 SG를 여러 EC2에 연결 가능
리전/VPC 종속다른 리전/VPC에서 사용 불가
EC2 외부트래픽이 차단되면 EC2는 모름
SSH용 SG 분리SSH(22)는 별도 SG로 관리 권장

🔍 트러블슈팅

문제: 애플리케이션에 접속이 돼요!
 
타임아웃 (Timeout):
 Security Group 문제일 확률 높음!
 해당 포트가 Inbound에 허용되어 있는지 확인
 
Connection Refused:
 Security Group은 OK
 애플리케이션이 돌아가거나 포트가 다름

Security Group 참조

다른 Security Group을 규칙에 사용 가능!

┌─────────────────────────────────────────────────────────────────┐
                    SG 참조 예시

  ┌──────────────────────────────────────────────┐
            Security Group 1
  Inbound:
  - Port 80 from SG-2
  - Port 80 from SG-3
  └──────────────────────────────────────────────┘

           ┌──────────────┼──────────────┐

      ┌─────────┐    ┌─────────┐    ┌─────────┐
  EC2 A  EC2 B  EC2 C
  SG-2  SG-2  SG-3
      └─────────┘    └─────────┘    └─────────┘

      (접근 가능)      (접근 가능)     (접근 불가)               │

  장점: IP가 바뀌어도 SG만 맞으면 OK!

└─────────────────────────────────────────────────────────────────┘

알아야 할 포트 번호

포트프로토콜용도
22SSHLinux 접속
21FTP파일 전송
22SFTP보안 파일 전송 (SSH 사용)
80HTTP웹 (비암호화)
443HTTPS웹 (암호화)
3389RDPWindows 접속
3306MySQLMySQL DB
5432PostgreSQLPostgreSQL DB

6. SSH 접속 방법

🤔 SSH가 뭔가요?

비유로 이해하기: 원격 리모컨과 같습니다.

  • TV 앞에 안 가도 리모컨으로 조작하듯이
  • EC2 앞에 안 가도 SSH로 명령 실행!

SSH 접속 방법 요약

OS방법
Mac / Linux터미널에서 ssh 명령
Windows ≥ 10PowerShell에서 ssh 명령
Windows < 10Putty 프로그램
모든 OSEC2 Instance Connect (브라우저)

SSH 접속 예시 (Mac/Linux)

# 1. 키 파일 권한 설정 (최초 1회)
chmod 400 my-key.pem
 
# 2. SSH 접속
ssh -i my-key.pem ec2-user@54.123.45.67
#     │            │          │
#     │            │          └─ EC2의 Public IP
#     │            └─ 사용자명 (Amazon Linux는 ec2-user)
#     └─ 키 파일 경로

EC2 Instance Connect

가장 쉬운 방법! 브라우저에서 바로 접속

┌─────────────────────────────────────────────────────────────────┐
                    EC2 Instance Connect

  1. AWS Console EC2 인스턴스 선택
  2. "Connect" 버튼 클릭
  3. "EC2 Instance Connect" 선택
  4. "Connect" 클릭

 장점:
  - 파일 필요 없음!
  - AWS가 임시 키를 자동 업로드
  - 브라우저에서 바로 터미널

  ⚠️ 주의:
  - Amazon Linux 2에서만 기본 지원
  - 포트 22는 여전히 열려 있어야 함!

└─────────────────────────────────────────────────────────────────┘

SSH 트러블슈팅

문제원인해결
타임아웃Security Group포트 22 Inbound 열기
Permission denied키 권한chmod 400 key.pem
Connection refusedSSH 서버EC2 상태 확인

7. EC2 구매 옵션

🤔 왜 여러 구매 옵션이 있나요?

비유로 이해하기: 호텔 예약과 같습니다.

  • 당일 예약 (On-Demand): 비싸지만 자유로움
  • 장기 계약 (Reserved): 저렴하지만 기간 약속
  • 빈 방 경매 (Spot): 매우 저렴하지만 언제든 쫓겨날 수 있음

구매 옵션 한눈에 보기

┌─────────────────────────────────────────────────────────────────┐
                    EC2 구매 옵션 비교

  비용

  ┌─────────────────┐
 Dedicated Host 전용 물리 서버 (가장 비쌈)             │
  └─────────────────┘
  ┌─────────────────┐
   On-Demand 정가 (시간당 결제)                     │
  └─────────────────┘
  ┌─────────────────┐
   Reserved 1~3년 약정 (최대 72% 할인)             │
  └─────────────────┘
  ┌─────────────────┐
  Savings Plans 사용량 약정 (최대 72% 할인)            │
  └─────────────────┘
  ┌─────────────────┐
     Spot 남는 자원 경매 (최대 90% 할인!)        │
  └─────────────────┘

  └─────────────────────────────────────────────────────────→
                                           안정성

└─────────────────────────────────────────────────────────────────┘

1️⃣ On-Demand (온디맨드)

특징:
├─ 사용한 만큼 결제 (Linux: 초당, Windows: 시간당)
├─ 가장 비쌈 (but 선결제 없음)
├─ 장기 약정 없음
└─ 언제든 시작/중지
 
추천 상황:
├─ 단기 워크로드
├─ 예측 불가능한 사용 패턴
└─ 개발/테스트 환경

2️⃣ Reserved Instances (예약 인스턴스)

특징:
├─ 1년 또는 3년 약정
├─ 최대 72% 할인
├─ 특정 인스턴스 타입/리전/OS 고정
└─ 선결제 옵션 (No/Partial/All Upfront)
 
추천 상황:
├─ 24/7 운영 서버
├─ 데이터베이스
└─ 예측 가능한 사용량
 
종류:
├─ Standard RI: 변경 불가, 할인 (72%)
└─ Convertible RI: 변경 가능, 할인 적음 (66%)

선결제 옵션:

옵션설명할인
No Upfront선결제 없음적음
Partial Upfront일부 선결제중간
All Upfront전액 선결제최대

3️⃣ Savings Plans (절감 플랜)

특징:
├─ "시간당 $10 쓸게요" 식으로 약정
├─ 최대 72% 할인 (RI와 동일)
├─ 인스턴스 패밀리 + 리전 고정
├─ 인스턴스 크기/OS/테넌시는 유연
└─ 초과 사용분은 On-Demand 가격
 
예시:
"us-east-1에서 M5 패밀리에 시간당 $10 약정"
 m5.large, m5.xlarge, m5.2xlarge 모두 사용 가능
 Linux, Windows 모두 가능

4️⃣ Spot Instances (스팟 인스턴스)

특징:
├─ 최대 90% 할인! (가장 저렴)
├─ 언제든 중단될 있음! ⚠️
├─ 남는 EC2 용량을 경매 방식으로
└─ 입찰가 < 현재가 인스턴스 종료됨
 
추천 상황:
├─ 배치 작업
├─ 데이터 분석
├─ 이미지 처리
├─ 분산 워크로드
└─ 시작/종료 시간이 유연한 작업
 
비추천:
├─ 데이터베이스
├─ 중요한 서비스
└─ 중단되면 되는 작업

5️⃣ Dedicated Hosts (전용 호스트)

특징:
├─ 물리 서버 전체를 단독 사용
├─ 가장 비쌈
├─ 서버 배치 제어 가능
└─ 소켓/코어 단위 라이선스에 적합
 
추천 상황:
├─ 라이선스 규정 준수 (BYOL)
├─ 규제/컴플라이언스 요구사항
└─ 물리 서버 격리 필요

6️⃣ Capacity Reservations (용량 예약)

특징:
├─ 특정 AZ에 용량 예약
├─ 할인 없음 (On-Demand 가격)
├─ 기간 약정 없음
├─ 사용 해도 요금 발생
└─ RI, Savings Plans와 결합 가능
 
추천 상황:
├─ 특정 AZ에 반드시 인스턴스 필요
├─ 재해 복구
└─ 중요 이벤트 대비

구매 옵션 비교표

옵션할인약정중단용도
On-Demand없음없음단기, 테스트
Reserved~72%1-3년24/7 서버, DB
Savings Plans~72%1-3년유연한 사용
Spot~90%없음배치, 분석
Dedicated Host~70%선택라이선스, 규제
Capacity Reservation없음없음용량 확보

호텔 비유로 정리

┌─────────────────────────────────────────────────────────────────┐
                    호텔 비유

  On-Demand      = 당일 예약, 정가
  Reserved       = 1년 계약, 할인 (매달 같은)                 │
  Savings Plans  = 1년 계약, 할인 (방 타입은 자유)               │
  Spot           = 경매 (쫓겨날  있음)                   │
  Dedicated Host = 호텔 건물 전체 대여
  Capacity Res.  = 예약만 (사용  해도 요금)                 │

└─────────────────────────────────────────────────────────────────┘

핵심 요약

인스턴스 타입 선택

용도타입시리즈
일반 웹 서버범용T, M
CPU 집약 (ML, 배치)컴퓨팅C
대용량 메모리 (DB, 캐시)메모리R, X
고성능 스토리지스토리지I, D

Security Group 핵심

항목기본값
Inbound모두 차단 ❌
Outbound모두 허용 ✅

구매 옵션 선택

상황추천
단기/테스트On-Demand
24/7 운영 서버Reserved
유연한 장기 사용Savings Plans
배치/분석 (중단 OK)Spot
라이선스 규정Dedicated Host