개요
Spring Boot 프로젝트를 간단한 시연 혹은 토이 프로젝트 등의 용도로 빠르게 배포해야 하는 경우가 종종 있다.
기존에는 대부분 Heroku를 이용하여 빠르게 배포하는 경우가 많았는데,
Heroku가 전면 유료화되면서 무료로 배포하기 어려운 상황이 되었다.
Heroku를 대체할 만한 방법을 찾고 여러 플랫폼을 비교해 본 끝에,
가장 쉽고 빠르게 배포할 수 있는 플랫폼인 Koyeb을 이용하여 배포하기로 결정했다.
https://www.koyeb.com/
Koyeb 특징
- Koyeb을 이용한 배포를 진행하는 경우 기존 Heroku 배포 방법과 흡사하여 마이그레이션이 간편하다.
- 무료 플랜을 이용할 경우 Credit Card 인증 절차가 없어 나도 모르게 돈이 빠져나갈 일이 없다.
- 무료 플랜으로는 최대 1대의 서버만 생성할 수 있어 다른 Application을 배포하고 싶은 경우 기존 Application을 삭제해야 한다.
- 무료 플랜이어도 수면 모드나 중단 시간이 없다. (사양 자체가 성능이 좋지 않은 건 어쩔 수 없지만..)
- 배포된 서버의 Metric 지표 및 Log를 확인할 수 있다.
배포 방법
Koyeb으로 배포하는 경우 GitHub repository 기반 배포 방식과 Docker registry 기반 배포 방식이 있는데,
여기에서는 빠른 배포가 중점이므로 GitHub repository 기반 배포 방식을 설명한다.
GitHub repository 기반 배포는 git update가 일어난 경우 자동으로 배포를 수행한다.
프로젝트 설정
프로젝트 root 경로에 system.properties
파일을 생성하고 아래와 같이 버전 정보를 기입한 후 push 한다.
java.runtime.version={java 버전}
# ex) java.runtime.version=17
참고) java 버전은 아래 링크에서 지원하는 버전을 확인하고 기입해야 한다.
https://www.koyeb.com/docs/build-and-deploy/build-from-git/java
Koyeb 배포 설정
1. 사이트에 접속하여 회원가입을 진행하고, 로그인한다.
2. 홈 화면에서 Create Web Service를 클릭한다.
3. Choose your deployment method 단계에서 GitHub를 선택한다.
이 단계에서 GitHub 연동이 되어있지 않은 경우 GitHub 연동을 수행한다.
4. 원하는 GitHub repository를 검색하여 선택한다.
5. Source 토글을 열고 아래와 같이 기입한다.
- repository 확인 및 기준 브랜치 설정
- Autodeploy 체크박스 확인 (체크하면 branch 변경사항 발생 시 자동 배포)
6. Builder 토글을 열고 아래와 같이 기입한다.
- Buildpack 선택
- Run command Override 활성화 -> build 된 jar 파일 경로 기준으로 실행 명령어 기입
- 프로젝트에서 Procfile을 생성하고 아래와 같이 기입하면 Run command를 생략할 수 있다.
7. Regions 토글을 열고 아래와 같이 기입한다.
- Washington, D.C 선택 (무료로는 Frankfurt, Washington만 설정이 가능하고, Washington이 지연 시간이 짧다.)
8. Exposed ports 토글을 열고 아래와 같이 기입한다.
- Port : 내부 Application 포트 (Spring 기본 : 8080)
- Protocol : HTTP (HTTP/2로 설정 시 간헐적으로
upstream connect error or disconnect/reset before headers. reset reason: connection termination
오류가 발생하여 사용하기 어려웠다.) - Path : /
9. App and Service names 토글을 열고 아래와 같이 기입한다.
- App name 설정 (도메인에 해당 App name이 포함되어 들어간다.)
- Service name 설정 (서비스 식별에 필요하나, 무료 플랜에서는 어차피 1개밖에 생성할 수 없어 자유롭게 입력한다.)
10. Deploy 버튼을 눌러 배포를 진행한다.
배포 확인
생성한 App 정보에서 배포 진행 상황을 확인할 수 있다.
아래와 같이 Active 표시가 활성화된 경우 배포가 정상적으로 완료되었음을 나타낸다.
설정된 Public URL로 접속하여 Application이 잘 동작하는지 확인해 보자.
마무리
간단하고 빠르게 배포를 완료하였다.
무료 플랜으로는 여러 Application을 배포할 수 없다는 점이 아쉽지만,
중단 없이 하나의 프로젝트를 무료로 빠르게 배포할 수 있는 점에 만족하며 사용해야 할 것 같다.
'Java & Spring' 카테고리의 다른 글
[사내 세미나] Spring Batch 도입하기 (3) | 2024.09.04 |
---|---|
[Spring] 레거시 프로젝트에 Testcontainers 도입하기 (2) | 2024.07.07 |
[Spring] eventListener, transactionalEventListener 예외 및 트랜잭션 전파 총정리 (0) | 2023.12.29 |
[Spring] QueryDsl transform 및 SqmCaseSearched 오류 해결방법 with Hibernate 6.x (0) | 2023.10.05 |
[Spring] JPA 다중 서버 환경 DB 동시성 문제 해결하기 (2) | 2023.08.18 |