App Engine 앱은 생성 및 유지관리가 쉬우며, 트래픽과 데이터 저장소의 요구사항이 변화하더라도 간단하게 확장이 가능합니다. App Engine의 경우 유지관리해야 하는 서버가 없습니다. 앱을 업로드하기만 하면 바로 사용할 수 있습니다.
App Engine 앱은 수신 트래픽에 따라 자동으로 확장됩니다. 부하 분산, 마이크로서비스, 승인, SQL 및 NoSQL 데이터베이스, 메모리 캐싱, 트래픽 분할, 로깅, 검색, 버전 관리, 출시 및 롤백, 보안 스캔이 모두 기본적으로 지원되며 맞춤설정 가능합니다.
App Engine 표준 환경과 App Engine 가변형 환경은 Java, Python, PHP, NodeJS, Go 등 다양한 프로그래밍 언어를 지원합니다. 두 환경을 통해 개발자는 앱의 동작을 최대한 유연하게 제어할 수 있습니다. 각 환경에는 특정 강점이 있습니다. 자세한 내용은 App Engine 환경 선택을 참고하세요.
App Engine 표준 환경에 Spring Boot 앱을 배포하는 방법을 알아봅니다. 표준 환경은 아무도 사용하지 않을 때 인스턴스 수가 0으로 축소되고 자동으로 확장됩니다.
기본 요건
- Java 프로그래밍 언어 및 도구에 대한 기본 지식
- Vim, Emacs, nano와 같은 표준 Linux 텍스트 편집기에 관한 지식
실행할 작업
- App Engine에서 Spring Boot Java 앱을 만드는 방법
필요한 항목
- Google Cloud 프로젝트
- 브라우저(예: Google Chrome)
자습형 환경 설정
모든 Google Cloud 프로젝트에서 고유한 이름인 프로젝트 ID를 기억하세요(위의 이름은 이미 사용되었으므로 사용할 수 없습니다). 이 ID는 나중에 이 Codelab에서 PROJECT_ID
라고 부릅니다.
- 그런 다음 Google Cloud 리소스를 사용할 수 있도록 Cloud 콘솔에서 결제를 사용 설정해야 합니다.
이 Codelab을 실행하는 과정에는 많은 비용이 들지 않지만 더 많은 리소스를 사용하려고 하거나 실행 중일 경우 비용이 더 들 수 있습니다.
Google Cloud 신규 사용자는 $300 상당의 무료 체험판을 사용할 수 있습니다.
Cloud Shell
Google Cloud에서 실행되는 명령줄 환경인 Cloud Shell을 사용합니다.
Cloud Shell 활성화
- Cloud 콘솔에서 Cloud Shell 활성화
를 클릭합니다.
이전에 Cloud Shell을 시작하지 않았으면 설명이 포함된 중간 화면(스크롤해야 볼 수 있는 부분)이 제공됩니다. 이 경우 계속을 클릭합니다(이후 다시 표시되지 않음). 이 일회성 화면은 다음과 같습니다.
Cloud Shell을 프로비저닝하고 연결하는 데 몇 분 정도만 걸립니다.
가상 머신에는 필요한 개발 도구가 모두 들어있습니다. 영구적인 5GB 홈 디렉터리를 제공하고 Google Cloud에서 실행되므로 네트워크 성능과 인증이 크게 개선됩니다. 이 Codelab에서 대부분의 작업은 브라우저나 Chromebook만 사용하여 수행할 수 있습니다.
Cloud Shell에 연결되면 인증이 완료되었고 프로젝트가 해당 프로젝트 ID로 이미 설정된 것을 볼 수 있습니다.
- Cloud Shell에서 다음 명령어를 실행하여 인증되었는지 확인합니다.
gcloud auth list
명령어 결과
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
명령어 결과
[core] project = <PROJECT_ID>
또는 다음 명령어로 설정할 수 있습니다.
gcloud config set project <PROJECT_ID>
명령어 결과
Updated property [core/project].
Cloud Shell이 실행되면 명령줄을 사용하여 Spring Initializr로 새 Spring Boot 앱을 생성할 수 있습니다.
$ curl https://start.spring.io/starter.tgz \ -d bootVersion=2.1.8.RELEASE \ -d dependencies=web \ -d baseDir=gae-standard-example | tar -xzvf - $ cd gae-standard-example
Java 서버 앱을 배포하는 방법에는 Maven App Engine 플러그인 또는 Gradle App Engine 플러그인을 사용하거나 war
패키지 디렉터리를 배포하는 두 가지 방법이 있습니다. Maven App Engine 플러그인을 사용하여 앱을 배포합니다.
Maven App Engine 플러그인 추가
배포 프로세스를 간소화하는 Google Cloud 플러그인을 포함하도록 pom.xml
를 업데이트합니다. Vim, nano 또는 Emacs를 사용하여 파일을 수정할 수 있습니다.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
...
<build>
<plugins>
...
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.1.0</version>
<configuration>
<version>1</version>
<projectId>GCLOUD_CONFIG</projectId>
</configuration>
</plugin>
...
</plugins>
</build>
</project>
- App Engine 표준 환경에 앱을 배포하려면 새
src/main/appengine/app.yaml
설명자 파일을 만들어야 합니다.
$ mkdir -p src/main/appengine/ $ touch src/main/appengine/app.yaml
src/main/appengine/app.yaml
파일을 수정하고 다음 콘텐츠를 추가합니다.
src/main/appengine/app.yaml
runtime: java11
instance_class: F4
DemoApplication.java
에서 "hello world!"
를 반환하는 새 컨트롤러를 추가합니다.
src/main/java/com/example/demo/DemoApplication.java
package com.example.demo;
...
// Add imports
import org.springframework.web.bind.annotation.*;
@SpringBootApplication
@RestController
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
@GetMapping("/")
public String hello() {
return "hello world!";
}
}
- Spring Boot 플러그인으로 Spring Boot 앱을 시작할 수 있습니다.
$ ./mvnw -DskipTests spring-boot:run
- 앱이 시작되면 Cloud Shell 툴바에서 웹 미리보기
를 클릭하고 포트 8080에서 미리보기를 선택합니다.
브라우저의 탭이 열리면서 시작한 서버에 연결됩니다.
- 먼저 App Engine 앱을 실행할 수 있도록 프로젝트를 초기화합니다. 또한 미국 중부 리전에서 실행되도록 프로젝트를 초기화합니다.
$ gcloud app create --region us-central You are creating an app for project [...]. WARNING: Creating an App Engine application for a project is irreversible and the region cannot be changed. More information about regions is at https://cloud.google.com/appengine/docs/locations
- 그런 다음
mvn appengine:deploy
을 실행하여 App Engine 표준 환경에 앱을 배포합니다.
$ ./mvnw -DskipTests package appengine:deploy ... first time deploy may take a couple of minutes
- 앱이 배포된 후 웹브라우저에서 http://<project-id>.appspot.com을 열거나 Cloud Shell에서 다음 명령어를 사용하여 앱을 방문할 수 있습니다.
$ gcloud app browse ... [It may print out the URL for your app]
첫 번째 App Engine 웹 앱을 작성하는 방법을 배웠습니다.