SEB_BE 59일차 - 애플리케이션 빌드/실행/배포

subimm_·2022년 11월 16일
0

코드스테이츠

목록 보기
59/83

💡오늘의 학습목표

  • 애플리케이션 빌드/실행/배포
  • MySQL SpringBoot 연동 실습 (분산트랜잭션 접속정보 찾아보기)
  • 이미지 업로드

📔 애플리케이션 빌드

  • 애플리케이션을 로컬 환경이 아닌 서버 환경에서 실행 가능하게 하려면 Gradle이나 Maven 같은 빌드 툴을 이용해서 Spring Boot 기반의 애플이케이션 소스 코드를 빌드

✔ IntelliJ IDE를 이용한 빌드

  • 빌드가 정상적으로 종료되면 Bbuild/libs 디렉토리에 Jar 파일 생성됨.
  • 생성된 Jar 파일은 로컬 PC에서 실행 가능한 애플리케이션 실행 파일

    :build 태스크를 실행하면 Gradle에서 빌드와 관련된 모든 task 실행, 실행 가능한 Jar 파일 이외에 Plain Jar 파일을 하나 더 생성함.
    :bootJar 는 빌드와 관련된 모든 task를 실행하지 않고, 애플리케이션의 실행가능한 Jar(Executable Jar) 파일을 생성하기 위한 task만 실행함.

✔ Gradle Task를 이용한 빌드

  • IntelliJ IDE가 설치되어 있지 않은 상황에서 빌드
    Gradle task 명령어를 콘솔에서 바로 입력하여 빌드함.
  1. 템플릿 프로젝트가 위치해 있는 디렉토리 경로로 이동
  2. Gradle task를 CLI 명령으로 입력할 수 있는 콘솔창을 템플릿 프로젝트 root경로에서 오픈
  3. 명령어 입력
  • Windows 터미널의 경우 (경로는 다를 수 있음)
    C:\Users\subim\codestates Project\be-template-build>.\gradlew bootJar
  • Git Bash의 경우
    MINGW64 /d/codestates/project/kdt/for-ese/section3-week4-build (main)
    $ ./gradlew build

📔 애플리케이션 실행

  1. 빌드를 통해 생성된 Jar 파일이 있는 디렉토리 경로로 이동
  2. 터미널 창을 오픈한 후에 java -jar (Jar 파일명).jar 입력

프로파일 (Profile) 적용
빌드된 애플리케이션 실행 파일을 서버 환경에서 운영한마녀 인메모리 DB를 사용하면 안된다.

  • 프로파일을 적용해서 애플리케이션이 빌드 될 때, 로컬환경에서는 로컬환경의 DB 설정 정보를 실행 파일에 포함하고, 서버 환경일 경우에는 서버 환경의 DB 설정 정보를 실행 파일에 포함하도록 한다.
  1. application.yml 이외에 파일 두개 추가
  2. 각각 파일 구성
    application.yml 파일은 주로 애플리케이션의 실행환경에 상관없이 공통적으로 적용할 수 있는 프로퍼티 설정 가능
    application-local.yml 파일은 로컬 환경에서 사용하는 정보
    application-server.yml 파일은 서버 환경에서 사용하는 정보 (실제 서버나 AWS같은 클라우드에서 실행 시켜야 할 때)
  • 대표적인 서버 환경의 설정 정보는 DB 접속 정보

✔ IntelliJ IDE에서 프로파일 적용
1. 애플리케이션 실행 파일이 위치한 셀렉트 박스 클릭 후 Edit Configurations 클릭

2. Program arguments 필드에 --spring.profiles.active=local 입력해서 활성화 지정
여기서의 local 은 application-local.yml 파일에서 local을 가르킴

  • 스프링에서 프로파일을 지정하는 가장 손쉬운 방법은 - 를 기준으로 프로파일명을 yml파일 이름안에 포함하는것
  • 프로파일 정상 적용 확인

✔ 빌드된 실행 파일에 프로파일 적용

  • 프로파일 기능은 빌드된 실행 파일을 어느 환경에서 실행할 지 여부를 결정할 때 주로 사용함.
  • 빌드 된 실행 파일에 프로파일을 적용해서 실행
    터미널에서 java -jar section3-week4-build-0.0.1-SNAPSHOT.jar 뒤에 똑같이 --spring.profiles.active=local 설정 추가
  • 프로파일 애너테이션 활용 (개발환경 / 운영환경 구분 가능)

📔 애플리케이션 배포 방법

✔ 전통적인 배포 방법

  • Spring Boot 기반의 Excutable Jar 파일을 배포하는 일반적인 방법은 scp나 sftp 같은 표준 유닉스 툴을 이용해서 서버로 전송하는 것, 서버로 전송된 파일은 JVM이 설치된 환경이라면 어디서든 실행 가능

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

  • PaaS(Platform as a Service)

    • Cloud Foundry, HeroKu
      대표적인 PaaS 제공기업인 Cloud Foundry에서 제공하는 cf command line 툴을 사용
      툴 사용 예) $ cf push acloudyspringtime -p target/app-0.0.1-SNAPSHOT.jar
  • IaaS(Infrastructure as a Service)

    • Exeutale Jar은 AWS Elastic Beanstalk, AWS Container Registry, AWS Code Deploy 같은 서비스를 이용해서 배포 가능
    • Microsoft의 클라우드 서비스인 Azure 역시 Azure Spring Cloud, Azure App Service 에서 Spring Boot 기반의 Executable Jar 파일 배포 기능 제공
    • Google Cloud
  • CI / CD 플랫폼을 사용한 배포

    • 실무에서 Executable Jar 파일에 대한 배포 자동화를 이루고 시다면 Github Actions나 Circle CI 같은 플랫폼을 이용해 AWS나 Azure 같은 클라우드 서비스에 파일을 자동 배포하도록 구성 가능

📜 MySQL 연동 (수정필요)

참고 :https://gyuwon95.tistory.com/167
1. 그래들 의존성 추가
implementation 'mysql:mysql-connector-java'
2. application.yml 설정

🔍 이미지 업로드 (확인)

profile
코린이의 공부 일지

0개의 댓글