[infra/terraform] aws 네트워크 구조 - ALB, VPC, 서브넷, 보안그룹
지난 글까지 Docker 이미지가 생성되고, ECR에 저장되고, ECS(Fargate)가 실행해서 컨테이너가 뜨는 과정까지 살펴봤다.
그런데… 컨테이너가 떠 있다고 해서 바로 외부에서 접속되는 건 아니다. 중간에 반드시 이해해야 할 AWS 네트워크 구조가 있다.
이 글에서는 AWS 네트워크를 구성하는 4개의 핵심 요소 — VPC, Subnet, Security Group, ALB를 한 번에 정리해보겠다!

VPC (Virtual Private Cloud)란?
VPC는 AWS 안에서 나만 사용하는 독립 네트워크 공간이다. 내가 쓰는 AWS 자원(EC2, RDS, ECS 등)은 전부 “VPC 안에만” 존재한다.
이걸 집으로 비유하면:
- VPC = 아파트 단지
- 그 안의 건물, 방, 주차장 = AWS 리소스들
VPC가 있으면 좋은 점:
- 나만의 독립 네트워크 공간 확보
- IP 대역 내가 원하는 대로 구성 가능
- 보안 규칙을 완전히 커스터마이징
Subnet이란?
VPC가 아파트 단지라면, 서브넷은 동(빌딩) 같은 개념이다. AWS에서는 보통 서브넷을 2개로 나눈다:
- Public Subnet → 외부 인터넷과 직접 연결됨
ALB, NAT Gateway 같은 리소스가 여기 배치됨 - Private Subnet → 외부에서 직접 접근 불가
ECS, RDS 같은 서비스는 보안 때문에 Private에 둠
AWS VPC를 아래처럼 구성한 이유는 간단하다:
| Public Subnet | ALB, NAT Gateway | 외부랑 직접 통신해야 함 |
| Private Subnet | ECS Fargate, RDS | 외부에서 접근되면 위험 |
이 구조는 99% 실무에서 쓰는 표준 패턴이다.
Security Group이란?
Security Group(SG)은 리소스에 붙는 방화벽이다. 간단히 누가 들어올 수 있는지, 어떤 포트를 열지를 정하는 규칙이다. 이 SG설정은 매우매우 중요하다. 아무나 들어오면 안되기 때문이다!! 그래서 아래와 같이 SG를 설정한다.
예를 들면:
ALB SG
- 80, 443 포트(HTTP/HTTPS) 열기
- 전 세계(0.0.0.0/0)에서 요청 받을 수 있음
→ 웹사이트니까
ECS 앱 SG
- 오직 ALB SG만 접근 허용
→ 외부에서 ECS로 직접 요청 불가
→ ALB를 통해서만 접근 가능
RDS DB SG
- 오직 ECS 앱 SG만 접근 허용
→ DB 해킹 방지
이렇게 엄격하게 접근을 제한하는 것이 클라우드 보안의 핵심이다.
ALB (Application Load Balancer)이란?
ALB는 모든 요청이 통과하는 대문이다. 외부 요청은 이렇게 흐른다:
클라이언트 → ALB → (헬스 체크 확인) → ECS 컨테이너
ALB가 하는 일은 크게 3가지가 있다.
1) HTTPS 인증서(ACM) 연결
url로 들어오는 HTTPS 요청을 처리한다.
즉, 인증서(SSL)를 ALB에 연결해준 덕분에 우리 서비스는 HTTPS 트래픽을 사용할 수 있게 되는 것이다!
2) Target Group을 보고 어떤 ECS로 보낼지 결정
여기서 target group이란 ALB가 트래픽을 보낼 목표(타겟)들을 모아둔 그룹으로, 어떤 타입의 타겟인지 (EC2, IP, ECS 등),타겟들의 주소 (IP + 포트), 헬스 체크 경로 (/actuator/health 같은 거), 프로토콜 (HTTP/HTTPS) 등을 갖고있다. ALB는 요청을 혼자 처리하지 않는다. 요청을 반드시 Target Group → ECS Task로 넘긴다.
3) 헬스 체크 후 “살아있는 컨테이너”에게만 요청 전달
ECS 컨테이너가 살아있는지 계속 체크한다.
Spring Boot의 /actuator/health를 확인해서 OK일 때만 트래픽을 연결한다. 만약 컨테이너가 죽어 있으면?
- ALB가 요청을 보내지 않음
- ECS가 새 컨테이너를 자동으로 띄움
- 서비스는 다운되지 않음
그래서 !! ALB + ECS 조합은 자동으로 무중단 배포를 지원한다!! 대박이다
흐름 정리
사용자 요청
↓
[ALB] ― HTTPS 수신 / 인증서 적용 / 헬스체크
↓
(Target Group)
↓
[ECS Fargate Task] ― 컨테이너 실행
↓
(Private Subnet 내부)
↓
[RDS] DB 접속 허용 (SG 기반)
이 전체 설계가 바로 현대적인 AWS 배포 구조의 정석이다.
마무리
- VPC = 네트워크 전체 공간
- Subnet = Public / Private 구역
- Security Group = 리소스 방화벽
- ALB = HTTPS 트래픽 관문 & 라우팅
- ECS(Fargate) = 컨테이너 실행 엔진
- ECR = 이미지 저장소
- RDS = DB
이것들을 이해하면
“도커 → 배포 → 네트워크 → 인증서 → DB” 전체 구조가 완전하게 연결된다!!