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. Настройка и требования
Настройка среды для самостоятельного обучения
- Войдите в консоль Google Cloud и создайте новый проект или используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .



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

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

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

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог объемом 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Большая часть, если не вся, ваша работа в этом практическом задании может быть выполнена с помощью браузера.
После подключения к Cloud Shell вы увидите, что прошли аутентификацию и что проект настроен на ваш идентификатор проекта.
- Выполните следующую команду в 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`
- Выполните следующую команду в 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.
- Для развертывания приложения в стандартной среде 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: java17
instance_class: F1
6. Добавьте контроллер
Добавьте в файл 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
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. Запустите приложение локально.
- Убедитесь, что переменная JAVA_HOME установлена на правильную версию JDK:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
- Вы можете запустить приложение Spring Boot с помощью плагина Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- После запуска приложения нажмите «Предварительный просмотр веб-страницы» .
В панели инструментов Cloud Shell выберите «Предварительный просмотр на порту 8080» .

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

8. Разверните приложение в App Engine.
- Во-первых, инициализируйте проект, чтобы он мог запускать приложения 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
- Затем разверните ваше приложение в стандартной среде App Engine, выполнив команду
mvn appengine:deploy.
$ ./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]
9. Уборка
Удалить приложение App Engine нельзя, но его можно отключить.
В консоли Google Cloud перейдите в раздел App Engine и Settings и выберите Disable Application :

В качестве альтернативы вы можете удалить весь проект:
$ gcloud projects delete YOUR-PROJECT-ID
10. Поздравляем!
Вы научились писать своё первое веб-приложение для App Engine!