Serverless Architecture – האם מדובר בבאזז וורד או בפריצת דרך ממשית?

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

בקצרה...

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

תוכן עניינים

מהי ארכיטקטורת Serverless? מעבר לשם המטעה

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

במילים פשוטות, Serverless מעביר את האחריות על ניהול השרת מהארגון לספק הענן. המודל פועל על בסיס אירועים (Event-driven): הקוד אינו רץ באופן רציף על שרת ייעודי, אלא מופעל רק כתגובה לאירוע ספציפי, כמו בקשת HTTP ממשתמש, העלאת קובץ חדש, שינוי בבסיס הנתונים, או הודעה בתור. לאחר שהפונקציה סיימה את ריצתה, המשאבים משוחררים. מודל תמחור זה, המכונה "Pay-as-you-go" או ליתר דיוק "Pay-per-execution", הוא אחד היתרונות המרכזיים של הגישה, שכן אתם משלמים רק עבור זמן הריצה המדויק של הקוד שלכם, עד לרמת המילי-שנייה, ולא עבור שרתים שעומדים במצב המתנה (idle).

ההתפתחות של מודלי מחשוב ענן

כדי להבין את גודל השינוי, כדאי להסתכל על ההתפתחות של שירותי ענן לאורך השנים:

מודל תיאור רמת ניהול של הלקוח
On-Premise (מקומי) הארגון רוכש ומנהל את כל התשתית הפיזית בחוות השרתים שלו. ניהול מלא: חומרה, רשת, אחסון, מערכות הפעלה, תוכנה.
IaaS (Infrastructure as a Service) הספק מספק משאבי מחשוב וירטואליים (שרתים, אחסון, רשת) והלקוח מנהל את מערכת ההפעלה והאפליקציות. ניהול מערכת הפעלה, תוכנות ביניים, סביבת ריצה, נתונים ואפליקציות.
PaaS (Platform as a Service) הספק מנהל את החומרה ומערכת ההפעלה, והלקוח מתמקד בפריסה וניהול האפליקציות שלו. ניהול נתונים ואפליקציות בלבד.
Serverless (FaaS) הספק מנהל הכל, כולל סביבת הריצה. הלקוח מספק רק את קוד הפונקציה. ניהול קוד הפונקציה בלבד. אין ניהול תשתית כלל.

המודלים העיקריים של Serverless: FaaS ו-BaaS

המונח Serverless כולל בתוכו שני מודלים עיקריים, שלעיתים קרובות עובדים יחד אך משרתים מטרות שונות: FaaS ו-BaaS.

FaaS (Functions as a Service): לב המהפכה

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

  • ספקיות מובילות: AWS Lambda, Google Cloud Functions, Azure Functions.
  • תרחישי שימוש נפוצים:
    • Backend ל-API: יצירת ממשקי API מהירים וגמישים לאפליקציות ווב ומובייל.
    • עיבוד נתונים: טיפול בנתונים בזמן אמת, למשל שינוי גודל תמונות שמועלות לאחסון, ניתוח לוגים, או הפעלת תהליכי ETL.
    • אוטומציה: ביצוע משימות אוטומטיות בתגובה לאירועים במערכת, כמו שליחת אימייל אישור לאחר הרשמה.
    • יישומי IoT: עיבוד מידע המגיע מחיישנים ומכשירים מחוברים.

BaaS (Backend as a Service): פישוט הפיתוח

BaaS, שלעיתים מכונה גם MBaaS (Mobile Backend as a Service), הוא מודל נוסף תחת מטריית ה-Serverless. בעוד FaaS מתמקד בהרצת לוגיקה עסקית מותאמת אישית, BaaS מספק למפתחים סט של שירותי צד-שרת מוכנים מראש, הניתנים לצריכה דרך API. שירותים אלה כוללים פונקציונליות נפוצה שנדרשת ברוב האפליקצי великолепות, ומייתרים את הצורך לפתח אותה מאפס.

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

  • ספקיות מובילות: Google Firebase, AWS Amplify.
  • שירותים נפוצים:
    • ניהול זהויות ואימות משתמשים.
    • בסיסי נתונים (לרוב NoSQL) בזמן אמת.
    • אחסון קבצים בענן.
    • שליחת התראות Push.
    • שירותי Machine Learning מוכנים.

היתרונות המרכזיים של מעבר ל-Serverless

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

חיסכון פוטנציאלי בעלויות

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

סקלביליות אוטומטית ומיידית

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

פרודוקטיביות מפתחים מוגברת וקיצור זמן היציאה לשוק (Time to Market)

כאשר המפתחים לא צריכים לדאוג להקמת שרתים, התקנת מערכות הפעלה, קונפיגורציה של רשתות או ניהול עדכוני אבטחה, הם יכולים להשקיע את כל זמנם ומרצם במה שחשוב באמת: פיתוח פיצ'רים חדשים ומתן ערך עסקי. הגישה מאפשרת פריסה מהירה של יחידות קוד קטנות ועצמאיות, מה שמקל על תהליכי CI/CD (Continuous Integration/Continuous Deployment) ומקצר משמעותית את הזמן מרגע כתיבת הקוד ועד שהוא זמין למשתמשי הקצה. זהו יתרון קריטי בשוק התחרותי של היום.

גמישות תפעולית

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

האתגרים והחסרונות: מתי Serverless הוא לא הפתרון?

למרות היתרונות הרבים, חשוב להבין ש-Serverless אינה תרופת פלא שמתאימה לכל בעיה. ישנם אתגרים ומגבלות שכל ארגון חייב לשקול לפני שהוא קופץ למים העמוקים.

"התחלה קרה" (Cold Starts)

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

מורכבות בניטור ודיבאגינג

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

נעילת ספק (Vendor Lock-in)

המעבר ל-Serverless כרוך בשימוש אינטנסיבי בשירותים הייחודיים של ספקית ענן ספציפית (כמו AWS Lambda, S3, DynamoDB). הפונקציות נכתבות ומוגדרות בהתאם ל-API ולתצורות של אותו ספק. העברת יישום Serverless מספק ענן אחד לאחר היא תהליך מורכב ויקר, שלעיתים דורש שכתוב של חלקים נרחבים מהקוד. חשוב להיות מודעים לסיכון זה ולתכנן את הארכיטקטורה באופן שיצמצם את התלות ככל הניתן, למשל באמצעות שימוש בכלים ו-Frameworks כמו Serverless Framework.

מגבלות תצורה וביצוע

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

אתגרי אבטחת מידע

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

אז באזז או פריצת דרך? פסק הדין של ERG

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

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

הצלחה במעבר ל-Serverless דורשת תכנון נכון, הבנה של המגבלות, ושותף טכנולוגי מנוסה שיודע לנווט את המורכבות. בחברת ERG, אנו מספקים שירותי מחשוב לעסקים וייעוץ אסטרטגי שמטרתם להתאים את הפתרון הטכנולוגי הנכון ליעדים העסקיים שלכם, בין אם מדובר ב-Serverless, קונטיינרים או תשתיות ענן מסורתיות. למידע נוסף, תוכלו לצפות בסרטון Serverless for the Enterprise – Rafal Gancarz.

שאלות נפוצות

לא. השם מעט מטעה. שרתים עדיין קיימים והם אלו שמריצים את הקוד. ההבדל המהותי הוא שאתם, כלקוחות, לא צריכים לנהל אותם, לרכוש אותם, לתחזק אותם או לדאוג לגביהם. כל ניהול התשתית הפיזית והווירטואלית מופשט ומתבצע על ידי ספקית שירותי הענן. אתם מתמקדים רק בקוד.
לא בהכרח, אך לעיתים קרובות כן. הפוטנציאל לחיסכון מגיע ממודל התמחור 'שלם לפי שימוש', שבו משלמים רק עבור זמן הריצה המדויק. זה אידיאלי ליישומים עם תעבורה נמוכה או תנודתית. עם זאת, ביישומים עם עומס גבוה מאוד וקבוע, ייתכן שמודל של שרתים ייעודיים (Reserved Instances) יהיה כלכלי יותר בטווח הארוך. נדרש ניתוח עלויות פרטני לכל מקרה.
'התחלה קרה' היא העיכוב הראשוני שנוצר כאשר פונקציה שלא הייתה בשימוש נקראת מחדש. ספק הענן צריך להקצות לה סביבת ריצה מאפס, מה שלוקח זמן. ניתן למזער את התופעה על ידי 'חימום' הפונקציות (שליחת בקשות יזומות במרווחי זמן קבועים) או שימוש בתכונות כמו 'Provisioned Concurrency' (ב-AWS) שמבטיחות מספר מסוים של סביבות ריצה תמיד זמינות וחמות, אם כי פתרון זה כרוך בעלות נוספת.
Serverless מצטיינת ביישומים מונעי-אירועים (event-driven). תרחישים אידיאליים כוללים: בניית ממשקי API (Backends for APIs), עיבוד נתונים בזמן אמת (למשל, עיבוד תמונות או לוגים), אוטומציה של תהליכי IT ו-DevOps, צ'אטבוטים, ויישומי IoT. היא פחות מתאימה למשימות ארוכות טווח (long-running tasks) הדורשות משאבי מחשוב אינטנסיביים וקבועים.
המעבר דורש שינוי חשיבה. מפתחים צריכים להתרגל לעבוד עם פונקציות קטנות, חסרות מצב (stateless) וסביבה מבוזרת. ישנה עקומת למידה הקשורה להבנת המערכת האקולוגית של ספק הענן, כלי הניטור והדיבאגינג החדשים, ותכנון ארכיטקטורה מבוססת אירועים. עם זאת, היתרון הוא שהם לא צריכים להתעסק יותר בניהול שרתים, מה שמפנה להם זמן רב להתמקד בפיתוח עצמו.
הוא משנה את מודל האבטחה. האחריות על אבטחת התשתית עוברת לספק הענן (אבטחה 'של' הענן), אך הארגון עדיין אחראי באופן מלא לאבטחת הקוד, הנתונים והתצורה שלו (אבטחה 'בענן'). שטח התקיפה גדל מכיוון שכל פונקציה היא נקודת כניסה פוטנציאלית. לכן, נדרשת הקפדה יתרה על ניהול הרשאות מינימליות (Least Privilege), אבטחת ה-API, וסריקת הקוד והתלויות שלו לפגיעויות.
איור של גבר עם שיער וחזק כהים, לבוש חולצה כחולה, על רקע עיגול כתום. הפנים ריקות.

למה החלטתי לכתוב על נושא זה

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

בואו נסכם...

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

איל גבעון, מנכ"ל משותף

השותף שאומר תמיד לא חובב סדר, ניקיון ונהלי עבודה אמרה נפוצה: "בשביל זה כתבנו נוהל – תעבדו לפי הנוהל ואז תחזרו אלי עם הצלחות" בעיקר משתדל לא להפריע לאף אחד אחר

מאמרים נוספים באתר
השיתופים שלכם עושים לנו טוב על הלב
דילוג לתוכן