본문 바로가기
Back-End/Spring MVC

애플리케이션 빌드 / 실행 / 배포

by 달의 조각 2022. 9. 16.

 

애플리케이션을 서버 환경에서 실행하려면 Gradle이나 Maven 같은 빌드 툴로 빌드하는 과정이 필요하다.

 

빌드

 

🌳 IntelliJ IDE

  1. Gradle 탭 > 프로젝트 이름 > Tasks > build > :bootJar 또는 :build task
  2. build/libs 디렉토리에 Jar 파일(로컬 PC에서 실행 가능한 파일)이 생성된다.
  • :build : :assemble, :check 같이 Gradle에서 빌드와 관련된 모든 task를 실행한다.
    실행 가능한 Jar 파일 외에 plain Jar 파일이 하나 더 생성된다.
  • :bootJar : 모든 task를 실행하는 것이 아니라 실행 가능한 Jar 파일을 생성하기 위한 task만 실행된다.

 

🌳 Gradle Task

Window 터미널

PS D:project\hello-build> .\gradlew bootJar
Git Bash

MINGW64 /d/project/kdt/for-ese/hello-build (main)
$ ./gradlew build

 

 

실행

 

java -jar Jar 파일명.jar

 

🌳 프로파일(Profile) 적용

빌드로 생성된 애플리케이션 실행 파일의 실행 환경을 지정할 수 있다.

애플리케이션 실행 파일을 서버 환경에서 운영한다면 인메모리 DB를 사용하면 안 된다!!!

로컬 환경에서 개발할 때: application.yml에 H2 설정을 사용
서버용 jar 파일을 빌드 할 때: application.yml에 서버에서 사용하는 DB 정보로 수정 후 빌드!!

프로파일을 적용하면 이런 과정을 줄여 준다.

  • application.yml : 애플리케이션 실행 환경에 상관없는 공통 정보를 설정한다.
  • application-local.yml : 로컬 환경에서 사용하는 정보를 설정한다.
  • application-server.yml : 서버 환경에서 필요한 정보를 설정한다. 대표적인 정보에는 DB 접속 정보가 있다.

 

빌드된 실행 파일에 적용

java -jar 파일명.jar --spring.profiles.active=local

 

 

 

배포

 

Spring Boot 기반의 실행 가능한 Jar 파일(Executable Jar)을 서버에 배포하는 방법

 

🌳 전통적인 배포 방법

scp나 sftp 같은 표준 유닉스 툴을 이용한다.

 

🌳 클라우드 서비스를 통한 방법

  • PaaS(Platform as a Service)
    • Cloud Foundry, Heroku → cf command line 툴을 사용한다.
cf push acloudyspringtime -p target/app-0.0.1-SNAPSHOT.jar
  • IaaS(Infrastructure as a Service)
    • AWS Elastic Beanstalk, AWS Container Registry, AWS Code Deploy 같은 서비스 이용
    • Microsoft의 클라우드 서비스인 Azure도 Azure Spring Cloud, Azure App Service에서 기능 제공
    • Google Cloud
  • CI / CD
    • Gihub Actions나 Circle CI 같은 플랫폼을 이용해 AWS나 Azure 같은 클라우드 서비스에 자동 배포할 수 있다.
    • 시간 단축을 할 수 있다. 실제 실무에서 굉장히 많이 쓰이는 기술이다.

 

https://www.freecodecamp.org/news/scp-linux-command-example-how-to-ssh-file-transfer-from-remote-to-local/

댓글