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 Console и создайте новый проект или повторно используйте существующий. Если у вас еще нет учетной записи Gmail или Google Workspace, вам необходимо ее создать .
- Имя проекта — это отображаемое имя для участников этого проекта. Это строка символов, не используемая API Google. Вы всегда можете обновить его.
- Идентификатор проекта уникален для всех проектов Google Cloud и является неизменяемым (невозможно изменить после его установки). Cloud Console автоматически генерирует уникальную строку; обычно тебя не волнует, что это такое. В большинстве лабораторий кода вам потребуется указать идентификатор проекта (обычно идентифицируемый как
PROJECT_ID
). Если вам не нравится сгенерированный идентификатор, вы можете создать другой случайный идентификатор. Альтернативно, вы можете попробовать свой собственный и посмотреть, доступен ли он. Его нельзя изменить после этого шага и он сохраняется на протяжении всего проекта. - К вашему сведению, есть третье значение — номер проекта , которое используют некоторые API. Подробнее обо всех трех этих значениях читайте в документации .
- Затем вам необходимо включить выставление счетов в Cloud Console, чтобы использовать облачные ресурсы/API. Прохождение этой кодовой лаборатории не будет стоить много, если вообще что-то стоить. Чтобы отключить ресурсы и избежать выставления счетов за пределами этого руководства, вы можете удалить созданные вами ресурсы или удалить проект. Новые пользователи Google Cloud имеют право на участие в программе бесплатной пробной версии стоимостью 300 долларов США .
Облачная оболочка
Вы будете использовать Cloud Shell , среду командной строки, работающую в Google Cloud.
Активировать Cloud Shell
- В Cloud Console нажмите «Активировать Cloud Shell». .
Если вы запускаете Cloud Shell впервые, вы увидите промежуточный экран с описанием того, что это такое. Если вам был представлен промежуточный экран, нажмите «Продолжить» .
Подготовка и подключение к Cloud Shell займет всего несколько минут.
Эта виртуальная машина загружена всеми необходимыми инструментами разработки. Он предлагает постоянный домашний каталог объемом 5 ГБ и работает в Google Cloud, что значительно повышает производительность сети и аутентификацию. Большую часть, если не всю, работу в этой лаборатории кода можно выполнить с помощью браузера.
После подключения к 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
и добавьте следующий контент:
источник/основной/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. Запустите приложение локально.
- Убедитесь, что для 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, но можете отключить его.
Перейдите в App Engine
и Settings
в Google Cloud Console и выберите Disable Application
:
Альтернативно вы можете удалить весь проект:
$ gcloud projects delete YOUR-PROJECT-ID
10. Поздравления
Вы научились писать свое первое веб-приложение App Engine!