[Section3] Spring MVC - 애플리케이션 빌드/실행/배포
🧑🏻💻 TIL(Today I Learned)
✔️ 애플리케이션 빌드/실행/배포 실습
💡 애플리케이션 빌드
➡️ 애플리케이션을 서버 환경에서 실행 가능하게 하기 위해서는 Gradle이나 Maven 같은 빌드 툴을 이용해서 Spring Boot 기반의 애플리케이션 소스 코드를 빌드해야 함
✔️ IntelliJ IDE를 이용한 빌드
- Gradle 윈도우 탭 클릭
- 프로젝트 이름 - Tasks - build 에서 :bootJar 또는 build 더블 클릭
- 빌드가 정상적으로 종료되면 위 사진과 같이 build/libs 디렉토리에 jar 파일이 생성됨
→ jar 파일은 로컬 PC에서 실행 가능한 애플리케이션 실행 파일
:build 와 :bootJar 의 차이
→ :build task를 실행할 경우
:assemble, :check 같이 Gradle에서 빌드와 관련된 모든 task들을 실행시킴
또한 실행 가능한 jar 파일 이외에 plain jar 파일을 하나 더 생성함
→ :bootJar task를 실행할 경우
빌드와 관련된 모든 task들을 실행하는 것이 아니라 애플리케이션의 실행 가능한 jar(Executeable Jar) 파일을 생성하기 위한 task만 실행함
즉 단순히 Executable Jar 파일만 필요하다면 :bootJar task를 실행하면 됨
✔️ Gradle Task를 이용한 빌드
- 빌드가 정상적으로 정상적으로 종료되면 IntelliJ에서 빌드를 진행할 때와 마찬가지로 build/libs 디렉토리에 Jar 파일 하나 생성됨
permission denied
→ ./gradlew build 명령어를 실행했는 위와 같은 내용과 함께 build가 되지 않았음
→ 그 파일에 대한 권한이 없어서 그런 것이기 때문에 아래와 같이 입력하고 나서 다시 build 하는 명령어를 입력하면 빌드가 됨
chmod +x gradlew
💡 애플리케이션 실행
➡️ 빌드가 완료되었다면 생성된 Jar(Executable Jar) 파일을 이용해서 애플리케이션을 실행할 수 있음
- 빌드를 통해 생성된 Jar 파일이 있는 디렉토리 경로로 이동
- 위와 같이 파일 이름을 입력하고 실행
✔️ 프로파일(Profile) 적용
➡️ 지금까지 프로젝트에서 인메모리 DB인 H2를 사용했으나 빌드된 애플리케이션 실행 파일을 서버 환경에 배포해서 운영한다면 인메모리 DB를 사용하면 안 됨
➡️ 그렇기 때문에 개발을 진행할 때는 기존 application.yml 파일에 이미 설정되어 있는 H2를 사용하고, 서버용 jar 파일을 빌드할 경우에는 빌드 전에 기존에 application.yml 파일에 설정되어 있는 H2 정보 대신에 서버에서 사용하는 DB 정보로 수정하고 빌드하면 됨
➡️ 하지만 위처럼 진행하는 것은 불편하고 비효울적이기 때문에 Spring에서는 "프로파일" 이라는 기능을 제공함
📍프로파일 적용하기
- 프로파일을 설정하기 위해 -local.yml 과 -server.yml 파일 추가하고 각 내용을 구성하기
- appilcation.yml
- application-local.yml
- application-server.yml
IDE 에서 프로파일 적용하기
- 이렇게 설정해 놓으면 InteliiJ 에서 애플리케이션을 실행하고 H2 웹 콘솔로 접속할 수 있음
빌드된 실행 파일에 프로파일 적용하기
- 위처럼 설정하면 애플리케이션을 실행하고 연동해 놓은 DB 사용 가능
💡 애플리케이션 배포
➡️ Spring Boot 기반의 실행 가능한 Jar 파일을 서버 배포하는 방법
✔️ 전통적인 배포 방법
➡️ 가장 일반적인 방법에는 scp나 sftp 같은 표준 유닉스 툴을 이용해서 서버로 간단히 전송하는 것이 있음
➡️ 서버로 전송된 Jar 파일은 JVM이 설치된 환경이라면 어디서든 손쉽게 실행 가능함
✔️ 클라우드 서비스를 위한 배포 방법
➡️ Paas(Platform as a Service) : Cloud Foundry, Heroku
- Paas 제공 기업인 Cloud Foundry에서 제공하는 cf command line 툴을 사용하면 Executable Jar 파일을 손쉽게 배포 가능
➡️ IaaS(Infrastructure as a Service)
- Executable Jar는 AWS Elastic Beanstalk, AWS Container Registry, AWS Code Deploy 같은 서비스를 이용해 쉽게 배포 가능
- Microsoft의 클라우드 서비스인 Azure 역시 Azure Spring Cloud, Azure App Service에서 Spring Boot 기반의 Executable Jar 파일 배포 기능을 제공함
- Google Cloud 역시 Executable Jar 파일 배포를 위한 여러 가지 옵션을 제공하고 있음
➡️ CI /CD 플랫폼을 사용한 배포
- 배포 자동화를 이루고 싶다면 Github Actions나 Circle CI 같은 CI / CD 플랫폼을 이용해 AWS나 Azure 같은 클라우드 서비스에 Executable Jar 파일을 자동 배포하도록 구성할 수 있음
'SEB_BE_45 > 공부 정리' 카테고리의 다른 글
[Section 4] 인증/보안 기초 (0) | 2023.07.11 |
---|---|
[Section4] Spring Security - 인증 구성요소 이해 (0) | 2023.07.11 |
[Section3] Spring MVC - API 문서화 2 (0) | 2023.07.04 |
[Section3] Spring MVC - API 문서화 (0) | 2023.07.03 |
[Section3] Spring MVC - Testing 3 (0) | 2023.07.02 |