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

מה תעשו

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

מה תצטרכו

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

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.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. עדכון הקובץ Maven pom.xml

יש שתי דרכים לפרוס אפליקציית שרת 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.

מידע נוסף