במאמרים הקודמים (חלק א', חלק ב') התמקדנו באמזון ובמיקרוסופט, ועכשיו הגיע הזמן לצלול לשאר המתחרים בתחום.
שירותי הענן של גוגל תמיד היו בצל של AWS ו-Azure, וכך גם פתרון ה-FaaS שלה, שהוכרז ממש בשקט בגרסת הבטא מתישהו בספטמבר 2016 בשם Google Cloud Functions וקיבל סטטוס GA רק ביולי 2018 – וגם, כפי שנראה, חלק מהפיצ'רים הדי מרכזיים עדיין נמצאים במצב של pre-release. באפריל 2019, ממש לא מזמן, גוגל הכריזה על Google Run, סוג של פתרון היברידי שמאפשר להריץ Http driven קונטיינרים על תשתית Severless. מפני שהפתרון הזה הוא ממש טרי והוא בדיוק FaaS, לא נתייחס אליו כאן.
כפי שניתן לראות, המסך של יצירת הפונקציה משלב כמה דברים שנמצאים במסכים שונים אצל Azure Functions ו-AWS. הפונקציה החדשה מקבל יחידת קצה HTTP הנגישה מבחוץ באופן אוטומטי ויש אפשרות גם לערוך את הקוד בתוך הדפדפן וגם לעלות אותו כקובץ ZIP לוקלי או מ-CloudStorage.קיימת גם אפשרות לעלות אותו היישר מ-CloudSource, שחסרה אצל מתחרים. האינטגרציה עם פתרונות CI/CD קיימת גם עבור CloudBuild של גוגל עצמו וגם עבור פתרונות אחרים כגון GitLab.
כמות הטריגרים יחסית מוגבלת אבל די מספקת וכוללת שירותים כמו CloudStorage, Pub/Sub, FireStore, FireBase ואחרים. למרות שדוקומנטציה רשמית מציינת שהוספת טריגרים אפשרית גם דרך כלי CLI שנקראה GTool, וגם דרך GUI, הממשק לא מראה את האפשרות הזאת (נכון ליוני 2019).
גם כאן המבחר לא גדול מדי וכולל Node.js, Python ו-Go (החל מינואר 2019, עדיין בבטא).
גוגל פיתחה Functions Framework, כלי שמאפשר פיתוח פונקציות וההרצה שלהן על מגוון סביבות, כולל סביבה לוקלית. נכון ליוני 2019 הוא תומך רק ב-Node.js 10, כך שקשה לראות בו כלי פיתוח בשל. בכל מקרה, זה ה- GitHub הרשמי שלו.
לכל פונקציה קיימת גישה די נוחה לפאנל של הלוגים וגם לכמה פאנלים של ניטור די בסיסי, שבאופן די מפתיע נראים כמו Kibana שעברה שינויים קוסמטיים.
כפי שציינו קודם, הרבה פיצ'רים חשובים של Google Functions הם עדיין בסטטוס של pre-release, וביניהם גם ניהול ה-Scale. ככזה, הוא "נתמך חלקית ויכול להשתנות", ולכן פשוט נציין שהדוקומנטציה הרשמית נמצאת כאן ולא מפרטת יותר מדי חוץ מעובדה שפונקציות נשמרות לפרק זמן מסוים במצב idle כדי להוריד את הזמני cold start ואת הכמות המקסימלית של פונקציות שרצות במקביל, הוא רק חסם עליון שלא מובטח שיתקיים.
עוד פיצ'ר קריטי שנמצא ב-pre release. בגדול, מודל האבטחה מסתמך על ACL - אפשר לקרוא על זה יותר כאן.
בנוסף ל-GB-SECONDS גוגל מגדירה גם מושג CZH-SECONDS, וגם לוקחת בחשבון כמות תעבורת רשת של כל פונקציה. הטיר החינמי נותן 2M קריאות בחודש, 400,000 GB-SECONDS, 200,000 GZ-SECONDS ו-5GB של תעבורת outbound, כאשר תעבורת ה-inbound היא ללא הגבלה. זה אולי נראה מורכב מדי, אבל אם לוקחים בחשבון רק את כמות הקריאות, זה יותר משתלם מההצעות של אמזון ומיקרוסופט.
אז כן, Google Cloud Functions הוא באמת ילד לא רצוי ששכחו אותו בבית: בכל היבט והיבט הוא לא מתקרב אפילו למה שיש למתחרים להציע, אז אם אתם לא מעריצים אדוקים של החברה, אין שום סיבה להשתמש בשירות הזה נכון להיום, ודווקא חבל.
הדוקומנטציה הרשמית ורשימת טיפים וטריקים אמורים לספק לכם יותר מידע.
חברת יבמ עלתה על רכבת של FaaS בפברואר 2016 עם הכרזה על שירות IBM OpenWhisk, שהיה מבוסס פרויקט קוד פתוח Apache OpenWhisk. להבדיל משאר הספקים יבמ הלכה על הפרדיגמה די שונה – היא מראש ראתה בפונקציות רק חלק ממשהו יותר גדול, שהיא הגדירה כאפליקציה, או חבילה, שהם, בעצם, סט לוגי של פונקציות שהם עדיין event-driven, אבל ביחד הן מבצעות משימה יותר גדולה מאשר תגובה לטריגרים. אך מפני שאנחנו דנים כאן בשירות FaaS, נבחן את הפונקציות בלבד בלי להיכנס לקונטקסט יותר רחב של OpenWhisk – את זה נעשה כאשר נדון בשירותים דומים של ספקים אחרים.
הממשק של יצירת הפונקציה הוא הכי מינימליסטי שאפשר לדמיין, בלי אפשרות בחירה של כמות הזיכרון, נקודת קצה עם כתובת URL שגם לא זכתה בכבוד, ושום התייחסות למודל אבטחה - מאוד ספרטני. כפי שאמרנו, לא נתייחס לעניין של חבילות.
להבדיל מהמתחרים, יבמ לא מתייחסת ל-HTTP כאל טריגר בפני עצמו אלא שמה אותו בקטגוריה נפרדת שנקראת Endpoints. כמות הטריגרים המובנים היא די מוגבלת, אך ניתן להשתמש ברפוזיטורי די גדול של custom triggers שקיימים ב-OpenWhisk.
על מנת ליחצן את הפונקציה החדשה לעולם החיצוני יש לחבר אותה ליחידת קצה:
זה נראה כמו API Gateway בהכחשה, אבל לפחות כאן כן אפשר לטפל בהבטחת הפונקציה לפני שפותחים את הגישה אליה לכל העולם.
ישנה תמיכה מובנית ב-Node.js, Python, PHP, Swift, Ruby, ותמיכה דרך הDocker- ל-Go, Java, ו-.NET Core. לרשימה מלאה עם גרסאות מדויקות של כל שפה, לחצו כאן.
האופציה לעלות קובץ ZIP אינה קיימת, והאפשרויות היחידות לעשות CI/CD הן או דרך Bluemix DevOps או דרך Whisk Deploy technology. שתי השיטות דורשות הכרות עמוקה עם האקוסיסטם של יבם, וזה בטוח לא עוזר לאדפטציה רחבה של השירות – אבל לא נראה שזה מדיר שינה מעיניה של החברה.
כמו שציינו, כל השירות מבוסס על OpenWhisk, אז יש את פלטפורמה של קוד פתוח שנקראת Developer Tools for OpenWhisk שמאפשרת לעשות כל מיני דברים במכונה הלוקלית (בין היתר). Eclipse הוא ה-IDE המומלץ לעבודה, אך כל IDE אחר יוכל להתאים גם - כל עוד הקהילה של OpenWhisk עשתה מאמץ לכתוב פלאגין מתאים. יבמ, להבדיל מאמזון ומיקרוסופט, עושה אפס מאמץ בנושא.
והנה הגענו לנקודה שבה יבם דווקא כן מצטיינת. בכל פונקציה קיים ממשק Kibana מלא שנפתח בחלון נפרד כשלוחצים על כפתור של לוגים – זה אמנם מרשים מאוד, רק חבל שהשירות הזה מפסיק להיות חינם ממש בקרוב. בנוסף לכך, קיימת אינטגרציה עם שירות יחסית חדש שנקרא IBM Monitoring Service, כאן ניתן למצוא מדריך מלא.
הדוקומנטציה הרשמית לוקה בחסר בכל מה שקשור ל-scale, והדבר היחיד שניתן להבין זה שהזמן המקסימלי של הריצה הוא 10 דקות. גם מקורות אחרים לא עוזרים, אז הנושא הזה משאר מכוסה בערפל כבד.
ישנם API Keys דפולטיביים שנוצרים באופן אוטומטי לכל פונקציה, שזה די נוח. כמו כן, קיימת אוטנטיקציה OAuth שתומכת בחשבונות Google, Facebook, ו-GitHub – וזה בעצם הכל. ישנה אומנם קריאה מודגשת להתחיל להשתמש ב-שירות IAM, אבל הלינק מציג רק דף הבית של החשבון והחיפוש לא נותן כלום. די מאכזב.
המודל של יבמ די משתמש באותו מושג מוכר של GB-SECONDS, כאשר כל יחידה כזאת עולה $0.000017. המחשבון הרשמי מראה ש-5 מיליון קריאות בחודש של 500ms כל אחת עם הקצאה של 128 MB לא יעלו דבר – וזאת ההצעה הכי משתלמת בין ארבעת המתחרים.
למרות שתמיכה בשפות ותשתית של Logging היא בין הטובים בקטגוריה, השירות של יבמ רחוק מלהיות מושלם בשאר הקטגוריות. ההתבצרות בתוך עולם משלהם (מבחינת כלי פיתוח) גם לא תורמת, הקהילה מאוד מצומצמת אם קיימת בכלל ולכן, אלא אם כן אתם ממש חייבים – כדאי לבחור בשירות אחר.
FAQ רשמי וזהו – כמו בשאר התחומים, גם כאן יבמ לא משקיע יותר מדי.
אם הסקירה הזו מסקנותיה לא שכנעו אותכם ואתם עדין מתלבטים באיזה FaaS לבחור, הינה לכם עוד כמה לינקים שימושיים:Serverless Cost Calculator שתשווה בעלות של כל שירות בצורה מאוד נוחה, ומחקר אקדמי, לא פחות, שעוסק בניתוח והשוואה של הביצועים של FaaS מאמזון, מיקרוסופט וגוגל. אתם יכולים גם לפתוח חשבון חינמי אצל כל אחד ואחד מהוונדורים ולהתנסות בעצמכם – FaaS הוא בין השירותים החינמיים שלא דורשים כרטיס אשראי.
אבל כמובן שעולם ה-Serveress מורכב הרבה יותר מאשר רק FaaS, ולכן בסקירה הבאה בתור נבחן מה לוונדורים מובילים יש להציע בעולם של Serverless Applications, שזה קונספט שמאפשר לייצר פתרונות Serverless הרבה יותר מורכבים מפונקציה בודדת אחת.
Stay Tuned!
במאמרים הקודמים (חלק א', חלק ב') התמקדנו באמזון ובמיקרוסופט, ועכשיו הגיע הזמן לצלול לשאר המתחרים בתחום.
שירותי הענן של גוגל תמיד היו בצל של AWS ו-Azure, וכך גם פתרון ה-FaaS שלה, שהוכרז ממש בשקט בגרסת הבטא מתישהו בספטמבר 2016 בשם Google Cloud Functions וקיבל סטטוס GA רק ביולי 2018 – וגם, כפי שנראה, חלק מהפיצ'רים הדי מרכזיים עדיין נמצאים במצב של pre-release. באפריל 2019, ממש לא מזמן, גוגל הכריזה על Google Run, סוג של פתרון היברידי שמאפשר להריץ Http driven קונטיינרים על תשתית Severless. מפני שהפתרון הזה הוא ממש טרי והוא בדיוק FaaS, לא נתייחס אליו כאן.
כפי שניתן לראות, המסך של יצירת הפונקציה משלב כמה דברים שנמצאים במסכים שונים אצל Azure Functions ו-AWS. הפונקציה החדשה מקבל יחידת קצה HTTP הנגישה מבחוץ באופן אוטומטי ויש אפשרות גם לערוך את הקוד בתוך הדפדפן וגם לעלות אותו כקובץ ZIP לוקלי או מ-CloudStorage.קיימת גם אפשרות לעלות אותו היישר מ-CloudSource, שחסרה אצל מתחרים. האינטגרציה עם פתרונות CI/CD קיימת גם עבור CloudBuild של גוגל עצמו וגם עבור פתרונות אחרים כגון GitLab.
כמות הטריגרים יחסית מוגבלת אבל די מספקת וכוללת שירותים כמו CloudStorage, Pub/Sub, FireStore, FireBase ואחרים. למרות שדוקומנטציה רשמית מציינת שהוספת טריגרים אפשרית גם דרך כלי CLI שנקראה GTool, וגם דרך GUI, הממשק לא מראה את האפשרות הזאת (נכון ליוני 2019).
גם כאן המבחר לא גדול מדי וכולל Node.js, Python ו-Go (החל מינואר 2019, עדיין בבטא).
גוגל פיתחה Functions Framework, כלי שמאפשר פיתוח פונקציות וההרצה שלהן על מגוון סביבות, כולל סביבה לוקלית. נכון ליוני 2019 הוא תומך רק ב-Node.js 10, כך שקשה לראות בו כלי פיתוח בשל. בכל מקרה, זה ה- GitHub הרשמי שלו.
לכל פונקציה קיימת גישה די נוחה לפאנל של הלוגים וגם לכמה פאנלים של ניטור די בסיסי, שבאופן די מפתיע נראים כמו Kibana שעברה שינויים קוסמטיים.
כפי שציינו קודם, הרבה פיצ'רים חשובים של Google Functions הם עדיין בסטטוס של pre-release, וביניהם גם ניהול ה-Scale. ככזה, הוא "נתמך חלקית ויכול להשתנות", ולכן פשוט נציין שהדוקומנטציה הרשמית נמצאת כאן ולא מפרטת יותר מדי חוץ מעובדה שפונקציות נשמרות לפרק זמן מסוים במצב idle כדי להוריד את הזמני cold start ואת הכמות המקסימלית של פונקציות שרצות במקביל, הוא רק חסם עליון שלא מובטח שיתקיים.
עוד פיצ'ר קריטי שנמצא ב-pre release. בגדול, מודל האבטחה מסתמך על ACL - אפשר לקרוא על זה יותר כאן.
בנוסף ל-GB-SECONDS גוגל מגדירה גם מושג CZH-SECONDS, וגם לוקחת בחשבון כמות תעבורת רשת של כל פונקציה. הטיר החינמי נותן 2M קריאות בחודש, 400,000 GB-SECONDS, 200,000 GZ-SECONDS ו-5GB של תעבורת outbound, כאשר תעבורת ה-inbound היא ללא הגבלה. זה אולי נראה מורכב מדי, אבל אם לוקחים בחשבון רק את כמות הקריאות, זה יותר משתלם מההצעות של אמזון ומיקרוסופט.
אז כן, Google Cloud Functions הוא באמת ילד לא רצוי ששכחו אותו בבית: בכל היבט והיבט הוא לא מתקרב אפילו למה שיש למתחרים להציע, אז אם אתם לא מעריצים אדוקים של החברה, אין שום סיבה להשתמש בשירות הזה נכון להיום, ודווקא חבל.
הדוקומנטציה הרשמית ורשימת טיפים וטריקים אמורים לספק לכם יותר מידע.
חברת יבמ עלתה על רכבת של FaaS בפברואר 2016 עם הכרזה על שירות IBM OpenWhisk, שהיה מבוסס פרויקט קוד פתוח Apache OpenWhisk. להבדיל משאר הספקים יבמ הלכה על הפרדיגמה די שונה – היא מראש ראתה בפונקציות רק חלק ממשהו יותר גדול, שהיא הגדירה כאפליקציה, או חבילה, שהם, בעצם, סט לוגי של פונקציות שהם עדיין event-driven, אבל ביחד הן מבצעות משימה יותר גדולה מאשר תגובה לטריגרים. אך מפני שאנחנו דנים כאן בשירות FaaS, נבחן את הפונקציות בלבד בלי להיכנס לקונטקסט יותר רחב של OpenWhisk – את זה נעשה כאשר נדון בשירותים דומים של ספקים אחרים.
הממשק של יצירת הפונקציה הוא הכי מינימליסטי שאפשר לדמיין, בלי אפשרות בחירה של כמות הזיכרון, נקודת קצה עם כתובת URL שגם לא זכתה בכבוד, ושום התייחסות למודל אבטחה - מאוד ספרטני. כפי שאמרנו, לא נתייחס לעניין של חבילות.
להבדיל מהמתחרים, יבמ לא מתייחסת ל-HTTP כאל טריגר בפני עצמו אלא שמה אותו בקטגוריה נפרדת שנקראת Endpoints. כמות הטריגרים המובנים היא די מוגבלת, אך ניתן להשתמש ברפוזיטורי די גדול של custom triggers שקיימים ב-OpenWhisk.
על מנת ליחצן את הפונקציה החדשה לעולם החיצוני יש לחבר אותה ליחידת קצה:
זה נראה כמו API Gateway בהכחשה, אבל לפחות כאן כן אפשר לטפל בהבטחת הפונקציה לפני שפותחים את הגישה אליה לכל העולם.
ישנה תמיכה מובנית ב-Node.js, Python, PHP, Swift, Ruby, ותמיכה דרך הDocker- ל-Go, Java, ו-.NET Core. לרשימה מלאה עם גרסאות מדויקות של כל שפה, לחצו כאן.
האופציה לעלות קובץ ZIP אינה קיימת, והאפשרויות היחידות לעשות CI/CD הן או דרך Bluemix DevOps או דרך Whisk Deploy technology. שתי השיטות דורשות הכרות עמוקה עם האקוסיסטם של יבם, וזה בטוח לא עוזר לאדפטציה רחבה של השירות – אבל לא נראה שזה מדיר שינה מעיניה של החברה.
כמו שציינו, כל השירות מבוסס על OpenWhisk, אז יש את פלטפורמה של קוד פתוח שנקראת Developer Tools for OpenWhisk שמאפשרת לעשות כל מיני דברים במכונה הלוקלית (בין היתר). Eclipse הוא ה-IDE המומלץ לעבודה, אך כל IDE אחר יוכל להתאים גם - כל עוד הקהילה של OpenWhisk עשתה מאמץ לכתוב פלאגין מתאים. יבמ, להבדיל מאמזון ומיקרוסופט, עושה אפס מאמץ בנושא.
והנה הגענו לנקודה שבה יבם דווקא כן מצטיינת. בכל פונקציה קיים ממשק Kibana מלא שנפתח בחלון נפרד כשלוחצים על כפתור של לוגים – זה אמנם מרשים מאוד, רק חבל שהשירות הזה מפסיק להיות חינם ממש בקרוב. בנוסף לכך, קיימת אינטגרציה עם שירות יחסית חדש שנקרא IBM Monitoring Service, כאן ניתן למצוא מדריך מלא.
הדוקומנטציה הרשמית לוקה בחסר בכל מה שקשור ל-scale, והדבר היחיד שניתן להבין זה שהזמן המקסימלי של הריצה הוא 10 דקות. גם מקורות אחרים לא עוזרים, אז הנושא הזה משאר מכוסה בערפל כבד.
ישנם API Keys דפולטיביים שנוצרים באופן אוטומטי לכל פונקציה, שזה די נוח. כמו כן, קיימת אוטנטיקציה OAuth שתומכת בחשבונות Google, Facebook, ו-GitHub – וזה בעצם הכל. ישנה אומנם קריאה מודגשת להתחיל להשתמש ב-שירות IAM, אבל הלינק מציג רק דף הבית של החשבון והחיפוש לא נותן כלום. די מאכזב.
המודל של יבמ די משתמש באותו מושג מוכר של GB-SECONDS, כאשר כל יחידה כזאת עולה $0.000017. המחשבון הרשמי מראה ש-5 מיליון קריאות בחודש של 500ms כל אחת עם הקצאה של 128 MB לא יעלו דבר – וזאת ההצעה הכי משתלמת בין ארבעת המתחרים.
למרות שתמיכה בשפות ותשתית של Logging היא בין הטובים בקטגוריה, השירות של יבמ רחוק מלהיות מושלם בשאר הקטגוריות. ההתבצרות בתוך עולם משלהם (מבחינת כלי פיתוח) גם לא תורמת, הקהילה מאוד מצומצמת אם קיימת בכלל ולכן, אלא אם כן אתם ממש חייבים – כדאי לבחור בשירות אחר.
FAQ רשמי וזהו – כמו בשאר התחומים, גם כאן יבמ לא משקיע יותר מדי.
אם הסקירה הזו מסקנותיה לא שכנעו אותכם ואתם עדין מתלבטים באיזה FaaS לבחור, הינה לכם עוד כמה לינקים שימושיים:Serverless Cost Calculator שתשווה בעלות של כל שירות בצורה מאוד נוחה, ומחקר אקדמי, לא פחות, שעוסק בניתוח והשוואה של הביצועים של FaaS מאמזון, מיקרוסופט וגוגל. אתם יכולים גם לפתוח חשבון חינמי אצל כל אחד ואחד מהוונדורים ולהתנסות בעצמכם – FaaS הוא בין השירותים החינמיים שלא דורשים כרטיס אשראי.
אבל כמובן שעולם ה-Serveress מורכב הרבה יותר מאשר רק FaaS, ולכן בסקירה הבאה בתור נבחן מה לוונדורים מובילים יש להציע בעולם של Serverless Applications, שזה קונספט שמאפשר לייצר פתרונות Serverless הרבה יותר מורכבים מפונקציה בודדת אחת.
Stay Tuned!
הודעתך לא התקבלה - נסה שוב מאוחר יותר
Oops! Something went wrong while submitting the form