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

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

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

สภาพแวดล้อมมาตรฐานของ App Engine และสภาพแวดล้อมของ App Engine ที่ยืดหยุ่นรองรับโฮสต์ของภาษาการเขียนโปรแกรม ได้แก่ Java, Python, PHP, NodeJS และ Go สภาพแวดล้อมทั้งสองนี้ช่วยให้นักพัฒนาซอฟต์แวร์ทํางานได้อย่างยืดหยุ่นมากที่สุด สภาพแวดล้อมแต่ละแห่งมีจุดแข็งบางอย่าง โปรดดูข้อมูลเพิ่มเติมในการเลือกสภาพแวดล้อม 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 ทั้งหมด (ชื่อข้างต้นมีผู้อื่นนําไปใช้แล้ว ขออภัยในความไม่สะดวก) และจะเรียกใน Codelab นี้ว่า PROJECT_ID ในภายหลัง

  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

เครื่องเสมือนนี้โหลดด้วยเครื่องมือการพัฒนาทั้งหมดที่คุณต้องการ โดยมีไดเรกทอรีหน้าแรกขนาด 5 GB ถาวรและทํางานอยู่ใน Google Cloud ซึ่งช่วยปรับปรุงประสิทธิภาพและการตรวจสอบสิทธิ์ของเครือข่ายได้อย่างมาก งานที่ทําใน Codelab นี้เพียงบางรายการสามารถทําได้โดยใช้เบราว์เซอร์หรือ 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 Server ใช้งานได้มี 2 วิธี ได้แก่ การใช้ Maven App Engine Plugin หรือ Gradle App Engine Plugin หรือการทําให้ไดเรกทอรีแพ็กเกจ 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 แอปแรกแล้ว

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