Развертывание приложения Spring Boot в стандартной среде App Engine

1. Прежде чем начать

Приложения App Engine легко создавать, легко обслуживать и легко масштабировать по мере изменения потребностей в трафике и хранилище данных. Благодаря App Engine вам не придется обслуживать серверы. Вы просто загружаете свое приложение, и оно готово к работе.

Приложения App Engine автоматически масштабируются в зависимости от входящего трафика. Балансировка нагрузки, микросервисы, авторизация, базы данных SQL и NoSQL, кэширование памяти, разделение трафика, ведение журналов, поиск, управление версиями, развертывание и откат, а также сканирование безопасности — все это поддерживается изначально и имеет широкие возможности настройки.

Стандартная среда App Engine и гибкая среда App Engine поддерживают множество языков программирования, включая Java, Python, PHP, NodeJS и Go. Эти две среды предоставляют разработчикам максимальную гибкость в выборе поведения приложения. Каждая среда имеет определенные сильные стороны. Дополнительную информацию см. в разделе Выбор среды App Engine .

Вы научитесь развертывать приложение Spring Boot в стандартной среде App Engine. Стандартная среда сокращается до нуля, когда ее никто не использует, и автоматически масштабируется!

Предварительные условия

  • Знание языка программирования и инструментов Java.
  • Знание стандартных текстовых редакторов Linux, таких как Vim, Emacs и nano.

Что ты будешь делать

  • Как создать Java-приложение Spring Boot в App Engine

Что вам понадобится

  • Проект Google Cloud
  • Браузер, например Google Chrome

2. Настройка и требования

Самостоятельная настройка среды

  1. Войдите в Google Cloud Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
  • Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как PROJECT_ID ). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта.
  • К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
  1. Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .

Облачная оболочка

Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud.

Активировать Cloud Shell

  1. В Cloud Console нажмите «Активировать Cloud Shell». 853e55310c205094.png .

55efc1aaa7a4d3ad.png

Если вы запускаете Cloud Shell впервые, вы увидите промежуточный экран с описанием того, что это такое. Если вам был представлен промежуточный экран, нажмите «Продолжить» .

9c92662c6a846a5c.png

Подготовка и подключение к Cloud Shell займет всего несколько минут.

9f0e51b578fecce5.png

Эта виртуальная машина загружена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Большую часть, если не всю, работу в этой лаборатории кода можно выполнить с помощью браузера.

После подключения к Cloud Shell вы увидите, что вы прошли аутентификацию и что для проекта установлен идентификатор вашего проекта.

  1. Выполните следующую команду в 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`
  1. Выполните следующую команду в Cloud Shell, чтобы убедиться, что команда gcloud знает о вашем проекте:
gcloud config list project

Вывод команды

[core]
project = <PROJECT_ID>

Если это не так, вы можете установить его с помощью этой команды:

gcloud config set project <PROJECT_ID>

Вывод команды

Updated property [core/project].

3. Создайте новое веб-приложение Spring Boot.

После запуска Cloud Shell вы можете использовать командную строку для создания нового приложения Spring Boot с помощью Spring Initializr.

$ curl https://start.spring.io/starter.tgz \
  -d bootVersion=3.0.5 \
  -d dependencies=web \
  -d type=maven-project \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

4. Обновите Maven pom.xml.

Существует два способа развертывания серверного приложения Java — либо с помощью подключаемого модуля Maven App Engine или подключаемого модуля Gradle App Engine, либо путем развертывания каталога пакета war . Для развертывания приложения вы будете использовать подключаемый модуль Maven App Engine.

Добавить плагин Maven App Engine

Обновите pom.xml , включив в него плагин Google Cloud, который упрощает процесс развертывания. Для редактирования файла вы можете использовать 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.4.4</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>

5. Добавьте дескриптор App Engine.

  1. Чтобы развернуть приложение в стандартной среде App Engine, необходимо создать новый файл дескриптора src/main/appengine/app.yaml .
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. Отредактируйте файл src/main/appengine/app.yaml и добавьте следующий контент:

источник/основной/appengine/app.yaml

runtime: java17
instance_class: F1

6. Добавьте контроллер

Добавьте новый контроллер, который возвращает "hello world!" в DemoApplication.java .

src/main/java/com/example/demo/DemoApplication.java

package com.example.demo;

...

// Add imports
import org.springframework.web.bind.annotation.*;

@SpringBootApplication
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }
}

// Add the controller.
@RestController
class HelloWorldController {
  @GetMapping("/")
  public String hello() {
    return "hello world!";
  }
}

7. Запустите приложение локально.

  1. Убедитесь, что для JAVA_HOME установлена ​​правильная версия JDK:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
  1. Вы можете запустить приложение Spring Boot с помощью плагина Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. После запуска приложения нажмите «Предварительный просмотр в Интернете». 1a94d5bd10bfc072.png на панели инструментов Cloud Shell и выберите «Предварительный просмотр на порту 8080» .

3aca52f76c6c22a3.png

В вашем браузере откроется вкладка и произойдет подключение к серверу, который вы запустили.

7b0d8494f647822a.png

8. Разверните приложение в App Engine.

  1. Сначала инициализируйте проект, чтобы иметь возможность запускать приложения 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
  1. Затем разверните приложение в стандартной среде App Engine, запустив mvn appengine:deploy .
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. После развертывания приложения вы можете посетить его, открыв http://<project-id>.appspot.com в веб-браузере или используя следующую команду в Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

9. Очистка

Вы не можете удалить приложение App Engine, но можете отключить его.

Перейдите в App Engine и Settings в Google Cloud Console и выберите Disable Application :

8052c1e4ad73d70e.png

Альтернативно вы можете удалить весь проект:

$ gcloud projects delete YOUR-PROJECT-ID

10. Поздравления

Вы научились писать свое первое веб-приложение App Engine!

Узнать больше