[AWS Project #1] 고가용성 3-Tier Architecture 구축 - Networking

ZZGG2·2026년 3월 9일

AWS 3-Tier Project1

목록 보기
1/5

[AWS] 가용성과 보안을 고려한 3-Tier Architecture 구축 - Networking

클라우드 엔지니어에게 가장 중요한 것은 "탄탄한 네트워크 설계"이다. 이번 프로젝트에서는 AWS의 다양한 서비스를 활용해 확장성과 보안을 갖춘 3-Tier Architecture를 직접 구축해보았다.

첫 번째 단계로, 서비스들이 안정적으로 가동될 수 있는 Virtual Private Cloud (VPC) 환경을 구성해보았다.

1. 네트워크 설계도

설계의 핵심 포인트는 2가지 정도가 있다.

  1. 고가용성 (High Availability): 단일 가용 영역 (AZ) 장애에 대비하여 두 개의 AZ(ap-northeast-2a,2c)를 사용한다.
  2. 보안 계층화: 서비스 성격에 따라 public, private-app, private-dp 3개의 계층으로 서브넷을 세분화한다.

2. VPC 및 Subnet 생성

VPC 생성

가장 먼저, 논리적으로 격리된 네트워크 공간인 VPC를 생성한다.
VPC는 10.0.0.0/16 이라는 넉넉한 CIDR(IP 대역)을 할당하여, 향후 서비스가 커져서 더 많은 서버가 필요해지더라도 IP가 부족하지 않도록 확장성을 고려했다.

Subnet 배치

가용 영역별로 역할을나누어 총 6개의 서브넷을 생성했다.

계층 (Tier)가용 영역 A (2a)가용 영역 C (2c)특징
Public10.0.10.0/2410.0.20.0/24외부와 직접 통신 (ALB 배치)
Private App10.0.11.0/2410.0.21.0/24비즈니스 로직 처리 (EC2 배치)
Private DB10.0.12.0/2410.0.22.0/24데이터 저장 (RDS 배치)

이로써, 보안을 극대화하고, 2개의 가용 영역에 배치함으로써, SAA의 핵심인 SPoF (Single Point of Failure)를 방지할 수 있다.

3. 외부 통신을 위한 Gateway 설정

내부 네트워크를 만들었으니, 외부 인터넷과 연결할 통로를 만들어야 한다.

Internet Gateway (IGW) & NAT Gateway

  • IGW: VPC 전체가 인터넷과 연결될 수 있는문이다
  • NAT Gateway: Private APP 서브넷에 있는 서버들이 외부 패치를 다운로드 받기 위해 필요하다. 보안을 위해 public subnet에 배치한다.
    원래는 각 가용영역 (a와 c) 마다 두는 것이 정석이나, 인프라 비용을 최적화하기 위해 public subnet a에 1개만 배치하여 단일 NAT로 private subnet들이 아웃바운드 트래픽을 처리하도록 구성했다.

4. 라우팅 테이블 (Route Table) 구성

단순히 게이트웨이를 만드는 것만으로는 데이터가 흐르지 않는다. 각 서브넷이 어디로 가야 할지 '이정표'를 세워주어야 한다.

  • Public Route: 0.0.0.0/0 경로를 IGW로 향하게 설정했다.
  • Private Route: 0.0.0.0/0 경로를 NAT Gateway로 향하게 설정했다.
    Private Subnet의 서버는 외부에서 직접 접속할 수는 없지만 (Inbound 차단), 업데이트 등을 위해 외부로 나가는 통로 (Outbound 허용)는 NAT Gateway를 통해 안전하게 확보되어야 하기 때문이다.

5. 보안 그룹 (Security Group)

네트워크의 가장 중요한 보안 그룹을 설정한다. "최소 권한 원칙"에 따라 필요한 포트만 개방했다.

  • ALB Security Group: 웹사이트에 접속하려는 모든 외부 사용자(0.0.0.0/0)에게 HTTP(80포트) 및 HTTPS(443포트) 통신을 허용하여, 정상적인 웹 서비스가 가능하도록 열어둔다.
  • EC2 Security Group: 해커가 외부 인터넷에서 EC2의 IP로 직접 접속하는 것을 원천 차단한다. 대신 IP 주소가 아닌 ALB의 보안 그룹 (project1-alb-sg) 자체를 소스로 지정한다. 즉, ALB를 정식으로 거쳐서 들어온 트래픽만 받게 된다.
  • RDS Security Group: 회원 정보 등 가장 중요한 데이터가 담길 곳이므로, 오직 애플리케이션이 실행 중인 EC2의 보안 그룹에서 오는 통신(MySQL 3306포트)만 허락한다.

결론

이번 포스팅에서는 AWS 인프라의 뼈대가 되는 네트워크를 구축해 보았다.
다음 포스팅에서는 이 뼈대 위에 컴퓨팅 리소스 (EC2)를 올리고 로드밸런서(ALB)를 연결하는 과정을 다뤄보도록 하겠다.

0개의 댓글