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

באמצעות 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 ורבים נוספים.

אירועים וטריגרים
אירועי ענן הם דברים שקורים בסביבת הענן שלכם.אלה יכולים להיות שינויי נתונים במסד הנתונים, קבצים שנוספים למערכת אחסון או יצירה של מכונה וירטואלית חדשה.
האירועים מתרחשים בלי קשר לבחירה שלכם אם להגיב להם או לא. את התגובה לאירוע יוצרים באמצעות טריגר. טריגר הוא הצהרה על כך שיש לכם עניין באירוע או בקבוצת אירועים. קישור פונקציה לטריגר מאפשר לכם לתעד את האירועים ולהגיב להם. מידע נוסף על יצירת טריגרים ועל שיוך שלהם לפונקציות זמין במאמר בנושא אירועים וטריגרים.
Serverless
כשמשתמשים ב-Cloud Functions לא צריך להמשיך לנהל שרתים, להגדיר תוכנה, לעדכן תבניות framework או לתקן מערכות הפעלה. התוכנה והתשתית מנוהלות על ידי Google ולכם נותר רק להוסיף קוד. בנוסף, הקצאת המשאבים מתרחשת באופן אוטומטי בתגובה לאירועים. כלומר פונקציה יכולה לעבור ממספר הפעלות ביום למיליוני הפעלות בלי שתצטרכו לעשות דבר.
תרחישים לדוגמה
מעכשיו אין צורך בשרת ובמפתח נפרדים עבור עומסי עבודה אסינכרוניים, כמו ETL פשוט, או עבור אוטומציית ענן, כמו הפעלת פיתוחי אפליקציות. כל מה שצריך לעשות זה לפרוס פונקציה ב-Cloud Functions המקושרת לאירוע שבו אתם מעוניינים.
בנוסף, האופי המפורט והמותאם לדרישות של הפונקציות ב-Cloud Functions הופך אותן למועמדות מושלמות לממשקי API פשוטים ולתגובות לפעולה מאתר אחר (webhook). בנוסף, ההקצאה האוטומטית של נקודות קצה (endpoint) של HTTP כשפורסים פונקציית HTTP, לא נדרשת ההגדרה המסובכת שקיימת בחלק מהשירותים האחרים.
בשיעור ה-Lab המעשי הזה תלמדו איך ליצור, לפרוס ולבדוק פונקציה ב-Cloud Functions באמצעות מסוף Google Cloud. תצטרכו :
- יצירת פונקציה ב-Cloud Functions
- פריסה ובדיקה של הפונקציה
- צפייה ביומנים
2. הגדרה ודרישות
הגדרת סביבה בקצב אישי
- נכנסים אל Cloud Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או G Suite, אתם צריכים ליצור חשבון).
חשוב לזכור את מזהה הפרויקט, שהוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא יתאים לכם, מצטערים!). בהמשך ה-codelab הזה נתייחס אליו כאל PROJECT_ID.
- לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.
העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי אפילו לא תצטרכו לשלם בכלל. חשוב לפעול לפי ההוראות בקטע 'ניקוי' כדי להשבית את המשאבים, וכך לא תחויבו אחרי שתסיימו את המדריך הזה. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
Google Cloud Shell
אפשר להפעיל את Google Cloud ואת Cloud Functions מרחוק מהמחשב הנייד, אבל ב-codelab הזה נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.
המכונה הווירטואלית הזו מבוססת על Debian, וטעונים בה כל הכלים הדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר מאוד את הביצועים והאימות ברשת. כלומר, כל מה שצריך כדי לבצע את ההוראות במאמר הזה הוא דפדפן (כן, זה עובד ב-Chromebook).
- כדי להפעיל את Cloud Shell ממסוף Cloud, פשוט לוחצים על הפעלת Cloud Shell
(הקצאת המשאבים והחיבור לסביבה אמורים להימשך רק כמה רגעים).
אחרי שמתחברים ל-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 Console:
ב-Cloud Shell מוגדרים גם כמה משתני סביבה כברירת מחדל, שיכולים להיות שימושיים כשמריצים פקודות בעתיד.
echo $GOOGLE_CLOUD_PROJECT
פלט הפקודה
<PROJECT_ID>
- לבסוף, מגדירים את אזור ברירת המחדל ואת הגדרת הפרויקט.
gcloud config set compute/zone us-central1-f
אפשר לבחור מתוך מגוון אזורים שונים. מידע נוסף זמין במאמר בנושא אזורים ותחומים.
3. יצירת פונקציה
בשלב הזה תיצרו פונקציה ב-Cloud Functions באמצעות המסוף.
- במסוף, לוחצים על תפריט הניווט > Cloud Functions.

- לוחצים על CREATE FUNCTION (יצירת פונקציה):

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

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

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

זהו! הפונקציה פעילה עכשיו ומוכנה להפעלה באמצעות HTTP.
4. בדיקת הפונקציה
בדף 'סקירה כללית' של Cloud Functions, מציגים את התפריט של הפונקציה ולוחצים על בדיקת הפונקציה :

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

5. הצגת יומני הפונקציות
לוחצים על החץ הכחול כדי לחזור לדף הסקירה הכללית של Cloud Functions :

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

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

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

7. המאמרים הבאים
יש עוד הרבה דברים שתוכלו לעשות עם Cloud Functions. מומלץ לעיין ב-codelabs אחרים, בדף המוצר ובמסמכי העזרה שלו.
כדאי גם לעיין במאמרים הבאים :
- קריאה ל-Cloud Functions (טריגרים זמינים להפעלת פונקציה)
- מעקב אחרי Cloud Functions (יומנים, דיווח על שגיאות ועוד)
- ... או עוד codelabs מהקטגוריה Serverless