AWS 네트워크 구축과 EC2를 이용한 Spring Boot 배포

최정윤·2026년 8월 3일

Spring

목록 보기
28/38

Spring Boot 어플리케이션을 외부에서도 사용할 수 있도록 AWS 네트워크를 직접 구성하고 EC2에 배포하였다.

이번 과정의 핵심은

어플리케이션을 실행하는 것보다, 서비스가 인터넷과 통신하기 위한 네트워크를 이해하는 것


핵심 원리

AWS에서는 EC2만 생성한다고 인터넷과 연결되지 않는다.

모든 구성 요소가 아래와 같이 연결되어야 외부에서 Spring Boot에 접근할 수 있다.

Internet
    │
Internet Gateway
    │
Route Table
    │
Public Subnet
    │
Security Group
    │
EC2(Spring Boot)
구성 요소역할
VPC독립된 네트워크 공간
Subnet리소스가 위치하는 네트워크
Internet Gateway인터넷 출입구
Route Table트래픽 이동 경로
Security Group허용된 포트만 접근
EC2Spring Boot 실행 서버

기술적 의사결정

왜 Default VPC를 사용하지 않았는가??

Default VPC를 그대로 사용하는 대신 프로젝트 전용 VPC를 직접 생성하였다.

그 이유는 다음과 같다.

  • 기존 리소스와 완전히 분리된 환경을 구성하기 위해
  • VPC, Subnet, Route Table의 관계를 직접 이해하기 위해
  • 실제 운영 환경과 동일한 방식으로 네트워크를 설계하기 위해

단순히 EC2를 실행하는 것이 아니라 네트워크를 직접 설계하는 경험을 얻는 것을 목표로 하였다.


트러블 슈팅

1. Health Check가 동작하지 않았던 문제

문제원인해결
/actuator/health 접속 불가Security Group에서 8080 포트 미허용TCP 8080 인바운드 규칙 추가

어플리케이션은 정상적으로 실행되고 있었지만, 외부에서 접근할 수 있는 포트가 열려 있지 않아 Health Check가 실패하였다.

이를 통해 어플리케이션 실행과 네트워크 접근은 서로 다른 문제라는 점을 이해하였다.


2. VPC를 생성했는데 서브넷이 존재하지 않았던 문제

문제원인해결
VPC 생성 후 Subnet이 0개VPC만 생성되고 Subnet은 함께 생성되지 않음Public / Private Subnet 직접 생성

처음에는 VPC를 생성하면 모든 네트워크 구성이 끝난다고 생각했다.

하지만 VPC집터이고, Subnet실제로 사용할 방이라는 점을 이해하게 되었다.

즉, VPC만으로는 EC2나 RDS를 배치할 수 없으며, 목적에 맞는 Subnet을 직접 구성해야 한다.


3. "이름만 Public"인 서브넷은 인터넷과 통신하지 못했던 문제

문제원인해결
Public Subnet에 둔 EC2가 외부와 통신 불가Internet Gateway, Route Table, Public IP 미구성IGW 연결 → Route Table 연결 → Public IPv4 활성화

처음에는 이름을 "Public Subnet"으로 만들면 자동으로 인터넷과 연결될 것이라고 생각했다.

하지만

  • 문(Internet Gateway)
  • 길(Route Table)
  • 주소(Public IPv4)

세 가지가 모두 있어야 외부와 통신할 수 있었다.

이번 실습을 통해

이름과 실제 네트워크 동작은 전혀 다른 개념

이라는 점을 이해하였다.


실무 활용

AWS의 대부분의 서비스는 VPC 위에서 동작한다.

이번에 구성한

  • VPC
  • Subnet
  • Internet Gateway
  • Route Table
  • Security Group

구조는 이후 RDS, Load Balancer, Auto Scaling 등을 구성할 때도 동일한 기반이 된다.


VPC 생성
프로젝트 전용 VPC를 생성하여 독립된 네트워크 공간을 구성한 화면.


EC2 Security Group
SSH와 Spring Boot(8080)만 허용하도록 구성한 Security Group.


Health Check
EC2 Public IP를 통해 /actuator/health에 접근하여 서버가 정상적으로 실행되는 것을 확인한 화면.


마무리

이번 실습에서는 Spring Boot를 EC2에 배포하는 것보다 서비스가 외부와 통신하기 위해 어떤 네트워크 구성이 필요한지를 이해할 수 있었다.

특히 VPC, Subnet, Internet Gateway, Route Table, Security Group이 하나의 흐름으로 연결되어야 어플리케이션이 정상적으로 동작한다는 점을 직접 확인할 수 있었으며, AWS 인프라를 구성하는 기본 원리를 이해하는 계기가 되었다.

profile
콩떡

0개의 댓글