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ễ duy trì và dễ mở rộng khi nhu cầu về lưu lượng truy cập và lưu trữ dữ liệu của bạn thay đổi. Với App Engine, bạn không cần duy trì máy chủ. Bạn chỉ cần tải ứng dụng lên là có thể sử dụng ngay.

Các ứ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ân bằng tải, vi dịch vụ, uỷ quyền, cơ sở dữ liệu SQL và NoSQL, lưu vào bộ nhớ đệm, phân chia lưu lượng truy cập, ghi nhật ký, tìm kiếm, kiểm soát phiên bản, triển khai và khôi phục, cũng như quét bảo mật đều được hỗ trợ nguyên bả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, bao gồm 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 về cách ứng dụng của họ hoạt động. Mỗi môi trường đều có những điểm mạnh nhất định. Để biết thêm thông tin, hãy xem bài viết Chọn một môi trường App Engine.

Bạn sẽ tìm hiểu cách triển khai một ứng dụng Spring Boot vào môi trường tiêu chuẩn của App Engine. Môi trường tiêu chuẩn sẽ giảm xuống 0 phiên bản khi không có ai sử dụng và tự động tăng lên!

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

  • Làm quen với ngôn ngữ lập trình và các công cụ Java
  • Kiến thức về các trình chỉnh sửa văn bản tiêu chuẩn trên 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 tốc độ của riêng bạn

  1. Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một 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ự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
  • Mã dự án là giá trị duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án.
  • Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
  1. Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyê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í trị giá 300 USD.

Cloud Shell

Bạn sẽ 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.png.

55efc1aaa7a4d3ad.png

Nếu đây là lần đầu tiên bạ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 thấy màn hình trung gian, hãy nhấp vào Tiếp tục.

9c92662c6a846a5c.png

Quá trình cung cấp và kết nối với Cloud Shell chỉ mất vài giây.

9f0e51b578fecce5.png

Máy ảo này được trang bị tất cả các công cụ phát triển cần thiết. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trong Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện hầu hết, nếu không muốn nói là tất cả, công việc của mình trong lớp học lập trình này bằng trình duyệt.

Sau khi kết nối với Cloud Shell, bạn sẽ thấy rằng mình đã được xác thực và dự án được đặt thành mã dự án của bạ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

Đầu ra của 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

Đầu ra của lệnh

[core]
project = <PROJECT_ID>

Nếu không, bạn có thể đặt nó bằng lệnh sau:

gcloud config set project <PROJECT_ID>

Đầu ra của lệnh

Updated property [core/project].

3. Tạo một ứng dụng web Spring Boot mới

Sau khi Cloud Shell khởi chạy, bạn có thể dùng dòng lệnh để tạo một ứng dụng Spring Boot mới bằng 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. Cập nhật tệp Maven pom.xml

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

Thêm Maven App Engine Plugin

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ể dùng Vim, nano hoặc Emacs để chỉnh sửa tệp này.

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 bộ mô tả App Engine

  1. Để triển khai ứng dụng vào 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 bộ điều khiển

Thêm một bộ đ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 phiên bản JDK chính xác:
$ 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 Web Preview (Xem trước trên web) 1a94d5bd10bfc072.png trong thanh công cụ Cloud Shell rồi chọn Preview on port 8080 (Xem trước trên cổng 8080).

3aca52f76c6c22a3.png

Một thẻ trong trình duyệt 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 lên App Engine

  1. Trước tiên, hãy khởi động dự án để có thể chạy các ứng dụng App Engine. Ngoài ra, hãy khởi động dự án để chạy ở khu vực miền Trung của 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 vào 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 vào ứng dụng bằng cách mở http://<project-id>.appspot.com trong trình duyệt web hoặc 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:

$ gcloud projects delete YOUR-PROJECT-ID

10. Xin chúc mừng

Bạn đã học được cách viết ứng dụng web đầu tiên bằng App Engine!

Tìm hiểu thêm