תחילת השימוש ב-Cloud Functions

1. סקירה כללית

Cloud-Functions.png

באמצעות Cloud Functions אפשר לכתוב פונקציות פשוטות למטרה יחידה, ולצרף אותן לאירועים שמופקים בתשתית ובשירותי הענן. הפונקציה ב-Cloud Functions מופעלת כאשר אירוע שעוקבים אחריו מופעל. הקוד שלכם מבוצע בסביבה מנוהלת. לא צריך לספק תשתית או לדאוג בנוגע לניהול שרתים.

כרגע אפשר לכתוב ב-Cloud Functions ב-JavaScript, ב-Python או ב-Go. במקרה של JavaScript, הן מופעלות בסביבת Node.js ב-Google Cloud Platform. אתם יכולים להפעיל את הפונקציה ב-Cloud Functions בכל סביבת זמן ריצה תקנית של Node.js. כך תוכלו לנייד את המידע ולבצע בדיקות מקומיות בקלות.

חיבור והרחבה של שירותי ענן

סביבת Cloud Functions מספקת שכבת לוגיקה מקשרת שמאפשרת לכם לכתוב קוד כדי לחבר ולהרחיב את שירותי הענן. אתם יכולים להמתין להעלאת קובץ ל-Cloud Storage, לשינוי ביומן או להודעה נכנסת בנושא Cloud Pub/Sub ולהגיב להם. סביבת Cloud Functions מרחיבה שירותי ענן קיימים ומאפשרת לכם לטפל במספר הולך וגדל של תרחישים לדוגמה באמצעות לוגיקת תכנות שרירותית. ל-Cloud Functions יש גישה לפרטי הכניסה לחשבון השירות של Google, ולכן הם מאומתים בצורה חלקה ברוב שירותי Google Cloud Platform, כמו Datastore , Cloud Spanner , Cloud Translation API , Cloud Vision API ורבים אחרים.

907ffb96feada611.png

אירועים וטריגרים

אירועי ענן הם דברים שקורים בסביבת הענן שלכם.אלה יכולים להיות שינויי נתונים במסד הנתונים, קבצים שנוספים למערכת אחסון או יצירה של מכונה וירטואלית חדשה.

האירועים מתרחשים בלי קשר לבחירה שלכם אם להגיב להם או לא. אתם יוצרים תגובה לאירוע באמצעות טריגר. טריגר הוא הצהרה על כך שיש לכם עניין באירוע או בקבוצת אירועים. קישור פונקציה לטריגר מאפשר לכם לתעד את האירועים ולהגיב להם. מידע נוסף על יצירת טריגרים ועל שיוך שלהם לפונקציות זמין בקטע 'אירועים וטריגרים'.

ללא שרת (serverless)

כשמשתמשים ב-Cloud Functions לא צריך להמשיך לנהל שרתים, להגדיר תוכנה, לעדכן תבניות framework או לתקן מערכות הפעלה. התוכנה והתשתית מנוהלות על ידי Google ולכם נותר רק להוסיף קוד. בנוסף, הקצאת המשאבים מתרחשת באופן אוטומטי בתגובה לאירועים. כלומר פונקציה יכולה לעבור ממספר הפעלות ביום למיליוני הפעלות בלי שתצטרכו לעשות דבר.

תרחישים לדוגמה

עומסי עבודה אסינכרוניים כמו ETL קל, או אוטומציות ענן כמו הפעלת גרסאות build של אפליקציות, כבר לא צריכים שרת ומפתח משלהם כדי לחבר אותו. כל מה שצריך לעשות זה לפרוס פונקציה ב-Cloud Functions המקושרת לאירוע שבו אתם מעוניינים.

בנוסף, האופי המפורט והמותאם לדרישות של הפונקציות ב-Cloud Functions הופך אותן למועמדות מושלמות לממשקי API פשוטים ולתגובות לפעולה מאתר אחר (webhook). בנוסף, המשמעות של ההקצאה האוטומטית של נקודות קצה של HTTP כשפורסים פונקציית HTTP היא שלא נדרשת הגדרות מורכבות מכיוון שנדרשות שירותים אחרים.

בשיעור ה-Lab המעשי הזה תלמדו איך ליצור, לפרוס ולבדוק פונקציה ב-Cloud Functions באמצעות מסוף Google Cloud. אתם :

  • יצירת פונקציה ב-Cloud Functions
  • פריסה ובדיקה של הפונקציה
  • צפייה ביומנים

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

הגדרת סביבה בקצב עצמאי

  1. נכנסים למסוף Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או G Suite, עליכם ליצור חשבון).

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

חשוב לזכור את מזהה הפרויקט, שם ייחודי לכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא מתאים לכם, סליחה). בהמשך ב-Codelab הזה, היא תיקרא PROJECT_ID.

  1. בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.

מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לבצע את כל ההוראות בקטע 'ניקוי' שמסביר איך להשבית משאבים כדי שלא תצברו חיובים מעבר למדריך הזה. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.

Google Cloud Shell

אפשר להפעיל את Google Cloud ואת Cloud Functions מרחוק מהמחשב הנייד שלכם, אבל ב-Codelab הזה נשתמש ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.

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

  1. כדי להפעיל את Cloud Shell ממסוף Cloud, לוחצים על Activate Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (ההקצאה וההתחברות לסביבה אמורות להימשך כמה דקות).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

צילום מסך מתאריך 2017-06-14 בשעה 22:13.43.png

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

gcloud auth list

פלט הפקודה

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

פלט הפקודה

[core]
project = <PROJECT_ID>

אם מסיבה כלשהי הפרויקט לא מוגדר, פשוט מריצים את הפקודה הבאה:

gcloud config set project <PROJECT_ID>

רוצה למצוא את ה-PROJECT_ID שלך? אתם יכולים לבדוק באיזה מזהה השתמשתם בשלבי ההגדרה או לחפש אותו במרכז הבקרה של מסוף Cloud:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

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

echo $GOOGLE_CLOUD_PROJECT

פלט הפקודה

<PROJECT_ID>
  1. בשלב האחרון, מגדירים את ברירת המחדל של האזור והפרויקט.
gcloud config set compute/zone us-central1-f

אפשר לבחור מגוון אזורים שונים. מידע נוסף זמין במאמר אזורים ו אזורים.

3. יצירת פונקציה

בשלב הזה תיצרו פונקציה ב-Cloud Functions באמצעות המסוף.

  • במסוף, לוחצים על תפריט הניווט > ב-Cloud Functions.

fe64222954f5f372.png

  • לוחצים על 'יצירת פונקציה' :

7adca9640ca2e5a6.png

  • נותנים שם לפונקציה GCFunction ומשאירים את ברירות המחדל האחרות : הקצאת זיכרון, HTTP כטריגר, עורך מוטבע, סביבת זמן ריצה שמוגדרת כברירת מחדל וקוד לדוגמה שמוגדר כברירת מחדל.

795f1Federalc0f039bb.png

  • כשאתם עדיין נמצאים ב'יצירת פונקציה' בתיבת הדו-שיח למטה, לוחצים על 'יצירה' כדי לפרוס את הפונקציה:

b68c3647b771e6f9.png

אחרי שלוחצים על Create, המסוף מפנה לדף Overview (סקירה כללית של Cloud Functions).

בזמן שהפונקציה פרוסה, הסמל שלצידה מציג סימן גרפי קטן. במהלך הפריסה, העיגול יופיע עם סימן וי ירוק. אם תיתקלו בבעיות, תקבלו הודעה עם סמל אדום וקישור ליומנים כדי להבין מה השתבש (סביר להניח שיש בעיה בקוד).

3ec684b1b4906657.png

זהו! הפונקציה פעילה עכשיו ומוכנה להפעלה דרך HTTP.

4. בדיקת הפונקציה

בדף הסקירה הכללית של Cloud Functions, מציגים את תפריט הפונקציה ולוחצים על Test function :

74e310ee6663b3c.png

בשדה Triggering event (הפעלה של אירוע), מזינים את הטקסט הבא בין הסוגריים המרובעים {} ולוחצים על Test the function (בדיקת הפונקציה).

בשדה Output (פלט) אמורה להופיע ההודעה Success: Hello World!

בשדה Logs מופיע קוד הסטטוס 200. קוד הסטטוס הוא 'הצלחה'. לתשומת ליבכם: יכול להיות שתידרש דקה עד שהיומנים יופיעו.

a876def9cbf24a45.png

5. צפייה ביומני הפונקציות

לוחצים על החץ הכחול כדי לחזור לדף הסקירה הכללית של Cloud Functions :

8917a2bfa4fb9502.png

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

e97e6ec1fc17dfd7.png

הנה דוגמה להיסטוריית היומן :

d91a00cf4457fa84.png

שימו לב שאתם יכולים לסנן יומנים לפי פונקציה ולפי דרגת חומרה, ולחפש לפי תווית או טקסט חופשי.

האפליקציה שלכם נפרסת ונבדקת והצלחתם לראות את היומנים.

6. משאבים לניקוי

ובכן, אתם לא באמת צריכים לרוקן משאבים, מאחר שמדובר במחשוב ללא שרת (serverless computing): התאמה לעומס (scaling) פירושה גם התאמת העלות לאפס. כך שאם הפונקציה שלכם לא מקבלת תנועה, לא תחויבו בעלות נוספת. בנוסף, גם 2 מיליון ההפעלות הראשונות של הפונקציה של Cloud Functions בכל חודש הן בחינם. פרטים נוספים זמינים בדף התמחור.

כדי למחוק את הפונקציה, עוברים לדף הסקירה הכללית, בוחרים בפונקציה ולוחצים על DELETE (מחיקה):

4fe11e1b41b32ba2.png

7. המאמרים הבאים

יש עוד הרבה דברים שמחכים לכם ב-Cloud Functions! מומלץ לעיין ב-Codelabs נוספים, בדף המוצר ובמסמכי התיעוד שלהם.

כדאי לך גם לצפות במקורות המידע הבאים :