[Spring 실습] 스프링 프로젝트 GCP로 배포하기

Jiwoo Jung·2025년 1월 3일
0

GDGoC Spring 스터디

목록 보기
15/15

스프링 GCP 배포
온라인 도서 관리 프로그램을 Google Cloud Platform로 배포해보자.

배경지식

GCP

Google에서 개발한 클라우드 컴퓨팅 플랫폼.
사용자가 클라우드 환경에서 애플리케이션을 개발, 배포 및 관리할 수 있도록 돕는 플랫폼.

VM 인스턴스

Google 인프라에서 호스팅되는 가상 머신(VM)
(Compute Engine 인스턴스, 가상 머신 인스턴스 , VM 인스턴스, VM은 모두 같은 동의어)
cloud.google.com

GCP의 VM 인스턴스를 생성한 후, 로컬 컴퓨터와 연결할 것이다.

SSH(Secure Shell Protocol)

네트워크 프로토콜로, 안전한 통신을 위해 암호화를 사용하여 데이터와 명령을 전송
이 프로토콜은 RSA 보안 방식을 기반으로 하며, 공개 키(Public Key)와 개인 키(Private Key)를 활용하여
인증과 보안을 유지한다.

로컬 pc에서 Public Key를 생성하고 이를 GCP에 등록하여, 로컬 pc와 GCP의 VM 인스턴스 간 연결을 설정할 것이다.


스프링 GCP 배포 개요

  1. GCP 준비
  2. VM 인스턴스 생성 및 설정
  3. 고정 IP 및 방화벽 설정
  4. SSH key 생성 및 등록
  5. 로컬 pc에서 원격 VM 연결
  6. 배포

1. GCP 준비

Google Cloud 가입 및 새 프로젝트 생성

  1. Google Cloud 가입
    https://cloud.google.com

  2. 새 프로젝트 생성

2. VM 인스턴스 생성 및 설정

VM 인스턴스 생성

  1. 생성한 프로젝트로 진입하기.

  2. Computer Engine > VM 인스턴스 > 인스턴스 만들기

  3. 머신 구성 설정

    이름: 원하는 이름 (ex. instance)
    리전: 지역 (ex. 서울)
    머신 유형: e2-micro (용도에 맞게)

  4. OS 및 스토리지 설정

    운영체제: Ubuntu

  5. 네트워킹 설정

    방화벽: HTTP 트래킹 허용, HTTP 트래킹 허용

  6. 보안 설정

    액세스 범위: 모든 Cloud API에 대한 전체 액세스 허용

  7. 생성된 VM 인스턴스 확인
    외부 IP는 배포에 쓰이므로 메모해둔다.

VM 인스턴스 생성 완료!

VM 인스턴스 설정

  1. VM 인스턴스 > SSH
  2. root 계정 설정 및 Java 환경 설치
    Spring 프로젝트의 java 버전에 맞는 Java 환경 설치
    sudo passwd
    sudo su
    sudo apt update
    sudo apt-get install openjdk-21-jre
    sudo apt-get install openjdk-21-jdk
    java --version

3. 고정 IP 및 방화벽 설정

고정 IP 설정

인스턴스가 재시작돼도 동일한 ip로 접속할 수 있도록 고정 IP를 설정하자.

  1. VPC 네트워크 > IP 주소 > 외부 고정 IP 주소 예약

  2. 고정 주소 예약

    이름: 원하는 이름 (ex. static-ip)
    네트워크 서비스 계층: 표준
    연결대상: 이전에 생성한 VM 인스턴스 선택

  3. 생성된 외부 고정 IP 확인

고정 IP 설정 완료!

방화벽 규칙 생성

spring boot의 기본 포트인 8080포트를 열어주기 위해 방화벽 규칙을 생성하자.

  1. VPC 네트워크 > 방화벽 > 방화벽 규칙 만들기

  2. 방화벽 규칙 만들기

    이름: 원하는 이름 (ex. springboot-8080)
    소스 IPv4 범위: 0.0.0.0/0
    프로토콜 및 포트: TCP 포트 8080

    모든 IP주소에서 오는, TCP 프로토콜을 사용하고 목적지 포트 번호가 8080인 트래픽을 허용한다는 의미이다.

  3. 생성된 방화벽 규칙 확인

방화벽 규칙 생성 완료!

4. SSH key 생성 및 등록

로컬 PC에서 SSH Key 생성

로컬 pc에서 VM 인스턴스에 접근하기 위해 로컬 pc에서 SSH key를 생성하자.

  1. Windows Powershell 관리자 모드로 실행
  2. 사용자 계정으로 이동
    PS C:\WINDOWS\system32> cd ..
    PS C:\WINDOWS> cd ..
    PS C:\> cd Users
    PS C:\Users> cd [username]
  3. .ssh 폴더 생성
    PS C:\Users\[username]> mkdir .ssh
    PS C:\Users\[username]> cd .ssh
  4. SSH key 생성
    PS C:\Users\[username]\.ssh> ssh-keygen -t rsa -f [key name] -C [GCP account]) PS C:\Users\[username]\.ssh> ssh-keygen -t rsa -f gcp_key -C abcd@gmail.com    
  5. 생성된 public key 확인
    PS C:\Users\[username]\.ssh> type [key name].pub
    생성된 public key가 출력된다. 출력된 값은 다음 단계에서 필요하니 메모해둔다.

GCP Console에서 SSH Key 등록

  1. Compute Engine > 메타데이터 > 수정 > SSH 키

  2. 로컬 pc에서 생성한 SSH public key 입력

  3. 로컬 pc Windows powershell에서 등록 확인

    ssh -i /Users/[user name]/.ssh/[key name] [GCP 계정 앞부분]@[VM 외부 IP])
    ssh -i /Users/[user name]/.ssh/[key name] abcd@10.20.30.40

5. 로컬 pc에서 원격 VM 연결

VSCode를 통한 SSH 연결

  1. VS Code에서 확장프로그램 Remote - SSH 설치

  2. Remote Explorer 아이콘 > + 버튼

    좌측 패널에 생성된 Remote Explorer 아이콘 클릭
    (생성되지 않으면 우클릭해서 선택)

  3. ssh [GCP 계정 앞부분]@[VM 외부 ip] 입력 후 엔터

  4. config 파일 열기

  5. config 파일 수정

    Host: 원하는 이름
    HostName: VM 외부 IP
    User: GCP 계정 앞부분
    IdentityFile: 키 파일 경로

  6. Remote Explorer > SSH > VM 외부 IP > Connect > SSH key 비밀번호 입력

  7. 연결 확인
    터미널을 열어서 VM 인스턴스에 연결되면 연결 성공

6. 배포

.jar 생성 및 이동

  1. IntelliJ > 우측 패널 gradle 로고 > 프로젝트명 > Tasks > build > bootJar
    프로젝트 폴더 build > libs 경로에 .jar 파일 생성 확인

  2. VSCode > (SSH 연결 후) > EXPLORER > Open Folder

  3. .jar 파일 이동

Spring boot 실행

  1. VS code 터미널에서 스프링 실행

    nohup java -jar [파일명].jar

    Java로 작성된 애플리케이션을 실행하면서 터미널 세션 종료와 무관하게 계속 실행되도록 설정하는 명령어.
    표준 출력과 표준 에러 출력이 nohup.out 파일에 저장된다.

  2. 실행 확인
    nohup.out을 열면 스프링 부트가 실행된 것을 확인할 수 있다.

서비스 확인

브라우저에서 http://[VM외부IP주소]:8080 으로 접속

배포 완료!


참고자료

developerkkyu37.tistory.com
developerkkyu37.tistory.com
velog.io/@hyeri_hello
velog.io/@hyeri_hello
velog.io/@chaejm55

0개의 댓글