Cloud Run היא פלטפורמת אפליקציות מנוהלת להרצת קוד, פונקציות או קונטיינרים על גבי התשתית של Google, שאפשר להתאים לעומס.
אפשר לפרוס ב-Cloud Run קוד שנכתב בכל שפת תכנות, אם אפשר ליצור ממנו קובץ אימג' של קונטיינר. למעשה, פיתוח קובצי אימג' של קונטיינרים הוא אופציונלי. אם אתם משתמשים ב-Go, Node.js, Python, Java, NET, Ruby או ב-framework נתמך, אתם יכולים להשתמש באפשרות פריסה מבוססת-מקור שיוצרת את הקונטיינר בשבילכם, לפי השיטות המומלצות לשפה שבה אתם משתמשים.
Google יצרה את Cloud Run כך שיפעל בצורה טובה עם שירותים אחרים ב- Google Cloud, כדי שתוכלו ליצור אפליקציות עם כל התכונות.
בקיצור, Cloud Run מאפשר למפתחים להקדיש את הזמן שלהם לכתיבת הקוד, ולהשקיע מעט מאוד זמן בהפעלה, בהגדרה ובשינוי של קנה המידה של שירות Cloud Run. כדי להיות פרודוקטיביים עם Cloud Run, לא צריך ליצור אשכול או לנהל תשתית.
שירותים, משימות ומאגרי עובדים: שלוש דרכים להפעלת הקוד
ב-Cloud Run, הקוד יכול לפעול כ שירות, משימה או מאגר עובדים. כל סוגי המשאבים האלה מריצים מופעי קונטיינר בארגז חול באותה סביבת ביצוע, ויכולים להשתלב עםGoogle Cloud שירותים.
בטבלה הבאה מוצגות האפשרויות שזמינות בכל סוג של משאב Cloud Run.
| משאב | תיאור |
|---|---|
| שירות | השירות מגיב לבקשות HTTP שנשלחות לנקודת קצה (endpoint) ייחודית ויציבה, באמצעות מופעים חסרי מצב (stateless) שמתבצעת בהם התאמה אוטומטית של קנה המידה על סמך מגוון מדדי מפתח. השירות גם מגיב לאירועים ולפונקציות. |
| משימה | מבצע משימות שניתנות להרצה מקבילית, שמופעלות באופן ידני או לפי לוח זמנים, ופועלות עד לסיום. |
| מאגר עובדים | מטפל בעומסי עבודה ברקע שפועלים כל הזמן, כמו עומסי עבודה מבוססי-משיכה (pull), למשל צרכני Kafka, תורים של משיכת נתונים ב-Pub/Sub או צרכני RabbitMQ. |
שירותי Cloud Run
שירות Cloud Run מספק את התשתית שנדרשת להפעלת נקודת קצה אמינה של HTTPS. באחריותכם לוודא שהקוד מקשיב ביציאת TCP ומטפל בבקשות HTTP.
בתרשים הבא מוצג שירות Cloud Run שמריץ כמה מופעי קונטיינר כדי לטפל בבקשות ובאירועים מהלקוח באמצעות נקודת קצה של HTTPS.
שירות רגיל כולל את התכונות הבאות:
- נקודת קצה (endpoint) ייחודית של HTTPS לכל שירות
- לכל שירות ב-Cloud Run יש נקודת קצה של HTTPS בתת-דומיין ייחודי של דומיין
*.run.app– ואפשר גם להגדיר דומיינים מותאמים אישית. Cloud Run מנהל את TLS בשבילכם ותומך ב-WebSockets, ב-HTTP/2 (מקצה לקצה) וב-gRPC (מקצה לקצה). - התאמה מהירה לעומס (auto-scaling) על סמך בקשות
- Cloud Run מתרחב במהירות כדי לטפל בכל הבקשות הנכנסות או כדי לטפל בניצול מוגבר של המעבד (CPU) מחוץ לבקשות, אם הגדרת החיוב מוגדרת לחיוב מבוסס-אינסטנס. שירות יכול להתרחב במהירות עד אלף מופעים, או אפילו יותר אם תבקשו להגדיל את המכסה. אם הביקוש יורד, Cloud Run מסיר קונטיינרים לא פעילים. אם אתם חוששים לגבי עלויות או עומס יתר על מערכות במורד הזרם, אתם יכולים להגביל את המספר המקסימלי של המופעים.
- שינוי גודל ידני אופציונלי
- כברירת מחדל, Cloud Run מתאים את מספר המכונות באופן אוטומטי כדי לטפל בתעבורת נתונים גדולה יותר, אבל אפשר לשנות את ההתנהגות הזו באמצעות התאמה ידנית לעומס כדי לשלוט בהתנהגות ההתאמה לעומס.
- ניהול תנועה מובנה
כדי להקטין את הסיכון בפריסת גרסה חדשה, ב-Cloud Run אפשר לבצע השקה הדרגתית, כולל ניתוב תנועה נכנסת לגרסה האחרונה, חזרה לגרסה קודמת ופיצול תנועה לכמה גרסאות בו-זמנית.
לדוגמה, אפשר להתחיל בשליחת 1% מהבקשות לגרסה חדשה, ולהגדיל את האחוז הזה תוך מעקב אחרי נתוני הטלמטריה.
- שירותים ציבוריים ופרטיים
אפשר להגיע לשירות Cloud Run מהאינטרנט, או להגביל את הגישה בדרכים הבאות:
- מציינים מדיניות גישה באמצעות Cloud IAM.
- שימוש בהגדרות של תעבורת נכנסת כדי להגביל את הגישה לרשת האפשרות הזו שימושית אם רוצים לאפשר רק תעבורה פנימית מ-VPC ושירותים פנימיים.
- אפשר להשתמש רק במשתמשים מאומתים עם שרת proxy לאימות זהויות (IAP).
כדי להציג נכסים שניתנים לשמירה במטמון ממיקום קרוב יותר ללקוחות, אפשר להשתמש בשירות Cloud Run עם רשת להעברת תוכן (CDN), כמו Firebase Hosting ו-Cloud CDN.
התאמה להיקף הפרסום לאפס ומספר מינימלי של מופעים
כברירת מחדל, אם החיוב מוגדר כחיוב לפי מופע, Cloud Run מוסיף מופעים ומסיר מופעים באופן אוטומטי כדי לטפל בכל הבקשות הנכנסות או כדי לטפל בניצול מוגבר של המעבד (CPU) מחוץ לבקשות.
אם לא יתקבלו בקשות לשירות שלכם, גם המופע האחרון שנותר יוסר. התנהגות כזו נקראת בדרך כלל 'התאמה לאפס'. לאחר מכן, אם אין מופעים פעילים כשמתקבלת בקשה, Cloud Run יוצר מופע חדש. כך זמן התגובה לבקשות הראשונות האלה מתארך, בהתאם למהירות שבה מאגר התגים מוכן לטפל בבקשות.
כדי לשנות את ההתנהגות הזו, אפשר להשתמש באחת מהשיטות הבאות:
- הגדרת Cloud Run כך שמספר מינימלי של מופעים יישארו פעילים, כדי שהשירות לא יצטמצם לאפס מופעים
- שימוש בשינוי גודל ידני כדי לקבל יותר שליטה על שינוי הגודל.
תמחור לפי שימוש בשירותים
האפשרות של שינוי קנה מידה לאפס היא אטרקטיבית מסיבות כלכליות, כי אתם משלמים על המעבד והזיכרון שהוקצו למופע ברמת פירוט של 100 אלפיות השנייה. אם לא מגדירים מספר מינימלי של מופעים, לא מחויבים אם לא נעשה שימוש בשירות. יש תוכנית נדיבה בחינם. מידע נוסף זמין במאמר בנושא תמחור.
יש שתי הגדרות חיוב שאפשר להפעיל:
- מבוסס על בקשות
- אם מופע לא מעבד בקשות, לא תחויבו. אתם משלמים עמלה לכל בקשה.
- מבוסס-מופע
- אתם מחויבים על כל משך החיים של מופע. אין עמלה לכל בקשה.
יש תוכנית נדיבה בחינם. מידע נוסף על תמחור זמין במאמר בנושא הגדרות חיוב, שבו מוסבר איך להפעיל חיוב לפי בקשה או חיוב לפי מופע בשירות.
מערכת קבצים של קונטיינר חד-פעמי
מכונות ב-Cloud Run הן זמניות. לכל מאגר יש שכבת-על של מערכת קבצים שניתנת לכתיבה בזיכרון, שלא נשמרת אם המאגר נסגר. Cloud Run קובע מתי להפסיק לשלוח בקשה למופע ולסגור אותו, למשל כשמצמצמים את קנה המידה.
כדי לקבל אזהרה כש-Cloud Run עומד להשבית מופע, האפליקציה יכולה ללכוד את האות SIGTERM. כך הקוד יכול לרוקן מידע (Flush) את המאגרים המקומיים ולשמור את הנתונים מחנויות מקומיות במאגר נתונים חיצוני.
כדי לשמור קבצים באופן קבוע, צריך לשלב עם Cloud Storage או לטעון מערכת קבצים ברשת (NFS).
מתי כדאי להשתמש בשירותי Cloud Run
שירותי Cloud Run מתאימים לקוד שמטפל בבקשות, באירועים או בפונקציות. תרחישים לדוגמה:
- אתרים ואפליקציות אינטרנט
- ליצור את אפליקציית האינטרנט באמצעות הסטאק המועדף, לגשת למסד נתוני ה-SQL ולעבד דפי HTML דינמיים.
- ממשקי API ומיקרו-שירותים
- אפשר ליצור API בארכיטקטורת REST, API ל-GraphQL או מיקרו-שירותים פרטיים שמתקשרים באמצעות HTTP או gRPC.
- עיבוד נתונים בסטרימינג
- שירותי Cloud Run יכולים לקבל הודעות ממינויי Push ב-Pub/Sub ואירועים מ-Eventarc.
- עומסי עבודה אסינכרוניים
- פונקציות Cloud Run יכולות להגיב לאירועים אסינכרוניים, כמו הודעה בנושא Pub/Sub, שינוי בקטגוריה של Cloud Storage או אירוע Firebase.
- הסקת מסקנות מ-AI
- שירותי Cloud Run, עם או בלי GPU מוגדר, יכולים לארח עומסי עבודה של AI, כמו מודלים של הסקת מסקנות ואימון מודלים.
משימות ב-Cloud Run
אם הקוד מבצע פעולה ואז מפסיק, למשל באמצעות סקריפט, אפשר להשתמש בעבודת Cloud Run כדי להריץ את הקוד. אפשר להריץ את העבודה משורת הפקודה באמצעות Google Cloud CLI, על ידי תזמון עבודה חוזרתאו על ידי הפעלת העבודה כחלק מתהליך עבודה.
משימות מערך הן דרך מהירה יותר להריץ משימות
עבודה יכולה להפעיל מופע יחיד כדי להריץ את הקוד – זו דרך נפוצה להריץ סקריפט או כלי.
עם זאת, אפשר גם להשתמש במערך של משימות, ולהתחיל במקביל הרבה מקרים זהים ועצמאיים. משימות מערך הן דרך מהירה יותר לעיבוד משימות שאפשר לפצל לכמה משימות עצמאיות.
בתרשים הבא אפשר לראות איך עבודה עם שבע משימות אורכת יותר זמן כשהיא מתבצעת ברצף, לעומת אותה עבודה כשאפשר לעבד ארבע משימות עצמאיות במקביל:
לדוגמה, אם משנים את הגודל של 1,000 תמונות מ-Cloud Storage וגוזרים אותן, עיבוד רציף שלהן יהיה איטי יותר מעיבוד מקביל שלהן עם הרבה מופעים, כש-Cloud Run מנהל את שינוי הגודל האוטומטי.
מתי כדאי להשתמש במשימות Cloud Run
משימות ב-Cloud Run מתאימות להרצת קוד שמבצע עבודה (משימה) ומפסיק לפעול כשהעבודה מסתיימת. הנה כמה דוגמאות:
- סקריפט או כלי
- להריץ סקריפט כדי לבצע העברות של מסדי נתונים או משימות תפעוליות אחרות.
- Array job
- ביצוע עיבוד מקבילי מאוד של כל הקבצים בקטגוריה של Cloud Storage.
- משימה מתוזמנת
- ליצור ולשלוח חשבוניות במרווחי זמן קבועים, או לשמור את התוצאות של שאילתת מסד נתונים כ-XML ולהעלות את הקובץ כל כמה שעות.
- עומסי עבודה של AI
- משימות Cloud Run עם GPU מוגדר או בלי GPU מוגדר יכולות לארח עומסי עבודה של AI, כמו הסקת מסקנות באצווה, כוונון עדין של מודלים ואימון מודלים.
מאגרי עובדים ב-Cloud Run
מאגרי עובדים מיועדים לעומסי עבודה שלא מסתמכים על טיפול בבקשות HTTP. הם מספקים מאגר גמיש וניתן להרחבה של משאבי מחשוב, שמותאם לעיבוד רציף ברקע שלא מבוסס על HTTP ומתבצע בשיטת משיכה. המאפיינים העיקריים הבאים מגדירים את אופן הפעולה של מאגרי העובדים:
מאגרי עובדים לא משנים את הגודל שלהם באופן אוטומטי. להגדיל את מספר המופעים באופן ידני שדרושים למאגר העובדים של Cloud Run כדי לטפל בעומס העבודה. כדי שהעומס יתחיל לפעול ויישאר פעיל, צריך להיות לו לפחות מופע אחד. אם מגדירים את מספר המופעים המינימלי ל-
0, מופע העובד לא יופעל, גם אם הפריסה תצליח.כדי להתאים באופן דינמי את המופעים על סמך הביקוש בזמן אמת, צריך ליצור כלי משלכם להתאמה אוטומטית לעומס. דוגמה אפשר לראות במאמר התאמת קנה מידה אוטומטית של עומסי עבודה של צרכני Kafka.
מאגרי עובדים מנהלים השקות על ידי פיצול מופעים בין עדכונים, במקום לפצל תנועה. לדוגמה, במאגר עובדים עם ארבעה מופעים, אפשר להקצות 25% (מופע אחד) לגרסה חדשה ו-75% (שלושה מופעים) לגרסה יציבה.
מאגרי עובדים תומכים בDirect VPC egress ו-ingress, ואין להם נקודת קצה או כתובת URL עם איזון עומסים. מידע נוסף על תמיכה בשרת מטא-נתונים (MDS) ועל אחזור כתובות ה-IP הפרטיות של מופע מאגר העובדים זמין במאמר חוזה זמן הריצה של הקונטיינר.
ב-Cloud Run, החיוב מתבצע רק על משך הזמן שבו מופעלים מופעי worker pool.
מתי כדאי להשתמש במאגרי עובדים ב-Cloud Run
מאגרי עובדים לא מחייבים נקודות קצה (endpoint) ציבוריות של HTTP. כך הרשת שלכם בטוחה יותר וקוד האפליקציה פשוט יותר. בנוסף, לא צריך לנהל יציאות לבדיקות תקינות. מקרי השימוש הבאים רלוונטיים למאגרי עובדים:
עומסי עבודה מבוססי-משיכה: פריסת עומס עבודה למשיכת הודעות מתור לטיפול. לדוגמה, Kafka Consumer, Pub/Sub pull ו-RabbitMQ.
בתרשים הבא מוצגים תרחישי שימוש לפריסת מאגרי עובדים לעומסי עבודה מבוססי-משיכה:

בתרחיש לדוגמה של Pub/Sub, מנוי Cloud Run עם שינוי גודל אוטומטי מושך הודעות ממינוי Pub/Sub. בתרחיש לדוגמה של Kafka, צרכן Cloud Run עם שינוי גודל אוטומטי מושך הודעות מנושא Kafka.
עומסי עבודה גנריים שלא קשורים לבקשות: הפעלת עומס עבודה מבוסס-קונטיינר שלא מיועד לטיפול בבקשות נכנסות.
Google Cloud integrations
Cloud Run משתלב עם המערכת האקולוגית הרחבה של Google Cloud, שמאפשרת לכם ליצור אפליקציות עם מגוון רחב של תכונות.
שילובים חשובים כוללים:
- אחסון הנתונים
- Cloud Run משתלב עם Cloud SQL (MySQL, PostgreSQL ו-SQL Server מנוהלים), Memorystore (Redis ו-Memcached מנוהלים), Firestore, Spanner, Cloud Storage ועוד. רשימה מלאה מופיעה במאמר בנושא אחסון נתונים.
- רישום ביומן ודיווח שגיאות
- יומני קונטיינרים מוזנים אוטומטית ל-Cloud Logging. אם יש חריגים ביומנים, Error Reporting יצבור אותם ואז ישלח לכם התראה. השפות הבאות נתמכות: Go, Java, Node.js, PHP, Python, Ruby ו-NET.
- זהות השירות
- כל גרסה של Cloud Run מקושרת לחשבון שירות, וספריות הלקוח משתמשות בחשבון השירות הזה באופן שקוף כדי לבצע אימות מול Google Cloud ממשקי API
. Google Cloud- פיתוח רציף (continuous delivery)
- אם אתם מאחסנים את קוד המקור ב-GitHub, אתם יכולים להגדיר את Cloud Run כך שיפרוס אוטומטית קומיטים חדשים.
- רשתות פרטיות
- מכונות Cloud Run יכולות לגשת למשאבים ברשת של הענן הווירטואלי הפרטי (VPC) באמצעות מחבר הגישה לרשת (VPC) מאפליקציית serverless. כך השירות יכול להתחבר למכונות וירטואליות ב-Compute Engine, או למוצרים שמבוססים על Compute Engine כמו Google Kubernetes Engine או Memorystore.
- ממשקי API שלGoogle Cloud
- הקוד של השירות שלכם מבצע אימות שקוף עם ממשקי API. Google Cloud הם כוללים את ממשקי ה-API של AI ולמידת מכונה, כמו Cloud Vision API, Speech-to-Text API, AutoML Natural Language API, Cloud Translation API ועוד רבים אחרים.
- משימות ברקע
- אפשר לתזמן את הפעלת הקוד למועד מאוחר יותר או מיד אחרי החזרת בקשה לאחזור מהרשת. Cloud Run פועל בצורה טובה עם Cloud Tasks כדי לספק ביצוע אסינכרוני שניתן להרחבה ומהימן.
במאמר התחברות לשירותים מופיעה רשימה של שירותים רבים שפועלים היטב עם Cloud Run. Google Cloud Google Cloud
הקוד פועל בקובץ אימג' של קונטיינר
לא צריך להכיר את המושג 'מאגר תגים' כדי לפרוס את הקוד ב-Cloud Run, אבל הקוד תמיד יפעל במופעי מאגר תגים בסביבת ארגז חול.
אם אתם לא מכירים את המושג'מאגרי תגים', הנה הסבר קצר.
כפי שמוצג בתרשים, אתם משתמשים בקוד המקור, בנכסים וביחסי התלות של הספרייה כדי ליצור את קובץ האימג' של הקונטיינר, שהוא חבילה עם כל מה שהשירות צריך כדי לפעול. הם כוללים ארטיפקטים של בנייה, נכסים, חבילות מערכת ו (אופציונלית) זמן ריצה. כך אפליקציה בקונטיינר ניידת באופן מובנה – היא פועלת בכל מקום שבו אפשר להפעיל קונטיינר. דוגמאות לארטיפקטים של build כוללות קבצים בינאריים או קובצי סקריפט שעברו קומפילציה, ודוגמאות לזמני ריצה הן זמן הריצה של Node.js JavaScript או מכונה וירטואלית של Java (JVM).
מומחים בתחום מעריכים את העובדה ש-Cloud Run לא מטיל עומסים נוספים על הרצת הקוד: אפשר להריץ כל קובץ בינארי ב-Cloud Run.
אם אתם רוצים נוחות רבה יותר או להאציל את המשימה של הפיכת האפליקציה לקונטיינר ל-Google, תוכלו להשתמש ב-Cloud Run בשילוב עם buildpacks של Google Cloud בקוד פתוח כדי לבצע פריסה שמבוססת על קוד המקור.
המאמרים הבאים
- פריסת שירות ב-Cloud Run
- יצירה והרצה של משימת Cloud Run
- איך מריצים משימות לפי לוח זמנים
- פריסת מאגר עובדים
- עיון במודל המשאבים
- מידע נוסף על חוזה זמן הריצה של מאגרים