티스토리 뷰
AWS VPC
VPC는 AWS라는 거대한 대지 위에 세우는 나만의 개인 단지입니다.
누구나 들어올 수 있는 광장이 아니라, 내가 허락한 사람만, 내가 만든 규칙대로만 움직일 수 있는 가상 네트워크 공간입니다.
여기에 EC2, RDS 등을 올려 보안적으로 통제된 환경을 만듭니다.
퍼블릭/프라이빗 서브넷 구분
| 구분 | 인터넷 접속 | 예시 용도 | 필요 구성요소 |
| 퍼블릭 서브넷 | 외부에서 직접 접속 가능 | 웹 서버/로드밸런서 | 인터넷 게이트웨이 + 퍼블릭IP |
| 프라이빗 서브넷 | 외부에서 직접 접속 불가 | DB/내부 API/ 백엔드 작업 서버 | NAT 게이트웨이(나갈때만) |
인터넷 게이트웨이, NAT, 라우팅 정리
| 구분 | 설명 |
| Internet Gateway(IGW) | 양방향으로 퍼블릭 서브넷이 인터넷과 연결되게 해 줍니다. |
| NAT Gateway | 단방향으로 내부에서 외부로 프라이빗 서브넷이 나갈 수 있게 해 줍니다. |
| Route Table | 어떤 트래픽을 어디로 보낼지 경로를 설정입니다, |
퍼블릭, 프라이빗에 애플리케이션 서버 구성
AWS 권장은 ALB는 퍼블릭, 애플리케이션 서버는 프라이빗입니다.
하지만 소규모는 퍼블릭 서브넷에 넣어서 해도 된다. NAT GW가 비용이기 때문입니다,
서버 흐름도
사용자 → IGW → ALB(퍼블릭) → 서버(프라이빗) → RDS(프라이빗) → 응답 반환(같은 경로 반대로)
여기서 NAT GW는 ALB가 프록시 역할을 해서 통신을 중개해 주기 때문에 NAT 필요 없습니다.
IGW는 오직 퍼블릭 IP가 있는 리소스만 인터넷과 통신하게 해 줍니다.
프라이빗 서버는 IGW를 직접 사용할 수 없고 외부로 나가야 할 경우 반드시 NAT GW를 거쳐야 합니다.

NAT GW 사용
애플리케이션 서버에서 외부 API 호출할 때 필요합니다.
예를 들면 스케줄러(Cron)로 실행된 배치가 외부 API 호출할 때 필요합니다.
즉 애플리케이션이 직접 외부로 나가야 하기 때문이다.
SNAT은 NAT GW가 프라이빗 서버의 사설 IP를 자신의 공인 IP로 바꿔서 인터넷으로 대신 보내줍니다.
프라이빗 → NAT → IGW → 인터넷

Route 테이블
어떤 IP 대역으로 가는 트래픽을 어디로 보낼지 결정하는 네트워크의 길안내 지도이며 퍼블릭/ 프라이빗 서브넷은 CIDR 대역으로 구분하는 것이 아니라, 라우터 테이블에서 0.0.0.0/0이 어디로 향하느냐 IGW, NAT에 따라 구분됩니다.
라우터 테이블이 하는 일
| 상황 | 라우터 테이블 역할 | 비유 |
| 퍼블릭 서브넷에서 인터넷으로 나가야 할 때 | 0.0.0.0/0을 IGW로 보냄 | 모르는 주소는 다 정문으로 |
| 프라이빗 서브넷에서 외부 API 요청 | 0.0.0.0/0에서 NAT GW로 보냄 | 밖으로 나갈 건 주방 뒷문으로 |
| 내부 통신( 같은 VPC안 EC2 | VPC CIDR에서 Local로 유지 | 같은 아파트 단지 안이면 그냥 바로 이동 |
만약 프라이빗 서버에 퍼블릭 IP를 할당한다면?
비용으로 인해 NAT GW를 사용하지 않기 위해 프라이빗 서버에 퍼블릭 IP를 추가로 할당해 NAT GW를 사용하지 않다면 프라이빗 서버가 아닌 퍼블릭 서버입니다.
프라이빗 서버를 사용하는 이유
인터넷 어디서든 접속 시도가 가능해집니다.
보안 그룹으로 막아도 포트 스캐닝 공격이 가능합니다.
설계상 프라이빗 서브넷은 외부에서 절대 접근 불가능해야 하는데 퍼블릭 IP를 붙이면 컨셉 자체가 붕괴됩니다.
모든 외부 요청이 직접 해당 서버로 들어오니 로드밸런싱이나 방화벽 통제가 불가능합니다.
CIDR 대역란
IP 주소를 범위로 표현하는 방식
| 표현 | 의미 | 범위 |
| 10.0.0.0/16 | 앞의 16비트(10.0) 고정,나머지는 변경가능 | 10.0.0.0 ~ 10.0.255.255(약 65,536개 IP) |
| 10.0.1.0/24 | 앞의 24비트(10.0.1) 고정, 마지막만 변경 가능 | 10.0.1.0 ~ 10.0.1.255(256개 IP) |
VPC와 서브넷의 관계(CIDR)
VPC는 사설 네트워크 공간 전체 서브넷은 그 공간을 분할한 더 작은 네트워크입니다.
VPC CIDR을 10.0.0.0/16으로 지정하면 이 VPC에서는 10.0.0.0 ~ 10.0.255.255 범위의 IP만 사용할 수 있습니다.
서브넷은 이 범위안에서 /24, /20등으로 더 잘게 쪼개어 만듭니다.
'Backend' 카테고리의 다른 글
| 클릭 대신 테라폼으로 인프라 관리하기 (0) | 2025.10.17 |
|---|---|
| JPA에서 JDBC로 전환했더니 성능이 10배 빨라졌다 (0) | 2025.10.14 |
| 왜 나는 RestClient를 선택했는가 (0) | 2025.09.23 |
| 쿠버네티스 핵심 개념 정리와 마이크로서비스 이해 (0) | 2025.09.19 |
| Spring Boot에서 Redis 캐시 적용부터 Cluster 운영까지 (1) | 2025.09.12 |
- Total
- Today
- Yesterday
- isdigit
- isalpha
- zip
- Python
- If
- Lower
- Method
- Upper
- bool
- Built-in Functions
- find
- operators
- function
- permutations
- combinations
- counter
- for
- Lambda
- index
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |