ทำให้แอป Spring Boot ใช้งานได้ในสภาพแวดล้อมมาตรฐานของ App Engine

แอป App Engine สร้างง่าย ดูแลรักษาง่าย และปรับขนาดได้ง่ายเมื่อความต้องการด้านการเข้าชมและการจัดเก็บข้อมูลเปลี่ยนแปลงไป App Engine ช่วยให้คุณไม่ต้องบำรุงรักษาเซิร์ฟเวอร์ เพียงอัปโหลดแอปของคุณ แอปก็พร้อมใช้งาน

แอป App Engine จะปรับขนาดโดยอัตโนมัติตามการเข้าชมที่เข้ามา ระบบรองรับการปรับสมดุลภาระงาน, ไมโครเซอร์วิส, การให้สิทธิ์, ฐานข้อมูล SQL และ NoSQL, การแคชในหน่วยความจำ, การแยกการรับส่ง, การบันทึก, การค้นหา, การควบคุมเวอร์ชัน, การเปิดตัวและการย้อนกลับ รวมถึงการสแกนความปลอดภัยโดยค่าเริ่มต้น และปรับแต่งได้สูง

สภาพแวดล้อมมาตรฐานของ App Engine และสภาพแวดล้อมที่ยืดหยุ่นของ App Engine รองรับภาษาโปรแกรมมากมาย เช่น Java, Python, PHP, NodeJS และ Go สภาพแวดล้อมทั้ง 2 แบบนี้ช่วยให้นักพัฒนาแอปมีความยืดหยุ่นสูงสุดในการกำหนดลักษณะการทำงานของแอป แต่ละสภาพแวดล้อมมีจุดแข็งที่แตกต่างกัน ดูข้อมูลเพิ่มเติมได้ที่การเลือกสภาพแวดล้อม App Engine

คุณจะได้เรียนรู้วิธีทำให้แอป Spring Boot ใช้งานได้ในสภาพแวดล้อมมาตรฐานของ App Engine สภาพแวดล้อมมาตรฐานจะลดขนาดลงเหลือ 0 อินสแตนซ์เมื่อไม่มีใครใช้งาน และจะเพิ่มขนาดโดยอัตโนมัติ

ข้อกำหนดเบื้องต้น

  • ความคุ้นเคยกับภาษาโปรแกรมและเครื่องมือ Java
  • ความรู้เกี่ยวกับโปรแกรมแก้ไขข้อความมาตรฐานของ Linux เช่น Vim, Emacs และ nano

สิ่งที่คุณต้องทำ

  • วิธีสร้างแอป Java ของ Spring Boot ใน App Engine

สิ่งที่ต้องมี

  • โปรเจ็กต์ Google Cloud
  • เบราว์เซอร์ เช่น Google Chrome

การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง

  1. ลงชื่อเข้าใช้ Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ (หากยังไม่มีบัญชี Gmail หรือ G Suite คุณต้องสร้างบัญชี)

โปรดจดจำรหัสโปรเจ็กต์ ซึ่งเป็นชื่อที่ไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมด (ชื่อด้านบนถูกใช้ไปแล้วและจะใช้ไม่ได้ ขออภัย) ซึ่งจะเรียกว่า PROJECT_ID ในภายหลังใน Codelab นี้

  1. จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร Google Cloud

การทำตาม Codelab นี้ไม่น่าจะมีค่าใช้จ่ายเกิน 2-3 ดอลลาร์ แต่ก็อาจมีค่าใช้จ่ายมากกว่านี้หากคุณตัดสินใจใช้ทรัพยากรเพิ่มเติมหรือปล่อยให้ทรัพยากรทำงานต่อไป

ผู้ใช้ใหม่ของ Google Cloud มีสิทธิ์ทดลองใช้ฟรี$300

Cloud Shell

คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud

เปิดใช้งาน Cloud Shell

  1. จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell

หากไม่เคยเริ่มใช้ Cloud Shell มาก่อน คุณจะเห็นหน้าจอระดับกลาง (ด้านล่าง) ที่อธิบายว่า Cloud Shell คืออะไร ในกรณีนี้ ให้คลิกต่อไป (และคุณจะไม่เห็นหน้าจอนี้อีก) หน้าจอแบบครั้งเดียวจะมีลักษณะดังนี้

การจัดสรรและเชื่อมต่อกับ Cloud Shell จะใช้เวลาไม่นาน

เครื่องเสมือนนี้มาพร้อมเครื่องมือพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหลักขนาด 5 GB ที่คงอยู่ถาวรและทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานในโค้ดแล็บนี้ได้โดยใช้เพียงเบราว์เซอร์หรือ Chromebook

เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและโปรเจ็กต์ได้รับการตั้งค่าเป็นรหัสโปรเจ็กต์ของคุณแล้ว

  1. เรียกใช้คำสั่งต่อไปนี้ใน 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`
gcloud config list project

เอาต์พุตของคำสั่ง

[core]
project = <PROJECT_ID>

หากไม่ได้ตั้งค่าไว้ คุณตั้งค่าได้ด้วยคำสั่งนี้

gcloud config set project <PROJECT_ID>

เอาต์พุตของคำสั่ง

Updated property [core/project].

หลังจากเปิด Cloud Shell แล้ว คุณจะใช้บรรทัดคำสั่งเพื่อสร้างแอป Spring Boot ใหม่ด้วย Spring Initializr ได้

$ curl https://start.spring.io/starter.tgz \
  -d bootVersion=2.1.8.RELEASE \
  -d dependencies=web \
  -d baseDir=gae-standard-example | tar -xzvf -
$ cd gae-standard-example

การทําให้แอปเซิร์ฟเวอร์ Java ใช้งานได้มี 2 วิธี ได้แก่ การใช้ปลั๊กอิน App Engine ของ Maven หรือปลั๊กอิน App Engine ของ Gradle หรือการทําให้ไดเรกทอรีแพ็กเกจ war ใช้งานได้ คุณจะใช้ปลั๊กอิน Maven App Engine เพื่อทำให้แอปใช้งานได้

เพิ่ม Maven App Engine Plugin

อัปเดต 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.1.0</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>
  1. หากต้องการทำให้แอปใช้งานได้ในสภาพแวดล้อมมาตรฐานของ App Engine คุณต้องสร้างsrc/main/appengine/app.yamlไฟล์ตัวอธิบายใหม่
$ mkdir -p src/main/appengine/
$ touch src/main/appengine/app.yaml
  1. แก้ไขไฟล์ src/main/appengine/app.yaml แล้วเพิ่มเนื้อหาต่อไปนี้

src/main/appengine/app.yaml

runtime: java11
instance_class: F4

เพิ่มตัวควบคุมใหม่ที่ส่งคืน "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
@RestController
public class DemoApplication {
  public static void main(String[] args) {
    SpringApplication.run(DemoApplication.class, args);
  }

  @GetMapping("/")
  public String hello() {
    return "hello world!";
  }
}
  1. คุณเริ่มแอป Spring Boot ได้ด้วยปลั๊กอิน Spring Boot โดยทำดังนี้
$ ./mvnw -DskipTests spring-boot:run
  1. หลังจากแอปเริ่มทำงานแล้ว ให้คลิกตัวอย่างเว็บในแถบเครื่องมือ Cloud Shell แล้วเลือกแสดงตัวอย่างบนพอร์ต 8080

แท็บในเบราว์เซอร์จะเปิดขึ้นและเชื่อมต่อกับเซิร์ฟเวอร์ที่คุณเริ่ม

  1. ก่อนอื่น ให้เริ่มต้นโปรเจ็กต์เพื่อให้เรียกใช้แอป 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
  1. จากนั้นทำให้แอปใช้งานได้ในสภาพแวดล้อมมาตรฐานของ App Engine โดยเรียกใช้ mvn appengine:deploy
$ ./mvnw -DskipTests package appengine:deploy
... first time deploy may take a couple of minutes
  1. หลังจากที่ทำให้แอปใช้งานได้แล้ว คุณจะเข้าชมแอปได้โดยเปิด http://<project-id>.appspot.com ในเว็บเบราว์เซอร์ หรือใช้คำสั่งต่อไปนี้ใน Cloud Shell
$ gcloud app browse
... [It may print out the URL for your app]

คุณได้เรียนรู้วิธีเขียนเว็บแอป App Engine แรกแล้ว

ดูข้อมูลเพิ่มเติม