- 시작하게 된 계기 및 다짐 😮
- 학습 목표 😮
목표 | 결과 |
---|
Gradle 기반의 애플리케이션 실행 파일을 빌드 | O |
빌드로 생성된 애플리케이션 실행 파일을 로컬 PC에서 실행 | O |
애플리케이션 빌드 시, 프로파일(Profile)을 적용 | O |
Spring Boot 기반 애플리케이션의 기본적인 배포 방법을 이해 | O |
- 정리 😮
애플리케이션 빌드/실행/배포
Ⅰ. 애플리케이션 빌드/실행/배포
0. 용어 정리
- :build : :assemble, :check과 같인 Gradle에서 빌드와 관련된 모든 task실행
싱행가능한 plain Jar파일 하나를 더 생성
- :booJar : 애플리케이션의 실행 가능한 (Jar)파일을 생성하기 위한 task만 실행
1. Gradle Task를 이용한 빌드(X IntelliJ)
1). Window : .\gradlew bootJar
2). GIt bash : ./gradlew build
2. jar파일 실행 방법
-
Git bash : 해당 jar파일 내부에서
-
해당 jar 파일을 언 ㅡ환경에서 실행할 지 여부를 따로 결정할 수 있음
- [java -jar Jar 파일명.jar --spring.profiles.active=local(지정)]
-
프로파일(Profile) 적용
- 애플리케이션 환경에서는 인메모리 DB 사용시 재시작시마다 데이터가 초기화되어 DB정보를 수정필요
- 매번 수정이 힘들어, Spring에서 프로파일(Profile)을 사용
1). application.yml
- 애플리케이션 실행환경에 상관없이 공통적으로 적용할 수 있는 프로퍼티 설정
- 항상 실행이 된다.
2). application-local.yml
3). application-server.yml
- 서버 환경에 필요한 정보들로, 실제 서버나 AWS 같은 클라우드에서 실행시 파일 설정
[Edit Configuration] -> --spring.profiles.active=local 적용
- application.local.yml 에서 local과 같은 부분을 사용
4. 애플리케이션 배포
-
전통적인 배포 방법
- Spring기반의 Excuatable Jar파일을 서버에 배포하는 방식은 일반적으로 scp나 stfp 같은 유닉스 툴을 이용
하여 서버로 간단히 전송, 해당 파일은 JVM 환경이면 어디든 실행 가능
-
클라우드 서비스를 위한 배포 방법
(1) PaaS(Platform as a Service)_CloudFoundry, heroku
- Paas 기업인 Cloud Foundry에서 제공하는 cf command line 툴을 사용하여 배포
[Ex. cf push acloudyspringtime -p target/app-0.0.1-SNAPSHOT.jar]
(2) IaaS(Infrastructure as a Service)
- (AWS)AWS Elastic Beanstalk, AWS Container Registry, AWS Code Deploy 같은 서비스를 이용해서 손쉽게 배포
- (AZURE)Microsoft의 클라우드 서비스인 Azure 역시 Azure Spring Cloud, Azure App Service 에서 Spring Boot 기반의 Executable Jar 파일 배포 기능을 제공
- (Google Cloud)Google Cloud 역시 Executable Jar 파일 배포를 위한 여러가지 옵션을 제공
(3) CI / CD 플랫폼을 사용한 배포
- 여러분들이 실무에서 Executable Jar 파일에 대한 배포 자동화를 이루고 싶다면 Github Actions나 Circle CI 같은 CI / CD 플랫폼을 이용해 AWS나 Azure 같은 클라우드 서비스에 Executable Jar 파일을 자동 배포하도록 구성
Extra
- Spring Boot 기반의 애플리케이션을 실행하는 방법
- Spring의 Profile 기능
- scp
- 피드백 😮
- 앞으로 해야 될 것 😮
- 매일 꾸준히 할 것
- 꾸준히 velog 작성
- Java 언어 및 Algorithm 공부(Coding-Test)
- 틈틈히 운동 하기
- 내일 해야 할 것
- 새로운 Section4. Spring Security 학습