App Engine 표준 환경의 자바 8 빠른 시작

이 빠른 시작은 App Engine에 샘플 앱을 배포하는 방법을 보여줍니다. App Engine용 앱 코딩에 대한 자세한 내용은 앱 빌드를 참조하세요.

비용

이 가이드의 실행에는 비용이 발생하지 않습니다. 이 샘플 앱을 실행하는 것만으로는 무료 할당량이 초과되지 않습니다.

시작하기 전에

이 빠른 시작에서는 Java SE 8 Development Kit(JDK)가 설치되어 있다고 가정합니다.

이 빠른 시작을 실행하고 배포하기 전에 다음과 같이 Cloud SDK를 설치한 후 App Engine용 GCP 프로젝트를 설정합니다.

  1. Cloud SDK를 다운로드하여 설치합니다.

    SDK 다운로드

    참고: Cloud SDK가 이미 설치되어 있으면 다음 명령어를 실행하여 업데이트하세요.

    gcloud components update
    
  2. 새 프로젝트를 만듭니다.

    gcloud projects create [YOUR_PROJECT_ID] --set-as-default
    

    프로젝트가 만들어졌는지 확인합니다.

    gcloud projects describe [YOUR_PROJECT_ID]
    

    다음과 같은 프로젝트 세부정보가 표시됩니다.

    createTime: year-month-hour
    lifecycleState: ACTIVE
    name: project-name
    parent:
    id: '433637338589'
    type: organization
    projectId: project-name-id
    projectNumber: 499227785679
    
  3. 프로젝트로 App Engine 앱을 초기화하고 리전을 선택합니다.

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    메시지가 표시되면 App Engine 애플리케이션을 배치할 리전을 선택합니다.

  4. 다음 필수 구성요소를 설치합니다.

App Engine 위치

App Engine은 리전을 기반으로 합니다. 즉, 앱을 실행하는 인프라가 특정 리전에 있으며 이 리전 내 모든 영역에서 중복 사용할 수 있도록 Google에서 관리합니다.

앱을 실행하는 리전을 선택하는 데 있어 중요한 요인은 지연 시간, 가용성 또는 내구성 요구사항을 충족하는 것입니다. 일반적으로 앱 사용자와 가장 가까운 리전을 선택할 수 있지만 앱에서 사용되는 다른 GCP 제품과 서비스 위치도 고려해야 합니다. 여러 위치에서 서비스를 사용하면 앱의 지연 시간과 가격에 영향을 미칠 수 있습니다.

다음 리전에서 App Engine을 사용할 수 있습니다.

  • northamerica-northeast1(몬트리올)
  • us-central(아이오와)
  • us-west2(로스앤젤레스)
  • us-east1(사우스캐롤라이나)
  • us-east4(북 버지니아)
  • southamerica-east1(상파울루)
  • europe-west(벨기에)
  • europe-west2(런던)
  • europe-west3(프랑크푸르트)
  • europe-west6(취리히)
  • asia-northeast1(도쿄)
  • asia-northeast2(오사카)
  • asia-east2(홍콩)
  • asia-south1(뭄바이)
  • australia-southeast1(시드니)

앱의 리전을 설정한 후에는 변경할 수 없습니다.

App Engine 애플리케이션을 이미 만든 경우에는 gcloud app describe 명령어를 실행하거나 GCP Console의 App Engine 대시보드를 열어 리전을 확인할 수 있습니다. App Engine 애플리케이션의 지역은 http://[YOUR_PROJECT_ID].appspot.com에 나열됩니다.

Hello World 앱 다운로드

App Engine 표준 환경에 앱을 배포하는 방법을 빠르게 이해할 수 있도록 자바 8 런타임용의 간단한 Hello World 앱이 준비되어 있습니다.

샘플 앱을 다운로드한 후 앱 디렉토리로 이동하여 다음 안내를 따르세요.

  1. Hello World 샘플 앱 저장소를 로컬 머신에 복제합니다.

    git clone https://github.com/GoogleCloudPlatform/getting-started-java.git
    

    또는 zip 파일로 샘플을 다운로드하고 압축을 풉니다.

  2. 샘플 코드가 있는 디렉토리로 변경합니다.

    cd getting-started-java/appengine-standard-java8/helloworld
    

로컬 머신에서 Hello World 실행

로컬 컴퓨터에서 Hello World 앱을 실행하는 방법은 다음과 같습니다.

  1. Jetty Maven 플러그인을 사용하여 로컬 Jetty 웹 서버를 시작합니다.

    mvn appengine:run
    
  2. 웹브라우저에서 다음 주소로 이동합니다.

    http://localhost:8080
    
  3. 이 페이지에 표시된 샘플 앱에서 Hello World 메시지를 볼 수 있습니다.

  4. 터미널 창에서 Ctrl+C를 눌러 웹 서버를 종료합니다.

App Engine에서 Hello World 배포 및 실행

App Engine 표준 환경에 앱을 배포하려면 다음 안내를 따르세요.

  1. getting-started-java/appengine-standard-java8/helloworld 디렉토리에서 다음 명령어를 실행하여 Hello World 앱을 배포합니다.
    mvn appengine:deploy
    배포가 완료될 때까지 기다립니다.
  2. 다음 명령어를 실행하여 브라우저를 시작하고 http://YOUR_PROJECT_ID.appspot.com에서 앱을 확인합니다.
    gcloud app browse

이번에는 App Engine 인스턴스에서 실행 중인 웹 서버가 Hello World 메시지를 전송하는 페이지를 제공합니다.

축하합니다. App Engine 표준 환경에 첫 번째 자바 8 앱을 배포했습니다.

다음 섹션에서는 프로젝트 삭제 방법과 다음으로 진행할 수 있는 단계에 대한 링크를 제공합니다.

다음 단계

전체 플랫폼 알아보기

이제 App Engine 앱을 개발하고 배포하는 방법을 알았으므로 나머지 Google Cloud Platform에 대해 알아볼 수 있습니다. Google Cloud SDK가 이미 설치되어 있으므로 Google Cloud SQL, Google Cloud Storage, Google Cloud Datastore 등의 다양한 제품과 상호작용하는 도구가 제공됩니다. 둘러보기를 통해 App Engine만이 아니라 전체 플랫폼을 사용하는 애플리케이션을 만드는 방법을 알아보려면 Bookshelf 앱 만들기 빠른 시작을 확인하세요.

App Engine 표준 환경 알아보기

다음 항목을 통해 App Engine에 대해 더 알아볼 수 있습니다.

Hello World 코드 검토

Hello World는 가장 간단한 App Engine 앱입니다. 이 앱은 서비스 한 개만 포함하고 한 버전으로만 존재하며 모든 코드가 앱의 루트 디렉토리에 있습니다. 이 섹션에서는 각 앱 파일을 자세히 설명합니다.

HelloAppEngine.java

HelloServlet.java 파일은 앱이 요청을 수신하고 'Hello World' 메시지로 요청에 응답하는 위치를 설명하는 URL 패턴을 지정합니다.

import com.google.appengine.api.utils.SystemProperty;

import java.io.IOException;
import java.util.Properties;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

// With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required.
@WebServlet(name = "HelloAppEngine", value = "/hello")
public class HelloAppEngine extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws IOException {
    Properties properties = System.getProperties();

    response.setContentType("text/plain");
    response.getWriter().println("Hello App Engine - Standard using "
            + SystemProperty.version.get() + " Java "
            + properties.get("java.specification.version"));
  }

  public static String getInfo() {
    return "Version: " + System.getProperty("java.version")
          + " OS: " + System.getProperty("os.name")
          + " User: " + System.getProperty("user.name");
  }

}
  • 자바 8 런타임이 작동하는 방식에 대한 자세한 내용은 자바 8 런타임을 참조하세요.

pom.xml

Hello World에는 종속 항목 및 빌드 대상과 같은 프로젝트 관련 정보가 들어 있는 pom.xml 파일도 포함되어 있습니다.

<plugin>
  <groupId>com.google.cloud.tools</groupId>
  <artifactId>appengine-maven-plugin</artifactId>
  <version>1.3.1</version>
</plugin>
  • pom.xml 파일에 대한 자세한 내용은 Maven 문서를 참조하세요.

appengine-web.xml

appengine-web.xml 파일에는 App Engine에 이 애플리케이션을 자바 8 런타임에서 실행하라고 지시하는 <runtime> 요소의 java8 설정과 같은 필수 설정이 포함되어 있습니다.

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <runtime>java8</runtime>
  <threadsafe>true</threadsafe>
</appengine-web-app>