AWS 클라우드 기본 완벽 가이드: VPC, EC2, Auto Scaling, Security Group부터 실무 아키텍처까지

AWS 클라우드 기본 완벽 가이드: VPC, EC2, Auto Scaling, Security Group부터 실무 아키텍처까지

“VPC가 뭔가요?”, “Security Group과 NACL의 차이는?”, “Auto Scaling은 어떻게 동작하나요?” — 클라우드 인프라는 이제 백엔드 개발자의 필수 지식이다. AWS 기반 면접 질문은 신입에서도 빈번하게 출제된다.


1. AWS 기본 구조

1.1 리전과 가용 영역

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
┌─────────────────────────────────────────────────────────────────────┐
│                    AWS 글로벌 인프라                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  Region (리전)                                                      │
│  = 물리적으로 분리된 지리적 영역                                    │
│  예: ap-northeast-2 (서울), us-east-1 (버지니아)                    │
│                                                                     │
│  ┌─── Region: ap-northeast-2 (서울) ───────────────────────────┐   │
│  │                                                              │   │
│  │  ┌─── AZ-a ───┐  ┌─── AZ-b ───┐  ┌─── AZ-c ───┐         │   │
│  │  │ 데이터센터  │  │ 데이터센터  │  │ 데이터센터  │         │   │
│  │  │  그룹 1     │  │  그룹 2     │  │  그룹 3     │         │   │
│  │  └─────────────┘  └─────────────┘  └─────────────┘         │   │
│  │        ↕ 고속 전용 네트워크 ↕                                │   │
│  └──────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  Availability Zone (가용 영역)                                      │
│  = 리전 안의 독립된 데이터센터 그룹                                 │
│  = 각 AZ는 전력, 네트워크가 물리적으로 독립                        │
│  → 하나의 AZ에 장애가 나도 다른 AZ는 정상 동작                     │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

1.2 주요 서비스 분류

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌─────────────────────────────────────────────────────────────────────┐
│                    AWS 핵심 서비스 분류                               │
├──────────────────┬──────────────────────────────────────────────────┤
│ 분류             │ 서비스                                           │
├──────────────────┼──────────────────────────────────────────────────┤
│ 컴퓨팅           │ EC2, Lambda, ECS, EKS                           │
├──────────────────┼──────────────────────────────────────────────────┤
│ 네트워크         │ VPC, ELB, Route 53, CloudFront                  │
├──────────────────┼──────────────────────────────────────────────────┤
│ 스토리지         │ S3, EBS, EFS                                    │
├──────────────────┼──────────────────────────────────────────────────┤
│ 데이터베이스     │ RDS, DynamoDB, ElastiCache                      │
├──────────────────┼──────────────────────────────────────────────────┤
│ 보안/인증        │ IAM, KMS, WAF, Shield                           │
├──────────────────┼──────────────────────────────────────────────────┤
│ 모니터링         │ CloudWatch, CloudTrail                           │
├──────────────────┼──────────────────────────────────────────────────┤
│ 배포/자동화      │ CodeDeploy, CodePipeline, CloudFormation        │
└──────────────────┴──────────────────────────────────────────────────┘

2. VPC (Virtual Private Cloud)

2.1 VPC란

1
2
3
4
5
6
7
8
9
10
11
12
13
┌─────────────────────────────────────────────────────────────────────┐
│                       VPC 개념                                       │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  VPC = AWS 클라우드 내의 나만의 가상 네트워크                       │
│                                                                     │
│  • IP 대역(CIDR) 직접 설정  예: 10.0.0.0/16                       │
│  • 서브넷, 라우팅, 보안 규칙을 완전히 제어                          │
│  • 다른 VPC와 완전히 격리됨                                         │
│                                                                     │
│  비유: AWS라는 건물 안에 내 회사만의 전용 층을 구성하는 것          │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

2.2 VPC 핵심 구성 요소

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
┌─────────────────────────────────────────────────────────────────────┐
│                    VPC 아키텍처                                       │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  인터넷                                                             │
│    │                                                                │
│    ▼                                                                │
│  ┌──────────────────┐                                               │
│  │ Internet Gateway │  ← VPC와 인터넷을 연결하는 관문              │
│  └────────┬─────────┘                                               │
│           │                                                         │
│  ┌────────┴──────── VPC: 10.0.0.0/16 ──────────────────────────┐   │
│  │                                                              │   │
│  │  ┌─── Public Subnet (10.0.1.0/24) ──── AZ-a ─────────┐    │   │
│  │  │  • 인터넷과 직접 통신 가능                          │    │   │
│  │  │  • EC2 (웹 서버), NAT Gateway, ALB                  │    │   │
│  │  │  • 라우트: 0.0.0.0/0 → IGW                         │    │   │
│  │  └────────────────────────────┬────────────────────────┘    │   │
│  │                               │                              │   │
│  │                        ┌──────┴───────┐                      │   │
│  │                        │ NAT Gateway  │                      │   │
│  │                        └──────┬───────┘                      │   │
│  │                               │                              │   │
│  │  ┌─── Private Subnet (10.0.2.0/24) ── AZ-a ──────────┐    │   │
│  │  │  • 인터넷에서 직접 접근 불가                        │    │   │
│  │  │  • EC2 (WAS), RDS, ElastiCache                      │    │   │
│  │  │  • 라우트: 0.0.0.0/0 → NAT GW (아웃바운드만)       │    │   │
│  │  └─────────────────────────────────────────────────────┘    │   │
│  │                                                              │   │
│  └──────────────────────────────────────────────────────────────┘   │
│                                                                     │
│  Public Subnet  : IGW를 통해 인터넷 양방향 통신                     │
│  Private Subnet : NAT GW를 통해 아웃바운드만 가능 (보안 강화)       │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

2.3 라우팅 테이블

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌─────────────────────────────────────────────────────────────────────┐
│               라우팅 테이블 예시                                     │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  [Public Subnet 라우팅 테이블]                                      │
│  ┌────────────────────┬──────────────────────┐                      │
│  │ Destination        │ Target               │                      │
│  ├────────────────────┼──────────────────────┤                      │
│  │ 10.0.0.0/16        │ local                │ ← VPC 내부 통신     │
│  │ 0.0.0.0/0          │ igw-xxxxx            │ ← 그 외 → 인터넷   │
│  └────────────────────┴──────────────────────┘                      │
│                                                                     │
│  [Private Subnet 라우팅 테이블]                                     │
│  ┌────────────────────┬──────────────────────┐                      │
│  │ Destination        │ Target               │                      │
│  ├────────────────────┼──────────────────────┤                      │
│  │ 10.0.0.0/16        │ local                │ ← VPC 내부 통신     │
│  │ 0.0.0.0/0          │ nat-xxxxx            │ ← 그 외 → NAT GW   │
│  └────────────────────┴──────────────────────┘                      │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

3. Security Group vs NACL

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
┌─────────────────────────────────────────────────────────────────────┐
│              Security Group vs NACL 비교                             │
├──────────────────┬──────────────────────┬────────────────────────────┤
│ 항목             │ Security Group       │ NACL                       │
├──────────────────┼──────────────────────┼────────────────────────────┤
│ 적용 대상        │ 인스턴스 (ENI) 단위  │ 서브넷 단위                │
├──────────────────┼──────────────────────┼────────────────────────────┤
│ 상태             │ Stateful             │ Stateless                  │
│                  │ (응답 트래픽 자동    │ (인바운드/아웃바운드       │
│                  │  허용)               │  규칙 각각 필요)           │
├──────────────────┼──────────────────────┼────────────────────────────┤
│ 규칙 방식        │ 허용 규칙만          │ 허용 + 거부 규칙           │
│                  │ (화이트리스트)       │ (규칙 번호 순서대로 평가)  │
├──────────────────┼──────────────────────┼────────────────────────────┤
│ 기본 정책        │ 모든 인바운드 거부   │ 모든 트래픽 허용           │
│                  │ 모든 아웃바운드 허용 │ (기본 NACL)                │
├──────────────────┼──────────────────────┼────────────────────────────┤
│ 적용 시점        │ 인스턴스에 도달 전   │ 서브넷에 진입/이탈 시      │
├──────────────────┼──────────────────────┼────────────────────────────┤
│ 사용 빈도        │ 매우 자주 (필수)     │ 추가 방어층으로 사용       │
└──────────────────┴──────────────────────┴────────────────────────────┘

Stateful vs Stateless 이해

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
┌─────────────────────────────────────────────────────────────────────┐
│           Stateful (SG) vs Stateless (NACL)                         │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  [Security Group - Stateful]                                        │
│                                                                     │
│  클라이언트 ──→ [인바운드 허용: 80 포트] ──→ EC2                   │
│  클라이언트 ←── [응답 자동 허용]         ←── EC2                   │
│                                                                     │
│  → 인바운드를 허용하면 해당 응답은 아웃바운드 규칙 없이 자동 허용  │
│                                                                     │
│  ─────────────────────────────────────────────────────────         │
│                                                                     │
│  [NACL - Stateless]                                                 │
│                                                                     │
│  클라이언트 ──→ [인바운드 규칙: 80 허용]  ──→ 서브넷              │
│  클라이언트 ←── [아웃바운드 규칙: 필요!]  ←── 서브넷              │
│                                                                     │
│  → 인바운드와 아웃바운드를 각각 따로 설정해야 함                   │
│  → Ephemeral 포트(1024-65535)도 아웃바운드에서 열어야 응답 가능    │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Security Group 설정 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
┌─────────────────────────────────────────────────────────────────────┐
│          Security Group 실무 설정 예시                                │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  [Web Server SG]                                                    │
│  인바운드:                                                          │
│  │ 유형     │ 프로토콜 │ 포트  │ 소스             │                 │
│  ├──────────┼─────────┼───────┼─────────────────┤                  │
│  │ HTTP     │ TCP      │ 80    │ 0.0.0.0/0       │ ← 모든 곳       │
│  │ HTTPS    │ TCP      │ 443   │ 0.0.0.0/0       │ ← 모든 곳       │
│  │ SSH      │ TCP      │ 22    │ 211.xxx.x.x/32  │ ← 내 IP만       │
│                                                                     │
│  [WAS SG]                                                           │
│  인바운드:                                                          │
│  │ 유형     │ 프로토콜 │ 포트  │ 소스             │                 │
│  ├──────────┼─────────┼───────┼─────────────────┤                  │
│  │ Custom   │ TCP      │ 8080  │ sg-web-xxxxx    │ ← Web SG만      │
│                                                                     │
│  [DB SG]                                                            │
│  인바운드:                                                          │
│  │ 유형     │ 프로토콜 │ 포트  │ 소스             │                 │
│  ├──────────┼─────────┼───────┼─────────────────┤                  │
│  │ MySQL    │ TCP      │ 3306  │ sg-was-xxxxx    │ ← WAS SG만      │
│                                                                     │
│  → Security Group은 다른 SG를 소스로 참조 가능 (SG 체이닝)         │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

4. EC2 (Elastic Compute Cloud)

4.1 EC2 기본

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
┌─────────────────────────────────────────────────────────────────────┐
│                       EC2 핵심 개념                                   │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  EC2 = 클라우드에서 크기 조절 가능한 가상 서버                      │
│                                                                     │
│  주요 인스턴스 유형:                                                │
│  ┌──────────┬───────────────────────────────────────────────────┐   │
│  │ 유형     │ 특징                                              │   │
│  ├──────────┼───────────────────────────────────────────────────┤   │
│  │ t3/t4g   │ 범용 (버스트 가능), 소규모 웹/개발 서버          │   │
│  │ m6i      │ 범용 (균형), 중규모 애플리케이션                  │   │
│  │ c6i      │ 컴퓨팅 최적화, 배치 처리/연산 집약                │   │
│  │ r6i      │ 메모리 최적화, 대용량 캐시/DB                     │   │
│  │ g5       │ GPU, 머신러닝/그래픽                               │   │
│  └──────────┴───────────────────────────────────────────────────┘   │
│                                                                     │
│  AMI (Amazon Machine Image)                                         │
│  = EC2의 "골든 이미지" (OS + 설정 + 애플리케이션)                  │
│  → 한 번 설정한 환경을 이미지로 만들어 동일 서버를 빠르게 복제     │
│                                                                     │
│  Key Pair                                                           │
│  = SSH 접속용 공개키/개인키 쌍                                      │
│  → .pem 파일로 EC2에 SSH 접속                                      │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

4.2 EC2 초기 설정 흐름

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
┌─────────────────────────────────────────────────────────────────────┐
│                EC2 초기 배포 체크리스트                                │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  1. VPC & 서브넷 선택                                               │
│     └→ Private Subnet에 배치 (WAS는 외부 노출 X)                   │
│                                                                     │
│  2. AMI 선택                                                        │
│     └→ Amazon Linux 2023 또는 Ubuntu 22.04                         │
│                                                                     │
│  3. 인스턴스 유형 선택                                               │
│     └→ 개발: t3.micro / 운영: m6i.large~                           │
│                                                                     │
│  4. Security Group 설정                                             │
│     └→ 필요 포트만 최소한으로 개방                                  │
│                                                                     │
│  5. Key Pair 생성/선택                                              │
│     └→ SSH 접속용 (프라이빗 키 안전 보관!)                         │
│                                                                     │
│  6. EBS (스토리지) 설정                                             │
│     └→ gp3 타입, 용량 설정                                         │
│                                                                     │
│  7. IAM Role 연결                                                   │
│     └→ S3, CloudWatch 등 접근 권한 부여                            │
│                                                                     │
│  8. User Data (선택)                                                │
│     └→ 부팅 시 자동 실행 스크립트 (패키지 설치 등)                 │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5. Auto Scaling

5.1 Auto Scaling 동작 원리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
┌─────────────────────────────────────────────────────────────────────┐
│                    Auto Scaling 동작                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  사용자 요청 → ALB → Auto Scaling Group                            │
│                                                                     │
│  [평상시: 2대]                                                      │
│  ┌──────┐  ┌──────┐                                                │
│  │ EC2  │  │ EC2  │                                                │
│  │ #1   │  │ #2   │                                                │
│  └──────┘  └──────┘                                                │
│                                                                     │
│  [트래픽 증가 → Scale Out]                                          │
│  CloudWatch: CPU 사용률 > 70%                                       │
│                                                                     │
│  ┌──────┐  ┌──────┐  ┌──────┐  ┌──────┐                           │
│  │ EC2  │  │ EC2  │  │ EC2  │  │ EC2  │                           │
│  │ #1   │  │ #2   │  │ #3   │  │ #4   │  ← 자동 생성              │
│  └──────┘  └──────┘  └──────┘  └──────┘                           │
│                                                                     │
│  [트래픽 감소 → Scale In]                                           │
│  CloudWatch: CPU 사용률 < 30%                                       │
│                                                                     │
│  ┌──────┐  ┌──────┐                                                │
│  │ EC2  │  │ EC2  │  ← 자동 종료                                  │
│  │ #1   │  │ #2   │                                                │
│  └──────┘  └──────┘                                                │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

5.2 Auto Scaling 핵심 구성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
┌─────────────────────────────────────────────────────────────────────┐
│              Auto Scaling 구성 요소                                   │
├──────────────────────┬──────────────────────────────────────────────┤
│ 구성 요소            │ 설명                                         │
├──────────────────────┼──────────────────────────────────────────────┤
│ Launch Template      │ 어떤 EC2를 만들지 정의                       │
│                      │ (AMI, 인스턴스 유형, SG, User Data 등)       │
├──────────────────────┼──────────────────────────────────────────────┤
│ Auto Scaling Group   │ 인스턴스 그룹 관리                           │
│ (ASG)                │ → min / max / desired 용량 설정              │
├──────────────────────┼──────────────────────────────────────────────┤
│ Scaling Policy       │ 언제 확장/축소할지 규칙 정의                 │
│                      │                                              │
│                      │ • Target Tracking: CPU 70% 유지              │
│                      │ • Step Scaling: 임계치별 단계 확장           │
│                      │ • Scheduled: 특정 시간에 확장/축소           │
├──────────────────────┼──────────────────────────────────────────────┤
│ Health Check         │ 비정상 인스턴스 자동 교체                    │
│                      │ EC2 상태 체크 + ELB 헬스 체크                │
└──────────────────────┴──────────────────────────────────────────────┘

6. ELB (Elastic Load Balancer)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
┌─────────────────────────────────────────────────────────────────────┐
│                    ELB 종류 비교                                     │
├──────────────┬──────────────────────┬────────────────────────────────┤
│ 종류         │ 동작 계층            │ 특징                           │
├──────────────┼──────────────────────┼────────────────────────────────┤
│ ALB          │ Layer 7 (HTTP)       │ URL/Header 기반 라우팅         │
│ (Application)│                      │ 웹 애플리케이션에 최적         │
│              │                      │ /api → WAS, /static → 정적    │
├──────────────┼──────────────────────┼────────────────────────────────┤
│ NLB          │ Layer 4 (TCP/UDP)    │ 초고속, 고정 IP               │
│ (Network)    │                      │ 게임 서버, IoT 등              │
│              │                      │ 수백만 요청/초 처리 가능       │
├──────────────┼──────────────────────┼────────────────────────────────┤
│ CLB          │ Layer 4/7            │ 구세대, 신규 사용 비권장       │
│ (Classic)    │                      │ ALB/NLB로 대체                 │
└──────────────┴──────────────────────┴────────────────────────────────┘

ALB + Auto Scaling 구성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
┌─────────────────────────────────────────────────────────────────────┐
│             실무 배포 아키텍처                                        │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│              사용자                                                  │
│                │                                                    │
│                ▼                                                    │
│         ┌────────────┐                                              │
│         │ Route 53   │  DNS                                         │
│         └─────┬──────┘                                              │
│               ▼                                                     │
│         ┌────────────┐                                              │
│         │    ALB     │  HTTPS 종료 + 경로 기반 라우팅               │
│         └──┬────┬────┘                                              │
│            │    │                                                   │
│     ┌──────┘    └──────┐                                            │
│     ▼                  ▼                                            │
│  ┌──────┐          ┌──────┐                                        │
│  │ EC2  │          │ EC2  │   Auto Scaling Group                   │
│  │ AZ-a │          │ AZ-b │   (Multi-AZ 배치)                     │
│  └──┬───┘          └──┬───┘                                        │
│     │                  │                                            │
│     └────────┬─────────┘                                            │
│              ▼                                                      │
│       ┌────────────┐                                                │
│       │  RDS       │  Multi-AZ (자동 Failover)                     │
│       │  (MySQL)   │                                                │
│       └────────────┘                                                │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

7. S3와 IAM

7.1 S3 (Simple Storage Service)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
┌─────────────────────────────────────────────────────────────────────┐
│                       S3 핵심                                        │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  S3 = 무제한 용량의 객체 스토리지                                   │
│                                                                     │
│  • Bucket : 최상위 컨테이너 (글로벌 고유 이름)                     │
│  • Object : 파일 (최대 5TB)                                        │
│  • Key    : 객체의 경로 (예: images/profile/user1.jpg)             │
│                                                                     │
│  주요 용도:                                                         │
│  • 정적 파일 호스팅 (이미지, CSS, JS)                              │
│  • 백업/아카이브                                                    │
│  • 로그 저장                                                        │
│  • CloudFront(CDN)와 연동                                           │
│                                                                     │
│  스토리지 클래스:                                                   │
│  ┌──────────────────┬──────────────────────────────────┐            │
│  │ Standard         │ 자주 접근하는 데이터 (기본)      │            │
│  │ Standard-IA      │ 가끔 접근 (저렴, 검색 비용 있음) │            │
│  │ Glacier          │ 아카이브 (매우 저렴, 복원 느림)  │            │
│  └──────────────────┴──────────────────────────────────┘            │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

7.2 IAM (Identity and Access Management)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
┌─────────────────────────────────────────────────────────────────────┐
│                       IAM 핵심                                       │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  IAM = AWS 리소스 접근 권한 관리 서비스                              │
│                                                                     │
│  ┌──────────────┬──────────────────────────────────────────────┐    │
│  │ User         │ 사람 (개발자, 운영자)                        │    │
│  ├──────────────┼──────────────────────────────────────────────┤    │
│  │ Group        │ User의 집합 (Backend팀, DevOps팀)            │    │
│  ├──────────────┼──────────────────────────────────────────────┤    │
│  │ Role         │ 서비스/임시 사용자에 부여하는 권한            │    │
│  │              │ → EC2가 S3에 접근할 때 Role 사용             │    │
│  ├──────────────┼──────────────────────────────────────────────┤    │
│  │ Policy       │ 권한 정의 (JSON)                             │    │
│  │              │ → 어떤 리소스에 어떤 작업을 허용/거부         │    │
│  └──────────────┴──────────────────────────────────────────────┘    │
│                                                                     │
│  원칙: 최소 권한 원칙 (Least Privilege)                             │
│  → 필요한 권한만 최소한으로 부여                                    │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

면접에서 자주 묻는 질문

Q1. VPC가 무엇이고 왜 필요한가요?

VPC는 AWS 클라우드 내에 생성하는 가상 네트워크입니다. IP 대역, 서브넷, 라우팅, 보안 규칙을 직접 설정하여 네트워크를 완전히 제어할 수 있습니다. 다른 사용자의 리소스와 논리적으로 격리되므로, 보안을 확보하면서 원하는 네트워크 토폴로지를 구성할 수 있습니다.

Q2. Public Subnet과 Private Subnet의 차이는?

Public Subnet은 Internet Gateway로의 라우트가 있어 인터넷과 양방향 통신이 가능합니다. ALB, Bastion Host 등을 배치합니다. Private Subnet은 직접적인 인터넷 인바운드가 불가능하며, NAT Gateway를 통해 아웃바운드만 가능합니다. WAS, DB 등 보안이 중요한 리소스를 배치합니다.

Q3. Security Group과 NACL의 차이는?

Security Group은 인스턴스 단위의 Stateful 방화벽으로 허용 규칙만 설정합니다. 인바운드를 허용하면 응답 트래픽은 자동 허용됩니다. NACL은 서브넷 단위의 Stateless 방화벽으로 허용과 거부 규칙 모두 설정하며, 인바운드/아웃바운드를 각각 명시해야 합니다. 실무에서는 Security Group을 주로 사용하고, NACL은 추가 방어층으로 활용합니다.

Q4. Auto Scaling은 어떻게 동작하나요?

CloudWatch 메트릭(CPU, 메모리, 요청 수 등)을 모니터링하여 설정된 임계치를 넘으면 자동으로 EC2 인스턴스를 추가(Scale Out)하고, 트래픽이 줄면 축소(Scale In)합니다. Launch Template으로 어떤 EC2를 생성할지 정의하고, Scaling Policy로 언제 확장/축소할지 규칙을 설정합니다. 다중 AZ에 분산 배치하여 고가용성을 확보합니다.

Q5. ALB와 NLB의 차이는?

ALB는 Layer 7(HTTP) 로드밸런서로, URL 경로나 호스트 헤더 기반 라우팅이 가능합니다. 웹 애플리케이션에 최적화되어 있습니다. NLB는 Layer 4(TCP/UDP) 로드밸런서로, 초고성능과 고정 IP가 필요한 경우에 사용합니다. 일반적인 웹 서비스에는 ALB를, 게임 서버나 IoT 같은 비HTTP 트래픽에는 NLB를 선택합니다.

Q6. EC2에 배포할 때 보안 관점에서 주의할 점은?

Private Subnet에 WAS를 배치하고, Security Group으로 필요 포트만 최소 개방합니다. SSH는 Bastion Host를 통해서만 접근하고, 22번 포트를 전체 IP(0.0.0.0/0)에 개방하면 안 됩니다. IAM Role로 AWS 리소스 접근 권한을 관리하며, 액세스 키를 코드에 하드코딩하지 않습니다. 최소 권한 원칙을 항상 지킵니다.

Q7. 왜 Multi-AZ로 구성하나요?

하나의 AZ에 장애가 발생해도 서비스를 지속하기 위해서입니다. AZ는 물리적으로 독립된 데이터센터 그룹이므로, 한 AZ의 전력·네트워크 장애가 다른 AZ에 영향을 주지 않습니다. ALB와 Auto Scaling을 Multi-AZ로 구성하면 트래픽이 자동으로 정상 AZ로 분산되고, RDS Multi-AZ는 자동 Failover를 지원합니다.


핵심 정리: AWS 인프라의 기본은 VPC(네트워크 격리) → Subnet(공개/비공개 분리) → Security Group(접근 제어) → EC2(서버) → ALB(부하 분산) → Auto Scaling(자동 확장)이다. 보안은 최소 권한 원칙과 다중 방어층으로 확보한다.