1. ก่อนเริ่มต้น
แอป App Engine นั้นสร้างง่าย ดูแลง่าย และปรับขนาดได้ง่ายเมื่อความต้องการการรับส่งข้อมูลและการจัดเก็บข้อมูลของคุณเปลี่ยนไป App Engine ไม่มีเซิร์ฟเวอร์ที่ต้องบำรุงรักษา เพียงอัปโหลดแอป ก็พร้อมใช้งานแล้ว
แอป App Engine ปรับขนาดโดยอัตโนมัติตามการรับส่งข้อมูลขาเข้า การจัดสรรภาระงาน, Microservice, การให้สิทธิ์, ฐานข้อมูล SQL และ NoSQL, การแคชหน่วยความจำ, การแยกการรับส่งข้อมูล, การบันทึก, การค้นหา, การกำหนดเวอร์ชัน, การเปิดตัวและการย้อนกลับ รวมถึงการสแกนเพื่อความปลอดภัยทั้งหมดได้รับการรองรับในตัวและสามารถปรับแต่งได้ตามต้องการ
สภาพแวดล้อมมาตรฐานของ App Engine และสภาพแวดล้อมที่ยืดหยุ่นของ App Engine รองรับโฮสต์ของภาษาโปรแกรมมากมาย ซึ่งรวมถึง Java, Python, PHP, NodeJS และ Go โดยทั้ง 2 สภาพแวดล้อมจะช่วยให้นักพัฒนาแอปมีความยืดหยุ่นสูงสุดในลักษณะการทำงานของแอป แต่ละสภาพแวดล้อมก็มีจุดแข็งแตกต่างกันไป ดูข้อมูลเพิ่มเติมได้ที่การเลือกสภาพแวดล้อม App Engine
คุณจะได้เรียนรู้วิธีทำให้แอป Spring Boot ใช้งานได้ในสภาพแวดล้อมมาตรฐานของ App Engine สภาพแวดล้อมมาตรฐานจะลดขนาดลงเหลือ 0 อินสแตนซ์เมื่อไม่มีใครใช้ และปรับขนาดโดยอัตโนมัติ
ข้อกำหนดเบื้องต้น
- ความคุ้นเคยกับภาษาและเครื่องมือในการเขียนโปรแกรม Java
- ความรู้เกี่ยวกับเครื่องมือแก้ไขข้อความมาตรฐานของ Linux เช่น Vim, Emacs และ Nano
สิ่งที่คุณจะต้องทำ
- วิธีสร้างแอป Spring Boot Java บน 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 ของระบบคลาวด์ การใช้งาน Codelab นี้จะไม่มีค่าใช้จ่ายใดๆ หากมี หากต้องการปิดทรัพยากรเพื่อหลีกเลี่ยงการเรียกเก็บเงินที่นอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่คุณสร้างหรือลบโปรเจ็กต์ได้ ผู้ใช้ Google Cloud ใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรี$300 USD
Cloud Shell
คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud
เปิดใช้งาน Cloud Shell
- คลิกเปิดใช้งาน Cloud Shell จาก Cloud Console
หากเริ่มต้นใช้งาน Cloud Shell เป็นครั้งแรก คุณจะเห็นหน้าจอตรงกลางที่อธิบายว่านี่คืออะไร หากระบบแสดงหน้าจอตรงกลาง ให้คลิกต่อไป
การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที
เครื่องเสมือนนี้โหลดด้วยเครื่องมือการพัฒนาทั้งหมดที่จำเป็น โดยมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานใน Google Cloud ซึ่งช่วยเพิ่มประสิทธิภาพของเครือข่ายและการตรวจสอบสิทธิ์ได้อย่างมาก งานส่วนใหญ่ใน Codelab นี้สามารถทำได้โดยใช้เบราว์เซอร์
เมื่อเชื่อมต่อกับ 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 วิธี ได้แก่ การใช้ Maven App Engine Plugin หรือ Gradle App Engine Plugin หรือโดยการทำให้ไดเรกทอรีแพ็กเกจ war
ใช้งานได้ คุณจะต้องใช้ปลั๊กอิน Maven App Engine เพื่อทำให้แอปใช้งานได้
เพิ่มปลั๊กอิน Maven App Engine
อัปเดต pom.xml
ให้มีปลั๊กอิน Google Cloud ที่ช่วยให้ขั้นตอนการทำให้ใช้งานได้ง่ายขึ้น คุณสามารถใช้ Vim, นาโน หรือ 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 แอปแรกแล้ว