1. VPC란 무엇인가
클라우드 운영 및 엔지니어를 준비하면서 가장 먼저 떠오른 부분은 "외부 요청이 서버까지 어떻게 들어오는가", "어떤 아키텍처를 가지고 있나"라는 궁금증이 먼저 들었던거 같습니다.
VPC(Virtual Private Cloud)는 클라우드 환경에서 사용하는 가상 네트워크 공간으로, 서버 및 로드밸런서 등 리소스들을 하나의 네트워크 범위로 묶기 위해 사용이 됩니다.
2. 왜 Public Subnet과 Private Subnet으로 나누는가?
서비스를 예로 든다면 외부 사용자와 직접 통신이 필요한 영역과 보안을 위해 외부 접근을 제한해야 하는 영역을 분리할 필요가 있습니다.
Public Subnet은 외부 인터넷과 연결되어 외부 요청을 받을수 있는 영역이며, Private Subnet은 외부에서 직접 접근할 수 없고 실제 서비스 서버를 보호하기 위한 영역으로 볼 수 있습니다.
이렇게 분리를 통하여 외부 접근 가능 영역과 접근이 불가능한 영역을 명확히 나눌 수 있으며, 보안성과 운영 안정성을 확보 할 수 있습니다.
3. 외부 -> 내부 트래픽 흐름
사용자가 서비스에 접속할 경우 트래픽은 다음과 같은 흐름을 가집니다.
WEB/APP과 같은 Client의 요청은 Internet Gateway를 통해 VPC로 유입되며, Public Subnet에 위치한 ALB(Application Load Balancer)가 해당 요청을 먼저 수신합니다.
이후 ALB는 헬스체크를 통과한 Private Subnet의 서버(EC2)로 트래픽을 전달합니다.
즉, 외부 요청은 서버로 직접 전달되지 않고 반드시 ALB를 거쳐서 내부로 전달되는 Flow를 가지고 있습니다.
4. 서버를 Private Subnet에 두는 이유
서버를 Public Subnet에 둘 경우 외부 사용자 누구나 접근이 가능해져 보안 위협이 커질 수 있습니다.
이 때문에 실제 서비스를 운영하는 서버는 Private Subnet에 배치하고, 외부 접근은 ALB를 통해서만 허용하게 합니다.
이를 통해 외부 접근을 통제하고 서버와 데이터를 보호할 수 있습니다.
5. 내부 -> 외부 트래픽과 NAT Gateway
Private Subnet에 위치한 서버도 패키지 업데이트나 외부 API 호출 등 외부 통신이 필요한 경우도 존재합니다.
이때 사용하는 것이 NAT Gateway이며, Private Subnet의 서버가 외부로 나가는 통신만 허용하고 외부에서 서버로 직접 들어오는 통신은 차단을 합니다.
그래서 보안은 유지하면서 필요한 부분만 외부 통신이 가능하게 합니다.
6. ALB(Application Load Balancer)의 역할
ALB는 단순한 트래픽을 전달하는 역할이 아닌 다음과 같은 기능을 하고 있습니다.
- 외부 트래픽을 여러 서버로 분산한다.
- 서버 상태(헬스체크)를 확인 한다.
- 장애가 발생한 서버를 자동으로 제외한다.
- 서버의 직접적으로 노출을 방지한다.
또한 ALB를 통하여 서비스의 안정성과 가용성을 높일 수 있습니다.
7. 이 구조의 장점 과 단점
장점
- 서버가 외부에 직접 노출되지 않아 보안성이 높습니다.
- 트래픽을 중앙에서 통제가 가능합니다.
- 장애 발생 시 영향을 최소화 할 수 있습니다.
단점
- ALB 사용에 따른 비용이 발생합니다.
- NAT Gateway 사용에 따른 비용이 발생합니다.
- 구조가 단순한 구성보다 복잡합니다.
8. 정리
AWS VPC 기반 네트워크 구조의 핵심은 외부 요청은 ALB를 통해서만 서버로 전달되며, 서버는 외부로 나갈 수는 있지만 외부에서 직접 접근은 힘들다는 점입니다.
이번에 VPC에 대한 역할을 제대로 보면서 글로 정리를 해봤지만, 혼자 정리가 부족하여 쉽지 않았던거 같습니다.
하지만 꾸준히 정리를 해보겠습니다.
