Heroku
이 튜토리얼에서는 Ktor 애플리케이션을 Heroku에 배포하기 위해 준비하고 배포하는 방법을 설명합니다.
사전 준비 사항
이 튜토리얼을 시작하기 전에 다음 사항이 충족되었는지 확인하세요:
- Heroku 계정이 있어야 합니다.
- 로컬 머신에 Heroku CLI가 설치되어 있어야 합니다.
샘플 애플리케이션 생성
새 Ktor 프로젝트 생성, 열기 및 실행에 설명된 대로 샘플 애플리케이션을 생성합니다.
Ktor는 서버를 생성하고 설정하는 두 가지 방식(코드 사용 또는 설정 파일 사용)을 제공합니다. 배포 시 유일한 차이점은 들어오는 요청을 수신하는 데 사용되는 포트(port)를 지정하는 방법입니다.
애플리케이션 준비
1단계: 포트 설정
먼저, 들어오는 요청을 수신하는 데 사용할 포트를 지정해야 합니다. Heroku는 PORT 환경 변수(environment variable)를 사용하므로, 이 변수의 값을 사용하도록 애플리케이션을 설정해야 합니다. Ktor 서버를 설정하는 방식에 따라 다음 중 하나를 수행하세요:
서버 설정이 코드에 명시된 경우,
System.getenv를 사용하여 환경 변수 값을 가져올 수 있습니다. src/main/kotlin/com/example 폴더에 있는 Application.kt 파일을 열고embeddedServer()함수의port파라미터 값을 아래와 같이 변경하세요:kotlinfun main() { embeddedServer(Netty, port = System.getenv("PORT")?.toIntOrNull() ?: 8080) { // ... }.start(wait = true) }서버 설정이 application.conf 파일에 명시된 경우,
${ENV}구문을 사용하여port파라미터에 환경 변수를 할당할 수 있습니다. src/main/resources에 있는 application.conf 파일을 열고 아래와 같이 업데이트하세요:ktor { deployment { port = 8080 port = ${?PORT} } }
2단계: stage 태스크 추가
build.gradle.kts 파일을 열고 커스텀stage 태스크를 추가합니다. Heroku는 Heroku 플랫폼에서 실행되는 실행 파일을 만들기 위해 stage 태스크를 사용합니다:tasks {
create("stage").dependsOn("installDist")
}
installDist태스크는 Gradle application 플러그인과 함께 제공되며, 샘플 프로젝트에는 이미 추가되어 있습니다.
3단계: Procfile 생성
프로젝트 루트에 Procfile을 생성하고 다음 내용을 추가합니다:
web: ./build/install/ktor-get-started-sample/bin/ktor-get-started-sample이 파일은 stage 태스크에 의해 생성된 애플리케이션 실행 파일의 경로를 지정하며, Heroku가 애플리케이션을 시작할 수 있게 해줍니다. ktor-get-started-sample 부분을 본인의 프로젝트 이름으로 변경해야 할 수도 있습니다.
4단계: Java 버전 지정(선택 사항)
기본적으로 Heroku는 애플리케이션을 실행하는 데 Java 25를 사용합니다. 만약 Ktor 애플리케이션이 다른 Java 버전으로 컴파일되었다면, 배포 실패를 방지하기 위해 이를 명시적으로 지정해야 합니다.
Java 버전을 지정하려면 프로젝트의 루트 폴더에 다음 내용을 포함하는 system.properties 파일을 생성하세요:
java.runtime.version=2121을 원하는 Java 버전으로 변경하세요.
자세한 내용은 Java 버전 지정에 관한 Heroku 문서를 참조하세요.
애플리케이션 배포
Git을 사용하여 Heroku에 애플리케이션을 배포하려면 새 터미널 창을 열고 다음 단계를 따르세요:
이전 섹션에서 변경한 내용을 로컬에 커밋합니다:
Bashgit add . git commit -m "Prepare app for deploying"Heroku CLI에 로그인합니다:
Bashheroku loginheroku create명령어를 사용하여 Heroku 애플리케이션을 생성합니다.ktor-sample-heroku를 본인의 애플리케이션 이름으로 변경하세요:Bashheroku create ktor-sample-heroku이 명령어는 다음 두 가지 작업을 수행합니다:
- 새로운 Heroku 애플리케이션을 생성하며, 이는 웹 대시보드에서 확인할 수 있습니다.
- 로컬 저장소에
heroku라는 이름의 새로운 Git 원격 저장소(remote)를 추가합니다.
애플리케이션을 배포하려면 변경 사항을
heroku main으로 푸시합니다:Bashgit push heroku mainHeroku가 애플리케이션을 빌드하고 게시할 때까지 기다립니다. 완료되면 다음과 같은 출력이 표시됩니다:
bash... remote: https://ktor-sample-heroku.herokuapp.com/ deployed to Heroku remote: remote: Verifying deploy... done.
