본문 바로가기
부트캠프 개발일기/Spring MVC

59일차: 빌드 / 실행 / 배포

by shyun00 2023. 5. 8.

❯ 애플리케이션 빌드(Build)

이때까지 실습을 통해 구현한 애플리케이션은 로컬 환경에서 실행시켜 정상 작동되는 것을 확인하였다.

실제로 애플리케이션을 개발하고 로컬환경이 아닌 서버 환경에서 실행시키기 위해서는 빌드 툴을 사용하는 방법을 알고 있어야 한다.

여러 가지 빌드 방법 중 Gradle을 이용해 소스코드를 빌드하는 방법을 학습하고자 한다.

IntelliJ IDE를 이용한 빌드

Spring Boot를 이용한 애플리케이션의 경우 Spring Boot 자체에서 Gradle 빌드 툴을 이용해 애플리케이션을 빌드할 수 있는 플러그인을 지원한다. :bootJar :build task를 통해 build/libs경로에 Jar파일을 생성할 수 있다.

  • :build task -> Gradle에서 빌드와 관련된 모든 task를 실행한다.
  • :bootJar task -> 애플리케이션의 실행가능한 Jar 파일(Executable Jar)을 생성하기 위한 task만 실행한다.

Gradle Task를 이용한 빌드

IntelliJ IDE가 설치되어있지 않은 상황에서 빌드를 진행해야 할 경우 Gradle task 명령어를 콘솔(터미널)에 바로 입력해서 빌드할 수 있다.

  1. 프로젝트가 위치한 디렉토리 경로로 이동한다.
  2. Gradle task를 CLI 명령으로 입력할 수 있는 콘솔창을 프로젝트 root 경로에서 오픈한다.
  3. build 명령어를 입력한다.

IntelliJ에서 빌드한 것과 마찬가지로 build/libs 디렉토리에 Jar 파일이 생성된다.

❯ 애플리케이션 실행

빌드가 완료되면 생성된 Jar 파일을 통해 애플리케이션을 실행할 수 있다.

터미널에서 생성된 Jar 파일이 있는 디렉토리 경로로 이동한 뒤 java -jar 파일명.jar를 입력하면 된다. 

이때 한 가지 고려해야 하는 사항이 있는데 바로 데이터베이스이다.

학습/테스트를 위해 인메모리 데이터를 사용하고 있었는데 서버 환경에서는 인메모리 DB를 사용해서는 안된다.
(애플리케이션이 재시작되면 초기화되기 때문)

 

이럴 때 사용가능한 개념이 프로파일(Profile)이다.

프로파일이란 애플리케이션의 실행 환경에 따라 설정을 구성하는 데 사용되는 개념이다.

로컬환경, 개발환경, 운영환경 등에서 실행될 때 각 환경에 맞게 다른 설정값을 적용할 수 있다.

 

H2 등 애플리케이션 설정을 application.yml 파일을 통해 진행했다.

환경에 따른 애플리케이션 설정을 다르게 하기 위해 환경별로 설정 파일을 정의할 수 있다.

application.yml: 실행 환경에 상관없는 공통 정보를 설정

application-local: 로컬 환경에서 사용되는 정보를 설정

application-server: 서버 환경에서 사용되는 정보를 설정

 

 

환경에 따른 설정 정보는 상황에 따라 작성하면 된다. 이렇게 설정 파일을 작성하고 나서 실행/빌드시 해당 프로파일을 적용하면 된다.

프로파일의 이름은 '-'를 기준으로 yml파일 이름에 포함하면 된다.

실행파일에 프로파일을 적용하기 위해서는 java -jar 파일명.jar--spring.profiles.active=프로파일명 설정을 추가해 주면 된다.

❯ 애플리케이션 배포

Executable Jar 파일을 서버에 배포해 클라이언트에게 REST API 서비스를 제공할 수 있다.

배포하는 방법은 크게 두 가지로 나눌 수 있다. (추후 세부내용 학습 예정)

  • 전통적인 배포 방법: scp나 sftp 같은 표준 유닉스 툴을 이용해 서버로 전송하는 것
  • 클라우드 서비스를 위한 배포 방법:
    1. Paas(Platform as a Service): Cloude Foundry, Heroku
    2. Iaas(Infrastructure as a Service): AWS, Azure, Google Cloud 등 사용
    3. CI/CD 플랫폼 사용한 배포: Github Actions, Circle 플랫폼 사용

 

참고자료

Spring-Spring-gradle-MySQL-JPA-연동

SpringBoot - yml에 mysql 연결 설정


이때까지 작성해 본 코드를 DB와 연결해 보고 여러 가지 설정을 해보니 진짜 뭔가 만들어가고 있다는 느낌을 받았다.

애플리케이션을 실행시켰을 때 의도한 바대로 작동하는 걸 보면서 보람도 느꼈다.

강의 자료만으로는 내용이 충분하지 않아서 구글링을 통해서 여러 가지 방법을 찾아보았는데 그 과정에서 더 많은 것을 배울 수 있었던 것 같다. 양질의 자료를 찾고 잘 적용할 수 있는 것도 중요한 역량 중 하나라는 생각이 든다. 지속적인 학습을 통해 관련 역량도 기를 수 있도록 노력해야겠다.