SEB_BE_43 / 23.03.10 회고

rse·2023년 3월 11일
0

코드스테이츠_BE_43

목록 보기
51/65

오늘

  • 애플리케이션 빌드

빌드

인텔리제이에서 빌드하기

아래 사진에서 :build아니면 :bootJar 를 눌러 실행시킨다.

Spring Boot는 Gradle 빌드 툴을 이용해 애플리케이션을 빌드할 수 있는 플러인을 지원한다.
그래서 Gradle task 명령을 통해 애플리케이션을 손 쉽게 빌드 할 수 있다.

정상적으로 종료되면

build/libs 디렉토리안에 Jar 파일이 생성된다.

:build와 :bootJar의 차이점

:build task를 실행하면 :assemble, :check 와 같이 Gradle에서 빌드와 관련된 모든 task들을 실행시킨다. 
그리고 Jar 파일 이외에 plain Jar 파일 하나를 더 생성한다. (나는 build를 실행시켰다)

:bootJar 는 빌드와 관련된 모든 task를 실행하는 것이 아니라 
애플리케이션의 실행 가능한 Jar(Executable Jar) 파일을 생성하기 위한 task만 실행한다.

CLI

Intellij 같은 IDE가 없거나 사용하지 못하는 경우

프로젝트가 위치해 있는 디렉토리 경로로 이동.

$ ./gradlew build

아래 사진처럼 위에 적힌 명령문 실행.

정상적으로 완료되면 디렉토리 build/libs에 Jar 파일 생성된다.

실행

CLI

생성된 Jar 파일을 이용해서 애플리케이션을 실행 할 수 있다.

콘솔창에서 Jar 파일이 있는 곳으로 이동한다.

아래에 있는 명령문을 입력한다.

java -jar Jar 파일명.jar

Profile (프로파일) 적용

이때까지 데이터베이스를 H2라는 인메모리 DB를 사용했다.
하지만 빌드된 애플리케이션 실행 파일을 서버 환경에 배포해서 운영한다면 인메모리 DB를 사용하면 큰일 날 것이다.

Spring 에서는 Profile (프로파일) 이라는 편리한 기능을 제공한다.

애플리케이션이 빌드 될 때 / 서버 환경이 빌드 될 때 를 분리해서 설정해보자.

application.yml - 애플리케이션 실행 환경에 상관없는 공통 정보들
application-local.yml - 로컬 환경에서 사용하는 정보들
application-server.yml - 서버 환경에서 사용하는 정보들

만약 내가 만든 샘플 애플리케이션을 실제 서버나 AWS 같은 클라우드에서 실행 시켜야 한다면 server 파일에 설정하면 된다.

각 파일 내용을 보면

application.yml

application-local.yml

이때까지 application.yml 에 작성했던 부분을 모두 local.yml 에 옮긴이유는 지금까지 사용했던 프로퍼티 정보가 모두 로컬 환경에서 사용되던 정보들이기 때문이다.

application-server.yml

이제 프로파일을 적용해야한다.

이유는 프로파일을 적용하든 적용하지 않든 애플리케이션을 실행시키면 application.yml 파일에 정보는 항상 읽어오기 때문. 하지만 현재 application.yml 파일에는 아무 정보가 없으니 실행은 되지만 어딘가에서 볼 수는 없다.

Intellij 에서 프로파일 적용

애플리케이션을 실행하는 파일이 위치한 박스를 클릭하면 이런 화면이 나오는데 Edit Configurations 버튼을 클릭.

--spring.profiles.active=local을 입력. 여기서 local 은 application-local.yml 파일명의 local 을 뜻한다

프로파일 적용 후 실행하면 콘솔에 아래 사진처럼 뜬다.

CLI

IntelliJ에서 했던 것과 똑같이 --spring.profiles.active=local 을 뒤에 붙여주면 된다.

배포

외부 클라이언트에게 REST API 서비스를 제공해기 위해서 애플리케이션을 서버에 배포를 해야한다.

Spring Boot기반의 Executable Jar 파일을 서버에 배포하는 방법

  • 전통적인 배포 방법

scp, sftp 같은 유닉스 툴을 이용해서 서버로 간단히 전송하는 방법.
서버로 전송된 Jar파일은 jvm이 설치된 환경이라면 어디서든 실행할 수 있다.

scp, sftp
유닉스 기반의 파일 전송 프로토콜.
scp = Secure Copy 약어.
sftp = Secure File Transfer Protocol 약어.
  • 클라우드 서비스를 위한 배포 방법
  • CI / CD 플랫폼을 사용한 배포 방법
profile
기록을 합시다

0개의 댓글