프로젝트를 시작하기에 앞서 서버 구축을 먼저 해주었다. 처음 해보는 거라 오래 걸릴 것 같다는 생각에 개발 들어가기 전에 미리 해두었다. 하지만 서버를 구축한 후에 개발을 하다 보니 이곳저곳 예상치 못한 오류 생기는 게 많았다ㅠㅠ 그래서 이건 각자의 니즈에 맞게.. 서버를 구축하면 될 것 같다. 아마 이걸 고민하는 시점부터가 프로젝트의 시작인 걸...........
아무튼, 서버는 3개월간 무료 사용할 수 있는 GCP(Google Cloud Platform)를 선택 했고 구조는 아래와 같다.

1. 클라이언트 요청
사용자의 클라이언트에서 GCP VM의 퍼블릭 IP를 통해 9091 포트로 요청을 보낸다. (ex http://000.000.000.000:/9091/api/..)
2. GCP 인스턴스 (VM)
이 인스턴스는 Google Cloud Platform(GCP)에 생성된 가상 머신(VM)으로, 이 VM에는 Docker가 설치되어 있고, 도커 내부에서 스프링과 DB 컨테이너가 실행된다.
VM머신 생성 과 Docker 설치 가 궁금하면 아래의 링크로~~
GCP VM 인스턴스 생성부터 SSH 키 연결, 고정 IP 설정, 방화벽 설정까지 한 번에 정리
GCP 프로젝트 생성 및 결제 설정 GCP에 가입한 후 결제설정까지 모두 마쳤다면, 프로젝트 그룹이 만들어져 있을 것이다. 해당 프로젝트를 사용해도 되고, 새로운 프로젝트를 하나 더 만들어서 사
henniee.tistory.com
우분투 25.04 서버에 도커 설치하기 (Ubuntu 25.04 / Plucky Puffin)
1. 기존 패키지 업데이트 sudo apt updatesudo apt upgrade -y 2. 필수 패키지 설치 sudo apt install -y ca-certificates curl gnupg 3. 도커의 공식 GCP 키 추가 APT는 보안상 서명된 패키지만 설치하게 되어 있기 때문에
henniee.tistory.com
3. Spring Boot 컨테이너
Spring Boot 애플리케이션이 Docker 컨테이너로 실행 중이다. 컨테이너 내부에서는 기본적으로 9091 포트를 사용하고 있으며, 이 포트는 VM 외부의 동일한 포트와 바인딩되어 있어 외부에서 접근 가능하다. 요청 처리의 중심이며, 클라이언트의 요청을 받아 비즈니스 로직을 수행한다.
4. PostgreSQL 컨테이너
데이터 저장소 역할을 하는 PostgreSQL 데이터베이스가 별도의 Docker 컨테이너로 구동 중이며 컨테이너 내부 포트는 기본 DB 포트인 5432를 사용하였다. 이 컨테이너는 Spring Boot 컨테이너와 내부 네트워크(docker network)를 통해 통신한다.
5. 포트 매핑
VM 외부: 9091 → Spring Boot 컨테이너 9091
VM 내부: Spring Boot ↔ PostgreSQL (5432) 연결
클라이언트 → GCP VM (9091) → 도커 [ Spring Boot 컨테이너 → PostgreSQL 컨테이너 ]
모든 서비스는 Docker로 컨테이너화되어 있고, GCP VM에서 구동되고 있다. 외부에 노출된 포트는 오직 Spring Boot가 사용하는 9091 뿐이며, DB는 내부 연결만 허용하여 보안을 강화하는 전략으로 서버를 구성하였다.
VM 머신을 만들고, 머신 안에 도커까지 설치를 완료 하였다면, docker-compose.yml 작성을 한 후 수동으로 프로젝트에 배포하는 방법과 이 방법을 깃 액션 CI/CD로 구현한 방법에 대한 글은 아래의 링크로!
docker-compose 작성으로 Spring Boot + PostgreSQL 개발 환경 구축하기
[Docker Compose 란?]여러 개의 Docker 컨테이너를 하나의 설정 파일로 정의하고 한 번에 실행 및 관리할 수 있게 해주는 도구이다. [왜 docker-compose를 사용하는가?]멀티 컨테이너 환경을 쉽게 구성한다.
henniee.tistory.com
git Action으로 Spring boot CI/CD 환경 구축 - gradle.yml 작성
[git Action 이름 설정 ]name: Java CI/CD with Gradle and Docker //Action의 이름 [워크플로우 트리거 설정] backdev 브랜치에 푸시 할 때마다 발생 하게 할 것이라는 의미 on: push: branches: ["backdev"]아래는 다른 트리
henniee.tistory.com
'서버' 카테고리의 다른 글
| GCP 가상 머신에 Nginx 리버스 프록시와 무료 SSL(Let's Encrypt) 적용해 Mixed Content 오류 없애기 (1) | 2025.06.22 |
|---|---|
| GCP VM 머신 CPU 사용량 급증 해결 방법 (3) | 2025.06.21 |
| GCP VM 인스턴스 생성부터 SSH 키 연결, 고정 IP 설정, 방화벽 설정까지 한 번에 정리 (3) | 2025.06.13 |
| 우분투 25.04 서버에 도커 설치하기 (Ubuntu 25.04 / Plucky Puffin) (0) | 2025.06.09 |
| mixed content 에러 해결 방법 (0) | 2025.05.27 |