Men-deploy aplikasi Spring Boot ke lingkungan standar App Engine

1. Sebelum memulai

Aplikasi App Engine mudah dibuat, mudah dikelola, dan mudah diskalakan sesuai kebutuhan traffic dan penyimpanan data Anda. Dengan App Engine, tidak ada server yang harus dipelihara. Anda cukup mengupload aplikasi dan aplikasi siap digunakan.

Aplikasi App Engine diskalakan secara otomatis berdasarkan traffic masuk. Load balancing, microservice, otorisasi, database SQL dan NoSQL, caching memori, pemisahan traffic, logging, penelusuran, pembuatan versi, peluncuran dan rollback, serta pemindaian keamanan, semuanya didukung secara native dan sangat mudah disesuaikan.

Lingkungan standar App Engine dan lingkungan fleksibel App Engine mendukung banyak bahasa pemrograman, termasuk Java, Python, PHP, NodeJS, dan Go. Kedua lingkungan ini memberi developer fleksibilitas maksimum terkait perilaku aplikasi mereka. Setiap lingkungan memiliki kekuatan tertentu. Untuk informasi selengkapnya, lihat Memilih lingkungan App Engine.

Anda akan belajar men-deploy aplikasi Spring Boot ke lingkungan standar App Engine. Lingkungan standar akan menurunkan skala hingga nol instance saat tidak ada yang menggunakannya dan secara otomatis meningkatkan skala.

Prasyarat

  • Pemahaman tentang bahasa dan alat pemrograman Java
  • Pengetahuan tentang editor teks Linux standar, seperti Vim, Emacs, dan nano

Yang akan Anda lakukan

  • Cara membuat aplikasi Java Spring Boot di App Engine

Yang Anda butuhkan

2. Penyiapan dan persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Google Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. Jika belum memiliki akun Gmail atau Google Workspace, Anda harus membuatnya.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Cloud Shell

Anda akan menggunakan Cloud Shell, yakni lingkungan command line yang berjalan di Google Cloud.

Mengaktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell 853e55310c205094.pngS.

55efc1aaa7a4d3ad.png

Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan.

9c92662c6a846a5c.pngS

Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.

9f0e51b578fecce5.pngS

Mesin virtual ini dimuat dengan semua alat pengembangan yang diperlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan dengan browser.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah diautentikasi dan project sudah ditetapkan ke project ID Anda.

  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list

Output perintah

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika tidak, Anda dapat menyetelnya dengan perintah ini:

gcloud config set project <PROJECT_ID>

Output perintah

Updated property [core/project].

3. Membuat aplikasi web Spring Boot baru

Setelah Cloud Shell diluncurkan, Anda dapat menggunakan command line untuk membuat aplikasi Spring Boot baru dengan 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. Mengupdate pom.xml Maven

Ada dua cara untuk men-deploy aplikasi server Java, baik dengan menggunakan Plugin App Engine Maven atau Plugin Gradle App Engine, atau dengan men-deploy direktori paket war. Anda akan menggunakan Plugin App Engine Maven untuk men-deploy aplikasi.

Menambahkan Maven App Engine Plugin

Update pom.xml untuk menyertakan plugin Google Cloud yang menyederhanakan proses deployment. Anda dapat menggunakan Vim, nano, atau Emacs untuk mengedit file.

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. Menambahkan deskriptor App Engine

  1. Untuk men-deploy aplikasi ke lingkungan standar App Engine, Anda harus membuat file deskriptor src/main/appengine/app.yaml baru.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. Edit file src/main/appengine/app.yaml dan tambahkan konten berikut:

src/main/appengine/app.yaml

runtime: java17
instance_class: F1

6. Menambahkan pengontrol

Tambahkan pengontrol baru yang menampilkan "hello world!" di 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. Menjalankan aplikasi secara lokal

  1. Pastikan JAVA_HOME disetel ke versi JDK yang benar:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
  1. Anda dapat memulai aplikasi Spring Boot dengan plugin Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Setelah aplikasi dimulai, klik Web Preview 1a94d5bd10bfc072.pngS di toolbar Cloud Shell, lalu pilih Preview on port 8080.

3aca52f76c6c22a3.pngS

Tab di browser akan terbuka dan terhubung ke server yang Anda mulai.

7b0d8494f647822a.pngS

8. Men-deploy aplikasi ke App Engine

  1. Pertama, inisialisasi project agar dapat menjalankan aplikasi App Engine. Selain itu, lakukan inisialisasi project untuk dijalankan di region tengah AS.
$ 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. Kemudian, deploy aplikasi ke lingkungan standar App Engine dengan menjalankan mvn appengine:deploy.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. Setelah aplikasi di-deploy, Anda dapat mengunjunginya dengan membuka http://<project-id>.appspot.com di browser web atau menggunakan perintah berikut di Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

9. Pembersihan

Anda tidak dapat menghapus aplikasi App Engine, tetapi dapat menonaktifkannya.

Buka App Engine dan Settings di Konsol Google Cloud, lalu pilih Disable Application:

8052c1e4ad73d70e.pngS

Atau, Anda dapat menghapus seluruh project:

$ gcloud projects delete YOUR-PROJECT-ID

10. Selamat

Anda telah belajar menulis aplikasi web App Engine pertama Anda!

Pelajari lebih lanjut