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 קל, או אוטומציות ענן כמו הפעלת גרסאות build של אפליקציות, כבר לא צריכים שרת ומפתח משלהם כדי לחבר אותו. כל מה שצריך לעשות זה לפרוס פונקציה ב-Cloud Functions המקושרת לאירוע שבו אתם מעוניינים.
בנוסף, האופי המפורט והמותאם לדרישות של הפונקציות ב-Cloud Functions הופך אותן למועמדות מושלמות לממשקי API פשוטים ולתגובות לפעולה מאתר אחר (webhook). בנוסף, המשמעות של ההקצאה האוטומטית של נקודות קצה של HTTP כשפורסים פונקציית HTTP היא שלא נדרשת הגדרות מורכבות מכיוון שנדרשות שירותים אחרים.
בשיעור ה-Lab המעשי הזה תלמדו איך ליצור, לפרוס ולבדוק פונקציה ב-Cloud Functions באמצעות מסוף Google Cloud. אתם :
- יצירת פונקציה ב-Cloud Functions
- פריסה ובדיקה של הפונקציה
- צפייה ביומנים
2. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או G Suite, עליכם ליצור חשבון).
חשוב לזכור את מזהה הפרויקט, שם ייחודי לכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא מתאים לכם, סליחה). בהמשך ב-Codelab הזה, היא תיקרא PROJECT_ID
.
- בשלב הבא צריך להפעיל את החיוב במסוף 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).
- כדי להפעיל את Cloud Shell ממסוף Cloud, לוחצים על Activate 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:
Cloud Shell גם מגדירה משתני סביבה כברירת מחדל, והוא יכול להיות שימושי כשמריצים פקודות עתידיות.
echo $GOOGLE_CLOUD_PROJECT
פלט הפקודה
<PROJECT_ID>
- בשלב האחרון, מגדירים את ברירת המחדל של האזור והפרויקט.
gcloud config set compute/zone us-central1-f
אפשר לבחור מגוון אזורים שונים. מידע נוסף זמין במאמר אזורים ו אזורים.
3. יצירת פונקציה
בשלב הזה תיצרו פונקציה ב-Cloud Functions באמצעות המסוף.
- במסוף, לוחצים על תפריט הניווט > ב-Cloud Functions.
- לוחצים על 'יצירת פונקציה' :
- נותנים שם לפונקציה
GCFunction
ומשאירים את ברירות המחדל האחרות : הקצאת זיכרון, HTTP כטריגר, עורך מוטבע, סביבת זמן ריצה שמוגדרת כברירת מחדל וקוד לדוגמה שמוגדר כברירת מחדל.
- כשאתם עדיין נמצאים ב'יצירת פונקציה' בתיבת הדו-שיח למטה, לוחצים על 'יצירה' כדי לפרוס את הפונקציה:
אחרי שלוחצים על Create, המסוף מפנה לדף Overview (סקירה כללית של Cloud Functions).
בזמן שהפונקציה פרוסה, הסמל שלצידה מציג סימן גרפי קטן. במהלך הפריסה, העיגול יופיע עם סימן וי ירוק. אם תיתקלו בבעיות, תקבלו הודעה עם סמל אדום וקישור ליומנים כדי להבין מה השתבש (סביר להניח שיש בעיה בקוד).
זהו! הפונקציה פעילה עכשיו ומוכנה להפעלה דרך HTTP.
4. בדיקת הפונקציה
בדף הסקירה הכללית של Cloud Functions, מציגים את תפריט הפונקציה ולוחצים על Test function :
בשדה Triggering event (הפעלה של אירוע), מזינים את הטקסט הבא בין הסוגריים המרובעים {} ולוחצים על Test the function (בדיקת הפונקציה).
בשדה Output (פלט) אמורה להופיע ההודעה Success: Hello World!
בשדה Logs מופיע קוד הסטטוס 200. קוד הסטטוס הוא 'הצלחה'. לתשומת ליבכם: יכול להיות שתידרש דקה עד שהיומנים יופיעו.
5. צפייה ביומני הפונקציות
לוחצים על החץ הכחול כדי לחזור לדף הסקירה הכללית של Cloud Functions :
מציגים את התפריט של הפונקציה ולוחצים על הצגת יומנים :
הנה דוגמה להיסטוריית היומן :
שימו לב שאתם יכולים לסנן יומנים לפי פונקציה ולפי דרגת חומרה, ולחפש לפי תווית או טקסט חופשי.
האפליקציה שלכם נפרסת ונבדקת והצלחתם לראות את היומנים.
6. משאבים לניקוי
ובכן, אתם לא באמת צריכים לרוקן משאבים, מאחר שמדובר במחשוב ללא שרת (serverless computing): התאמה לעומס (scaling) פירושה גם התאמת העלות לאפס. כך שאם הפונקציה שלכם לא מקבלת תנועה, לא תחויבו בעלות נוספת. בנוסף, גם 2 מיליון ההפעלות הראשונות של הפונקציה של Cloud Functions בכל חודש הן בחינם. פרטים נוספים זמינים בדף התמחור.
כדי למחוק את הפונקציה, עוברים לדף הסקירה הכללית, בוחרים בפונקציה ולוחצים על DELETE (מחיקה):
7. המאמרים הבאים
יש עוד הרבה דברים שמחכים לכם ב-Cloud Functions! מומלץ לעיין ב-Codelabs נוספים, בדף המוצר ובמסמכי התיעוד שלהם.
כדאי לך גם לצפות במקורות המידע הבאים :
- Calling Cloud Functions (טריגרים שזמינים להפעלת פונקציה)
- Monitoring Cloud Functions (יומנים, דיווח על שגיאות ועוד)
- ... או יותר באמצעות Codelabs בקטגוריה ללא שרת (serverless)