Spring Boot 애플리케이션 빌드와 배포 (feat. Profile)

bagt13·2022년 8월 8일
0

Spring

목록 보기
4/12

✅ 애플리케이션 빌드

📒 Intellij를 이용한 애플리케이션 빌드

:build 또는 :bootJar 실행

-> build/libs 경로에 Jar 파일이 생성된다. (해당 Jar파일은 로컬 PC에서 실행가능한 애플리케이션 실행파일임)

:build

  • :assemble, :check 같이 Gradle에서 빌드를 위해 관련된 모든 task들을 실행시킨다. 그리고 실행 가능한 Jar 파일 이외에 plain Jar 파일 하나를 더 생성한다.

:bootJar

  • 빌드를 위해 관련된 모든 task들을 실행하는 것이 아니라, jar 파일을 생성하기 위한 task만 실행한다.

📒 IntelliJ IDE를 사용하지 않는 빌드

이 경우, Gradle task 명령어를 console에 입력하여 빌드를 진행할 수 있다.
프로젝트의 root 디렉토리 경로로 이동하여 console 창에 명령어를 입력한다.


Windows 터미널

PS D:\codestates\project\[빌드_파일명]> .\gradlew bootJar

Git Bash

./gradlew build

빌드가 성공적으로 완료되면, 생성된 jar 파일을 java -jar Jar 파일명 으로 실행시킬 수 있다.



✅ Profile (프로파일)

Profile : 어떤 설정정보를 읽어와 빌드할 것인지 지정하는 것

Spring에서 제공하는 프로파일(Profile)을 적용하면, 애플리케이션이 build 될 때 실행환경에 따라 다른 설정정보를 읽어와 실행파일에 포함할 것인지 선택할 수 있다.

  • 예를 들어, 로컬 환경에서 개발 시에는 H2 데이터베이스를 사용하고, 서버 환경에서 실행할 때에는 MySQL을 사용하려고 할 때, profile에 해당 설정 파일을 명시해주면 간편하게 설정 정보를 변경할 수 있다.

  • 기존의 설정파일(application.yml)에는 공통 설정정보를 입력하고, 로컬용과 서버용 yml파일을 각각 만들어 관리하는 방식으로 사용할 수 있다.


📒 IntelliJ IDE에서 프로파일 적용

Edit Configuration -> Program arguments 부분에 --spring.profiles.active=local 형식으로 입력하면 된다.

📒 빌드된 실행 파일에 프로파일 적용

애플리케이션 실행 명령어에 설정정보를 붙여주기만 하면 된다.
java -jar simpleProject-0.0.1-SNAPSHOT.jar --spring.profiles.active=local



✅ 애플리케이션 배포

애플리케이션을 배포하는 방법에는 다양한 방법들이 존재한다.


📒 전통적인 배포 방법

  • Spring Boot 기반의 Executable Jar 파일을 서버에 배포하는 가장 일반적인 방법은 scp와 같은 표준 유닉스 툴을 이용해서 서버로 간단히 전송하는 것이다. 서버로 전송된 jar 파일은 JVM이 설치된 환경이라면 어디서든 손쉽게 실행할 수 있다.

📒 클라우드 서비스를 위한 배포 방법

jar 파일은 클라우드 환경에도 손쉽게 배포할 수 있다.

PaaS(Platform as a Service)

  • 대표적인 PaaS 제공 회사인 Cloud Foundry에서 제공하는 cf command line 툴을 사용하면 jar 파일을 손쉽게 배포할 수 있다.

IaaS(Infrastructure as a Service)

  • jar 파일은 AWS Code Deploy, AWS Elastic Beanstalk, AWS Container Registry 같은 서비스를 이용해서 손쉽게 배포가 가능하다.

  • 또한, Microsoft의 클라우드 서비스인 Azure와 Google Cloud 역시 여러가지 Executable Jar 파일 배포 기능을 제공한다.


📒 CI / CD 플랫폼을 사용한 배포

Github ActionsCircle CI, Jenkins 같은 CI/CD 플랫폼을 이용해 AWSAzure 같은 클라우드 서비스에 Executable Jar 파일을 자동 배포하도록 구성할 수 있다.


📃 Reference

profile
주니어 백엔드 개발자입니다😄

0개의 댓글