1. ก่อนเริ่มต้น
แอป 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
2. การตั้งค่าและข้อกำหนด
การตั้งค่าสภาพแวดล้อมแบบเรียนรู้ด้วยตนเอง
- ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ คุณอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยทั่วไปจะระบุเป็น
PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณอาจสร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณอาจลองใช้ชื่อของคุณเองและดูว่ามีชื่อนั้นหรือไม่ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้จะไม่มีค่าใช้จ่ายมากนัก หรืออาจไม่มีค่าใช้จ่ายเลย หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
Cloud Shell
คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud
เปิดใช้งาน Cloud Shell
- จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell


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

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

เครื่องเสมือนนี้โหลดเครื่องมือพัฒนาซอฟต์แวร์ทั้งหมดที่จำเป็นไว้แล้ว โดยมีไดเรกทอรีหลักแบบถาวรขนาด 5 GB และทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก คุณสามารถทำงานส่วนใหญ่หรือทั้งหมดในโค้ดแล็บนี้ได้ด้วยเบราว์เซอร์
เมื่อเชื่อมต่อกับ Cloud Shell แล้ว คุณควรเห็นว่าคุณได้รับการตรวจสอบสิทธิ์และระบบได้ตั้งค่าโปรเจ็กต์เป็นรหัสโปรเจ็กต์ของคุณ
- เรียกใช้คำสั่งต่อไปนี้ใน 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`
- เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
เอาต์พุตของคำสั่ง
[core] project = <PROJECT_ID>
หากไม่ได้ตั้งค่าไว้ คุณตั้งค่าได้ด้วยคำสั่งนี้
gcloud config set project <PROJECT_ID>
เอาต์พุตของคำสั่ง
Updated property [core/project].
3. สร้างเว็บแอป Spring Boot ใหม่
หลังจากเปิด Cloud Shell แล้ว คุณจะใช้บรรทัดคำสั่งเพื่อสร้างแอป Spring Boot ใหม่ด้วย 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. อัปเดต Maven pom.xml
การทําให้แอปเซิร์ฟเวอร์ 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.4.4</version>
<configuration>
<version>1</version>
<projectId>GCLOUD_CONFIG</projectId>
</configuration>
</plugin>
...
</plugins>
</build>
</project>
5. เพิ่มตัวอธิบาย App Engine
- หากต้องการทำให้แอปใช้งานได้ในสภาพแวดล้อมมาตรฐานของ App Engine คุณต้องสร้าง
src/main/appengine/app.yamlไฟล์ตัวอธิบายใหม่
$ mkdir -p src/main/appengine/ $ touch src/main/appengine/app.yaml
- แก้ไขไฟล์
src/main/appengine/app.yamlแล้วเพิ่มเนื้อหาต่อไปนี้
src/main/appengine/app.yaml
runtime: java17
instance_class: F1
6. เพิ่มคอนโทรลเลอร์
เพิ่มตัวควบคุมใหม่ที่แสดงผล "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
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. เรียกใช้แอปในเครื่อง
- ตรวจสอบว่าตั้งค่า JAVA_HOME เป็น JDK เวอร์ชันที่ถูกต้อง
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
- คุณเริ่มแอป Spring Boot ได้ด้วยปลั๊กอิน Spring Boot โดยทำดังนี้
$ ./mvnw -DskipTests spring-boot:run
- หลังจากแอปเริ่มทำงานแล้ว ให้คลิกตัวอย่างเว็บ
ในแถบเครื่องมือ Cloud Shell แล้วเลือกแสดงตัวอย่างบนพอร์ต 8080

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

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

หรือจะลบทั้งโปรเจ็กต์ก็ได้โดยทำดังนี้
$ gcloud projects delete YOUR-PROJECT-ID
10. ขอแสดงความยินดี
คุณได้เรียนรู้วิธีเขียนเว็บแอป App Engine แรกแล้ว