Triển khai ứng dụng Spring Boot trong môi trường tiêu chuẩn của App Engine

1. Trước khi bắt đầu

Các ứng dụng App Engine rất dễ tạo, dễ bảo trì và dễ mở rộng khi nhu cầu lưu lượng truy cập và lưu trữ dữ liệu của bạn thay đổi. Với App Engine, không có máy chủ nào để duy trì. Bạn chỉ cần tải ứng dụng lên là ứng dụng đã sẵn sàng hoạt động.

Ứng dụng App Engine tự động mở rộng quy mô dựa trên lưu lượng truy cập đến. Các tính năng cân bằng tải, dịch vụ vi mô, uỷ quyền, cơ sở dữ liệu SQL và NoSQL, lưu vào bộ nhớ đệm, phân tách lưu lượng truy cập, ghi nhật ký, tìm kiếm, tạo phiên bản, phát hành và khôi phục, cũng như quét bảo mật đều được hỗ trợ một cách tự nhiên và có khả năng tuỳ chỉnh cao.

Môi trường tiêu chuẩn của App Enginemôi trường linh hoạt của App Engine hỗ trợ nhiều ngôn ngữ lập trình, trong đó có Java, Python, PHP, NodeJS và Go. Hai môi trường này mang đến cho nhà phát triển sự linh hoạt tối đa trong hành vi của ứng dụng. Mỗi môi trường có những thế mạnh nhất định. Để biết thêm thông tin, hãy xem bài viết Chọn môi trường App Engine.

Bạn sẽ tìm hiểu cách triển khai ứng dụng Spring Boot sang môi trường tiêu chuẩn của App Engine. Môi trường chuẩn sẽ thu nhỏ từ 0 thực thể khi không có ai sử dụng và tự động mở rộng quy mô!

Điều kiện tiên quyết

  • Làm quen với các công cụ và ngôn ngữ lập trình Java
  • Có kiến thức về các trình chỉnh sửa văn bản tiêu chuẩn của Linux, chẳng hạn như Vim, Emacs và nano

Bạn sẽ thực hiện

  • Cách tạo ứng dụng Java Spring Boot trên App Engine

Bạn cần có

  • Một dự án trên Google Cloud
  • Một trình duyệt, chẳng hạn như Google Chrome

2. Thiết lập và yêu cầu

Thiết lập môi trường theo tiến độ riêng

  1. Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật ứng dụng.
  • Mã dự án là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham khảo Mã dự án của mình (thường được xác định là PROJECT_ID). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử cách riêng của mình để xem có thể sử dụng hay không. Bạn không thể thay đổi mã này sau bước này và mã vẫn giữ nguyên trong thời gian dự án.
  • Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án), mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
  1. Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh phát sinh việc thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạn đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.

Cloud Shell

Bạn sẽ dùng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud.

Kích hoạt Cloud Shell

  1. Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell 853e55310c205094.pngs.

55efc1aaa7a4d3ad.pngS

Nếu đây là lần đầu tiên khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian mô tả về Cloud Shell. Nếu bạn nhìn thấy màn hình trung gian, hãy nhấp vào Tiếp tục.

9c92662c6a846a5c.pngS

Quá trình cấp phép và kết nối với Cloud Shell chỉ mất vài phút.

9f0e51b578fecce5.pngs

Máy ảo này được tải tất cả các công cụ phát triển cần thiết. Dịch vụ này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Nhiều (nếu không nói là) tất cả công việc của bạn trong lớp học lập trình này đều có thể thực hiện bằng trình duyệt.

Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án được đặt thành mã dự án.

  1. Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list

Kết quả lệnh

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
gcloud config list project

Kết quả lệnh

[core]
project = <PROJECT_ID>

Nếu chưa, bạn có thể thiết lập chế độ này bằng lệnh sau:

gcloud config set project <PROJECT_ID>

Kết quả lệnh

Updated property [core/project].

3. Tạo ứng dụng web mới có tên Spring Boot

Sau khi Cloud Shell chạy, bạn có thể sử dụng dòng lệnh để tạo một ứng dụng mới có tên Spring Boot bằng Spring Boot.

$ 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. Cập nhật Maven pom.xml

Có 2 cách để triển khai ứng dụng máy chủ Java: sử dụng Trình bổ trợ Maven App Engine, Trình bổ trợ Gradle App Engine hoặc triển khai thư mục gói war. Bạn sẽ sử dụng Trình bổ trợ Maven App Engine để triển khai ứng dụng.

Thêm trình bổ trợ Maven App Engine

Cập nhật pom.xml để thêm một trình bổ trợ Google Cloud giúp đơn giản hoá quy trình triển khai. Bạn có thể sử dụng Vim, nano hoặc Emacs để chỉnh sửa tệp.

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. Thêm phần mô tả App Engine

  1. Để triển khai ứng dụng theo môi trường tiêu chuẩn của App Engine, bạn phải tạo một tệp mô tả src/main/appengine/app.yaml mới.
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. Chỉnh sửa tệp src/main/appengine/app.yaml và thêm nội dung sau:

src/main/appengine/app.yaml

runtime: java17
instance_class: F1

6. Thêm tay điều khiển

Thêm tay điều khiển mới trả về "hello world!" trong 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. Chạy ứng dụng cục bộ

  1. Đảm bảo JAVA_HOME được đặt thành đúng phiên bản JDK:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
  1. Bạn có thể khởi động ứng dụng Spring Boot bằng trình bổ trợ Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. Sau khi ứng dụng khởi động, hãy nhấp vào Xem trước trên web 1a94d5bd10bfc072.pngStrong thanh công cụ Cloud Shell và chọn Xem trước trên cổng 8080.

3aca52f76c6c22a3.pngS

Một tab trong trình duyệt của bạn sẽ mở ra và kết nối với máy chủ mà bạn đã khởi động.

7b0d8494f647822a.png.

8. Triển khai ứng dụng cho App Engine

  1. Trước tiên, hãy khởi chạy dự án để có thể chạy các ứng dụng App Engine. Ngoài ra, hãy khởi chạy dự án để chạy ở khu vực miền trung Hoa Kỳ.
$ 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. Sau đó, hãy triển khai ứng dụng của bạn sang môi trường tiêu chuẩn của App Engine bằng cách chạy mvn appengine:deploy.
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. Sau khi triển khai ứng dụng, bạn có thể truy cập ứng dụng bằng cách mở http://<project-id>.appspot.com trong trình duyệt web hoặc sử dụng lệnh sau trong Cloud Shell:
$ gcloud app browse
... [It may print out the URL for your app]

9. Dọn dẹp

Bạn không thể xoá ứng dụng App Engine nhưng có thể tắt ứng dụng này.

Chuyển đến App EngineSettings trong Google Cloud Console rồi chọn Disable Application:

8052c1e4ad73d70e.png.

Ngoài ra, bạn có thể xoá toàn bộ dự án theo cách sau:

$ gcloud projects delete YOUR-PROJECT-ID

10. Xin chúc mừng

Bạn đã học cách viết ứng dụng web đầu tiên của mình App Engine!

Tìm hiểu thêm