קל ליצור אפליקציות ב-App Engine, קל לתחזק אותן וקל לשנות את קנה המידה שלהן כשהתנועה והצרכים של אחסון הנתונים משתנים. ב-App Engine, אין שרתים לתחזוקה. פשוט מעלים את האפליקציה והיא מוכנה לשימוש.
אפליקציות App Engine מתרחבות באופן אוטומטי על סמך התנועה הנכנסת. השירות תומך באופן מובנה בכל התכונות הבאות, וניתן להתאים אותן אישית: איזון עומסים, מיקרו-שירותים, הרשאות, מסדי נתונים של SQL ו-NoSQL, שמירת נתונים במטמון, פיצול תעבורה, רישום ביומן, חיפוש, ניהול גרסאות, השקות והחזרות לגרסה קודמת וסריקת אבטחה.
סביבת App Engine סטנדרטית וסביבת App Engine גמישה תומכות במגוון רחב של שפות תכנות, כולל Java, Python, PHP, NodeJS ו-Go. שתי הסביבות האלה מעניקות למפתחים גמישות מקסימלית לגבי אופן הפעולה של האפליקציה שלהם. לכל סביבה יש יתרונות מסוימים. מידע נוסף זמין במאמר בחירת סביבת App Engine.
תלמדו איך לפרוס אפליקציית Spring Boot בסביבה הרגילה של App Engine. הסביבה הרגילה מצטמצמת לאפס מופעים כשלא משתמשים בה, ומתרחבת אוטומטית כשמתחילים להשתמש בה.
דרישות מוקדמות
- היכרות עם שפת התכנות Java ועם הכלים שלה
- ידע בכלי עריכת טקסט של Linux, כמו Vim, Emacs ו-nano
מה עושים
- איך יוצרים אפליקציית Java ב-Spring Boot ב-App Engine
מה צריך להכין
- פרויקט ב-Google Cloud
- דפדפן, כמו Google Chrome
הגדרת סביבה בקצב אישי
- נכנסים אל Cloud Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. (אם אין לכם עדיין חשבון Gmail או G Suite, אתם צריכים ליצור חשבון).
חשוב לזכור את מזהה הפרויקט, שהוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שמופיע למעלה כבר תפוס ולא יתאים לכם, מצטערים!). בהמשך ה-codelab הזה, נתייחס אליו כאל PROJECT_ID
.
- לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.
העלות של התרגול הזה לא אמורה להיות גבוהה מכמה דולרים, אבל היא יכולה להיות גבוהה יותר אם תחליטו להשתמש ביותר משאבים או אם תשאירו אותם פועלים.
משתמשים חדשים ב-Google Cloud זכאים לתקופת ניסיון בחינם בשווי 300$.
Cloud Shell
תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud.
הפעלת Cloud Shell
- ב-Cloud Console, לוחצים על Activate Cloud Shell
.
אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג לכם מסך ביניים (מתחת לקו הקיפול) עם תיאור של Cloud Shell. במקרה כזה, לוחצים על המשך (והמסך הזה לא יוצג לכם יותר). כך נראה המסך החד-פעמי:
הקצאת המשאבים וחיבור ל-Cloud Shell נמשכים רק כמה רגעים.
המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. אפשר לבצע את רוב העבודה ב-codelab הזה, אם לא את כולה, באמצעות דפדפן או Chromebook.
אחרי שמתחברים ל-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`
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: באמצעות Maven App Engine Plugin או Gradle App Engine Plugin, או באמצעות פריסה של ספריית החבילה war
. תשתמשו ב-Maven App Engine Plugin כדי לפרוס את האפליקציה.
הוספת 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>
- כדי לפרוס את האפליקציה בסביבה רגילה של 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: java11
instance_class: F4
מוסיפים ב-DemoApplication.java
בקר חדש שמחזיר "hello world!"
.
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!";
}
}
- אפשר להפעיל את אפליקציית Spring Boot באמצעות התוסף Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- אחרי שהאפליקציה מופעלת, לוחצים על תצוגה מקדימה באינטרנט
בסרגל הכלים של Cloud Shell ובוחרים באפשרות תצוגה מקדימה ביציאה 8080.
תיפתח כרטיסייה בדפדפן והיא תתחבר לשרת שהפעלתם.
- קודם כל, מאתחלים את הפרויקט כדי להפעיל אפליקציות 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]
למדתם לכתוב את אפליקציית האינטרנט הראשונה שלכם ב-App Engine.