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 파일이 있는 디렉터리로 이동
- 터미널 창을 오픈 한 후 명령어 입력
프로파일 적용
- 인메모리 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 클라우드 서비스에 자동 배포 가능