Skip to content

AWS Elastic Beanstalk

초기 프로젝트: embedded-server 또는 engine-main

최종 프로젝트: aws-elastic-beanstalk

이 튜토리얼에서는 Ktor 애플리케이션을 AWS Elastic Beanstalk에 준비하고 배포하는 방법을 보여드립니다. Ktor 서버 생성 방식에 따라 다음 초기 프로젝트 중 하나를 사용할 수 있습니다.

Java 애플리케이션 배포에 대한 자세한 내용은 Elastic Beanstalk 문서에서 확인하세요.

전제 조건

이 튜토리얼을 시작하기 전에 AWS 계정을 생성해야 합니다.

샘플 애플리케이션 복제

샘플 애플리케이션을 열려면 다음 단계를 따르세요.

  1. Ktor 문서 저장소를 복제하고 codeSnippets 프로젝트를 엽니다.
  2. embedded-server 또는 engine-main 샘플을 엽니다. 이 샘플들은 Ktor 서버 생성 및 구성에 대한 다른 접근 방식을 보여줍니다: 코드에서 또는 구성 파일을 사용하여. 이 프로젝트들을 배포할 때 유일한 차이점은 들어오는 요청을 수신하는 데 사용되는 포트를 지정하는 방법입니다.

애플리케이션 준비

1단계: 포트 구성

먼저, 들어오는 요청을 수신하는 데 사용될 포트를 지정해야 합니다. Elastic Beanstalk는 5000번 포트에서 애플리케이션으로 요청을 전달합니다. 선택적으로, PORT 환경 변수를 설정하여 기본 포트를 재정의할 수 있습니다. Ktor 서버를 구성하는 방식에 따라 다음 방법 중 하나로 포트를 구성할 수 있습니다.

  • 서버 구성이 코드에 지정된 embedded-server 샘플을 선택한 경우, System.getenv를 사용하여 환경 변수 값을 얻거나, 환경 변수가 지정되지 않은 경우 기본값인 _5000_을 사용할 수 있습니다. src/main/kotlin/com/example 폴더에 있는 Application.kt 파일을 열고 embeddedServer 함수의 port 매개변수 값을 아래와 같이 변경합니다.

    kotlin
    fun main() {
       embeddedServer(Netty, port = (System.getenv("PORT")?:"5000").toInt()) {
       // ...
       }.start(wait = true)
    }
  • 서버 구성이 application.conf 파일에 지정된 engine-main 샘플을 선택한 경우, ${ENV} 구문을 사용하여 환경 변수를 port 매개변수에 할당할 수 있습니다. src/main/resources에 있는 application.conf 파일을 열고 아래와 같이 업데이트합니다.

    ktor {
        deployment {
            port = 5000
            port = ${?PORT}
        }
    }

2단계: Ktor 플러그인 적용

이 튜토리얼은 fat JAR를 사용하여 Elastic Beanstalk에 애플리케이션을 배포하는 방법을 보여줍니다. fat JAR를 생성하려면 Ktor 플러그인을 적용해야 합니다. build.gradle.kts 파일을 열고 plugins 블록에 플러그인을 추가합니다.

groovy
plugins {
    id("io.ktor.plugin") version "3.2.3"
}

그런 다음, 메인 애플리케이션 클래스가 구성되었는지 확인합니다.

kotlin
application {
    mainClass.set("io.ktor.server.netty.EngineMain")
}

Fat JAR 빌드

Fat JAR를 빌드하려면 터미널을 열고 Ktor 플러그인이 제공하는 buildFatJar 태스크를 실행합니다.

이 빌드가 완료되면 build/libs 디렉터리에서 aws-elastic-beanstalk-all.jar 파일을 볼 수 있습니다.

애플리케이션 배포

애플리케이션을 배포하려면 AWS Management Console에 로그인하고 다음 단계를 따르세요.

  1. AWS 서비스 그룹에서 Elastic Beanstalk 서비스를 엽니다.
  2. 열린 페이지에서 애플리케이션 생성을 클릭합니다.
  3. 다음 애플리케이션 설정을 지정합니다.
    • 애플리케이션 이름: 애플리케이션 이름을 지정합니다 (예: Sample Ktor app).
    • 플랫폼: 목록에서 _Java_를 선택합니다.
    • 플랫폼 브랜치: _Corretto 11 running on 64bit Amazon Linux 2_를 선택합니다.
    • 애플리케이션 코드: _코드 업로드_를 선택합니다.
    • 소스 코드 원본: _로컬 파일_을 선택합니다. 그런 다음 파일 선택 버튼을 클릭하고 이전 단계에서 생성된 Fat JAR를 선택합니다. 파일이 업로드될 때까지 기다립니다.
  4. 애플리케이션 생성 버튼을 클릭하고 Beanstalk가 환경을 생성하고 애플리케이션을 게시할 때까지 몇 분 정도 기다립니다.
    INFO    Instance deployment completed successfully.
    INFO    Application available at Samplektorapp-env.eba-bnye2kpu.us-east-2.elasticbeanstalk.com.
    INFO    Successfully launched environment: Samplektorapp-env