본문 바로가기
Backend boot camp/Session3

[Spring MVC] 빌드/실행/배포

by orioncsy 2022. 11. 11.

애플리케이션 빌드

Intellij IDE를 이용한 빌드

  • Gradle 윈도우 탭 클릭
  • 프로젝트 이름→Tasks→ build→ :bootJar 혹은 :build 더블 클릭
    • bootJar는 Jar 파일 생성에 필요한 task를 모두 실행
    • build는 Jar 파일 생성뿐만 아니라 빌드와 관련된 모든 task 실행
  • 빌드가 정상 완료되면 build/libs 디렉터리에 Jar 파일 생성
  • Jar 파일은 로컬 PC에서 실행 가능한 애플리케이션 실행 파일

Gradle Task를 이용한 빌드

  • Gradle task 명령어를 콘솔에 입력하여 빌드 가능
  • 템플릿 프로젝트가 존재하는 디렉터리로 이동
  • CLI 명령을 입력할 수 있는 cmd, Git Bash, Windows Power Shell, 터미널 사용 가능
  • 해당 디렉터리로 이동 후에 .\gradlew bootJar(window 터미널) 혹은./gradlew build(git bash) 입력
  • 빌드가 종료되면 build/libs 디렉터리에 jar 파일 생성

애플리케이션 실행

터미널을 통한 실행

  • 터미널에서 빌드를 통해 생성된 Jar 파일이 있는 디렉터리로 이동
  • 터미널 창을 오픈 한 후 명령어 입력
    • java -jar 파일명.jar

프로파일 적용

  • 인메모리 DB인 H2를 사용하다가 서버 환경에서 운영할 경우 application.yml 파일에 DB정보 수정 후 빌드하는 것이 필요하다.
  • 번거로운 작업을 줄이기 위해 profile이라는 기능을 spring에서 제공
  • profile을 통해 애플리케이션이 빌드될 때 로컬 환경에서는 로컬 환경 DB 설정 정보를 실행 파일에 포함하고, 서버 환경일 경우 서버 환경 DB 정보를 포함하도록 설정 가능

적용 방법

  • application-local.yml, application-server.yml 파일을 생성하여 기본으로 설정된 yml 파일은 공통 적용 부분을 작성하고 local 관련된 부분과 server 관련된 부분을 따로 작성한다.
  • Intellij IDE에서 프로파일 적용
    • edit run/debug configuration을 오픈하기 위해 실행 파일이 위치한 셀렉트 박스를 클릭 후 edit configurations를 클릭
    • program arguments 필드에 —spring.profiles.active=local을 입력하여 활성화
    • Intellij IDE에서만 적용된다.
  • 빌드된 실행 파일에 프로파일 적용
    • java -jar 파일명. jar —spring.profiles.active=local로 작동

MySQL을 연동한 애플리케이션 실행

  • dependencies에 아래 추가
    • runtimeOnly 'mysql:mysql-connector-java’
  • application-server.yml에 추가
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:(MySQL의 포트번호)/(DB이름)?serverTimezone=Asia/Seoul
    username: (user)
    password: (password)
  • mysql에서 정보 확인
    • SHOW GLOBAL VARIABLES LIKE ‘PORT’;로 MySql 포트 확인
    • SHOW DATABASES; 로 DB 이름 확인

애플리케이션 배포

전통적인 배포 방법

  • Spring boot 기반 Executable Jar 파일을 서버에 배포하는 방법은 scp, sftp 같은 표준 유닉스 툴을 이용해 서버로 전송하는 방법이다.

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

  • PaaS(Platform as a Service)
    • Cloud Foundry, Heroku 등 PaaS 제공 기업에서 cf command line 툴을 사용하면 배포 가능
  • IaaS(Infrastructure as a Service)
    • AWS Elastic Beanstalk, AWS Container Registry, AWS Code Deploy 서비스 사용
    • Microsoft Azure Spring Cloud, Azure App Service를 통해 배포 가능
    • Google Cloud 배포 가능
  • CI/CD
    • Executable Jar 파일 자동 배포를 위해 Github Actions, Circle CI 등의 플랫폼을 사용해 AWS, Azure 클라우드 서비스에 자동 배포 가능

'Backend boot camp > Session3' 카테고리의 다른 글

[Spring MVC] API문서화  (0) 2022.11.11
[Spring MVC] Testing  (0) 2022.11.11
[Spring MVC] 트랜잭션  (0) 2022.11.07
[Spring MVC] JPA 데이터 액세스 계층  (0) 2022.11.07
[Spring MVC] JDBC DB Access Layer  (0) 2022.10.29