037. VPC — 클라우드 위의 사설 네트워크
VPC(Virtual Private Cloud)는 클라우드 위에 만드는 논리적 사설 네트워크다. 서브넷으로 구역을 나누고, 라우팅 테이블로 트래픽 방향을 제어하고, Internet Gateway로 외부와 연결한다. public/private 서브넷의 차이, 라우팅 테이블이 동작하는 방식, 그리고 실무 VPC 설계 패턴을 설명한다.
VPC(Virtual Private Cloud)는 클라우드 위에 만드는 논리적 사설 네트워크다. 서브넷으로 구역을 나누고, 라우팅 테이블로 트래픽 방향을 제어하고, Internet Gateway로 외부와 연결한다. public/private 서브넷의 차이, 라우팅 테이블이 동작하는 방식, 그리고 실무 VPC 설계 패턴을 설명한다.
private 서브넷의 서버는 인터넷에서 직접 접근할 수 없지만, 외부 API 호출이나 패키지 설치를 위해 아웃바운드 인터넷 접근은 필요하다. NAT Gateway는 이 단방향 출구를 제공한다. 동작 원리, 비용 구조, 고가용성 설계, 그리고 EKS에서의 주의사항을 설명한다.
AWS에는 두 가지 네트워크 접근 제어 메커니즘이 있다. Security Group은 인스턴스 레벨에서 동작하는 stateful 방화벽이고, NACL은 서브넷 레벨에서 동작하는 stateless 방화벽이다. 둘의 결정적인 차이인 stateful vs stateless가 실제로 무엇을 의미하는지, 언제 무엇을 써야 하는지 설명한다.
VPC는 기본적으로 격리된 네트워크다. 여러 VPC를 연결하려면 VPC Peering 또는 Transit Gateway를 쓴다. Peering은 두 VPC를 직접 연결하는 단순한 방식이고, Transit Gateway는 여러 VPC를 허브-스포크 구조로 연결하는 중앙 라우터다. 각각의 동작 방식과 어떤 상황에 무엇을 쓰는지 설명한다.
온프렘 데이터센터와 AWS VPC를 연결할 때 AWS Site-to-Site VPN 또는 AWS Direct Connect를 쓴다. VPN은 인터넷 위에 암호화 터널을 만드는 방식으로 빠르게 설정할 수 있고, Direct Connect는 AWS와 전용 물리 회선을 연결하는 방식으로 안정적인 대역폭과 낮은 레이턴시를 제공한다. 둘의 차이와 선택 기준을 설명한다.
로드밸런서는 들어오는 트래픽을 여러 서버에 분산한다. OSI 모델의 어느 계층에서 동작하느냐에 따라 L4와 L7으로 나뉜다. L4는 TCP/UDP 레벨에서, L7은 HTTP 내용을 보고 라우팅 결정을 내린다. AWS의 NLB와 ALB를 기준으로 각각 언제 쓰는지 설명한다.
로드밸런서는 헬스체크로 서버가 정상인지 확인하고, 비정상 서버로는 트래픽을 보내지 않는다. Connection Draining은 서버를 내릴 때 기존 연결을 끊지 않고 자연스럽게 처리가 끝나길 기다린다. 이 두 메커니즘이 무중단 배포와 자동 장애 복구의 기반이 된다.
IaC(Infrastructure as Code)는 서버, 네트워크, DB 같은 인프라를 코드로 정의하고 버전 관리하는 방식이다. 콘솔에서 클릭해서 만들던 것을 코드로 선언하면 재현 가능하고 리뷰 가능하고 자동화할 수 있다. 선언형 vs 명령형의 차이, Terraform과 Pulumi의 철학 차이, 그리고 state 파일 문제를 설명한다.
Crossplane은 k8s CRD를 이용해 AWS, GCP 같은 클라우드 인프라를 선언적으로 관리하는 오픈소스다. VPC, RDS, S3 같은 클라우드 리소스를 k8s 오브젝트처럼 선언하면 컨트롤러가 실제 인프라를 프로비저닝한다. Terraform과 철학적으로 무엇이 다른지, Provider 구조, Managed Resource 개념을 설명한다.
Argo CD와 Crossplane을 결합하면 Git 하나로 k8s 앱 배포와 AWS 인프라 프로비저닝을 모두 관리할 수 있다. 개발자가 Git에 Claim을 올리면 Argo CD가 k8s에 적용하고, Crossplane이 실제 AWS 리소스를 만든다. 이 파이프라인이 어떻게 구성되는지, 그리고 실제 운영에서 어떤 점을 주의해야 하는지 설명한다.