פריסת אפליקציית Spring Boot בסביבה סטנדרטית של App Engine

1. לפני שמתחילים

קל ליצור אפליקציות ב-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

מה תעשו

  • איך יוצרים אפליקציית Spring Boot Java ב-App Engine

מה תצטרכו

2. הגדרה ודרישות

הגדרת סביבה בקצב אישי

  1. נכנסים ל-מסוף Google Cloud ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון.

b35bf95b8bf3d5d8.pnga99b7ace416376c4.pngbd84a6d3004737c5.png

  • שם הפרויקט הוא השם המוצג למשתתפים בפרויקט. זו מחרוזת תווים שלא נמצאת בשימוש ב-Google APIs. תמיד אפשר לעדכן את המיקום.
  • מזהה הפרויקט הוא ייחודי לכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו אחרי שהוא מוגדר. מסוף Cloud יוצר באופן אוטומטי מחרוזת ייחודית. בדרך כלל לא צריך לדעת מה היא. ברוב ה-Codelabs, תצטרכו להפנות למזהה הפרויקט (בדרך כלל מסומן כ-PROJECT_ID). אם אתם לא אוהבים את המזהה שנוצר, אתם יכולים ליצור מזהה אקראי אחר. אפשר גם לנסות שם משתמש משלכם ולבדוק אם הוא זמין. אי אפשר לשנות את ההגדרה הזו אחרי השלב הזה, והיא נשארת לאורך הפרויקט.
  • לידיעתכם, יש ערך שלישי, מספר פרויקט, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על שלושת הערכים האלה מופיע במאמרי העזרה.
  1. בשלב הבא, תצטרכו להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבי Cloud או בממשקי API של Cloud. השלמת ה-codelab הזה לא תעלה לכם הרבה, אם בכלל. כדי להשבית את המשאבים ולמנוע חיובים נוספים אחרי שתסיימו את המדריך הזה, תוכלו למחוק את המשאבים שיצרתם או למחוק את הפרויקט. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.

Cloud Shell

תשתמשו ב-Cloud Shell, סביבת שורת פקודה שפועלת ב-Google Cloud.

הפעלת Cloud Shell

  1. ב-Cloud Console, לוחצים על Activate Cloud Shell 853e55310c205094.png.

55efc1aaa7a4d3ad.png

אם זו הפעם הראשונה שאתם מפעילים את Cloud Shell, יוצג לכם מסך ביניים עם תיאור של השירות. אם מוצג לכם מסך ביניים, לוחצים על המשך.

9c92662c6a846a5c.png

יחלפו כמה רגעים עד שההקצאה והחיבור ל-Cloud Shell יושלמו.

9f0e51b578fecce5.png

המכונה הווירטואלית הזו כוללת את כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות של הרשת. אפשר לבצע את רוב העבודה ב-codelab הזה, אם לא את כולה, באמצעות דפדפן.

אחרי שמתחברים ל-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`
  1. מריצים את הפקודה הבאה ב-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. עדכון הקובץ pom.xml של Maven

יש שתי דרכים לפרוס אפליקציית שרת 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.4.4</version>
        <configuration>
          <version>1</version>
          <projectId>GCLOUD_CONFIG</projectId>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
</project>

5. הוספת קובץ תיאור של App Engine

  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: java17
instance_class: F1

6. הוספת שלט

מוסיפים ב-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
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. הפעלת האפליקציה באופן מקומי

  1. מוודאים שהמשתנה JAVA_HOME מוגדר לגרסת ה-JDK הנכונה:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
  1. אפשר להפעיל את אפליקציית Spring Boot באמצעות התוסף Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
  1. אחרי שהאפליקציה מופעלת, לוחצים על תצוגה מקדימה באינטרנט1a94d5bd10bfc072.pngבסרגל הכלים של Cloud Shell ובוחרים באפשרות תצוגה מקדימה ביציאה 8080.

3aca52f76c6c22a3.png

תיפתח כרטיסייה בדפדפן והיא תתחבר לשרת שהפעלתם.

7b0d8494f647822a.png

8. פריסת האפליקציה ב-App Engine

  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]

9. הסרת המשאבים

אי אפשר למחוק אפליקציית App Engine, אבל אפשר להשבית אותה.

נכנסים אל App Engine ו-Settings במסוף Google Cloud ובוחרים באפשרות Disable Application:

8052c1e4ad73d70e.png

אפשר גם למחוק את כל הפרויקט:

$ gcloud projects delete YOUR-PROJECT-ID

10. מזל טוב

למדתם לכתוב את אפליקציית האינטרנט הראשונה שלכם ב-App Engine.

מידע נוסף