1. לפני שמתחילים
קל ליצור אפליקציות של App Engine, לתחזק אותן ולהתאים אותן לעומס, ככל שנפח התנועה והאחסון של הנתונים משתנים. באמצעות App Engine אין שרתים לתחזק. פשוט מעלים את האפליקציה והיא מוכנה לפעולה.
אפליקציות App Engine מותאמות באופן אוטומטי לעומס, לפי התנועה הנכנסת. תמיכה מקומית: איזון עומסים, מיקרו-שירותים, הרשאות, מסדי נתונים של SQL ו-NoSQL, שמירה במטמון של זיכרון, פיצול תנועה, רישום ביומן, חיפוש, ניהול גרסאות, השקות ושינויים חוזרים ובסריקת אבטחה.
הסביבה הסטנדרטית של App Engine והסביבה הגמישה של App Engine תומכות במגוון שפות תכנות, כולל Java, Python, PHP, NodeJS ו-Go. שתי הסביבות מספקות למפתחים גמישות מקסימלית לגבי אופן הפעולה של האפליקציה שלהם. לכל סביבה יש יתרונות מסוימים. למידע נוסף, קראו את המאמר בחירת סביבה של App Engine.
תלמדו לפרוס אפליקציית Spring Boot בסביבה הרגילה של App Engine. הסביבה הרגילה מוקטנת לאפס מופעים כשאין אף אחד בשימוש בה, וההתאמה לעומס (scaling) מתבצעת באופן אוטומטי!
דרישות מוקדמות
- היכרות עם שפת התכנות והכלים של Java
- ידע בעורכי טקסט סטנדרטיים של Linux, כגון Vim, Emacs ו-nano
מה תעשו
- איך יוצרים אפליקציית Spring Boot Java ב-App Engine
מה צריך להכין
- פרויקט ב-Google Cloud
- דפדפן, כמו Google Chrome
2. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא משמשת את Google APIs. תמיד אפשר לעדכן.
- Project ID הוא ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-codelabs תצטרכו להפנות למזהה הפרויקט שלכם (בדרך כלל מזוהה כ-
PROJECT_ID
). אם המזהה שנוצר לא מוצא חן בעיניכם, אתם יכולים ליצור מזהה אקראי אחר. לחלופין, אפשר לנסות שם משלך ולראות אם הוא זמין. לא ניתן לשנות אותו אחרי השלב הזה, והוא נשאר למשך הפרויקט. - לידיעתך, יש ערך שלישי, Project Number, שבו משתמשים בחלק מממשקי ה-API. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא יעלה הרבה כסף, אם בכלל. כדי להשבית משאבים ולא לצבור חיובים מעבר למדריך הזה, אתם יכולים למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
Cloud Shell
משתמשים ב-Cloud Shell, סביבת שורת הפקודה שפועלת ב-Google Cloud.
הפעלת Cloud Shell
- במסוף Cloud, לוחצים על Activate Cloud Shell .
אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג לכם מסך ביניים שמתוארת בו. אם הוצג לכם מסך ביניים, לוחצים על המשך.
ההקצאה וההתחברות ל-Cloud Shell נמשכת כמה דקות.
במכונה הווירטואלית הזו נמצאים כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-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, תוכלו להשתמש בשורת הפקודה כדי ליצור אפליקציית Springboot חדשה עם 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. עדכון pom.xml של Maven
יש שתי דרכים לפרוס אפליקציית שרת Java – באמצעות תוכנת הפלאגין Maven App Engine או הפלאגין Gradle App Engine, או על ידי פריסה של ספריית החבילות war
. כדי לפרוס את האפליקציה צריך להשתמש ב-Maven App Engine Plugin.
הוספת הפלאגין של Maven App Engine
צריך לעדכן את 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 shoes באמצעות הפלאגין Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- אחרי שהאפליקציה מופעלת, לוחצים על Web Previewבסרגל הכלים של Cloud Shell ובוחרים באפשרות Preview on Port 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 ובוחרים באפשרות Disable Application
:
לחלופין, אפשר למחוק את הפרויקט כולו:
$ gcloud projects delete YOUR-PROJECT-ID
10. מזל טוב
למדת לכתוב את אפליקציית האינטרנט הראשונה שלך ב-App Engine!