מה זה ללא שרת? הסבר על מחשוב ללא שרת

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

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

מהו מחשוב ללא שרת?

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

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

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

יתרונות וחסרונות של מחשוב ללא שרת

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

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

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

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

ספקים ללא שרתים: AWS למבה, פונקציות תכלת, ופונקציות ענן של גוגל

העידן המודרני של מחשוב ללא שרת החל עם השקת AWS Lambda, פלטפורמה המבוססת על שירות הענן של אמזון, בשנת 2014. מיקרוסופט הלכה בעקבותיה עם Azure Functions בשנת 2016. Google Cloud Functions, שהייתה בגרסת בטא מאז 2017, הגיעה סוף סוף למצב ייצור. ביולי 2018. לשלושת השירותים יש מגבלות שונות, יתרונות, שפות נתמכות ודרכי פעולה. לרוהיט אקיווטקר יש סקירה טובה ומפורטת על ההבחנות בין השלושה. כמו כן, פועל גם IBM Cloud Functions, המבוסס על פלטפורמת Apache OpenWhisk המקור הפתוח.

בין כל פלטפורמות המחשוב ללא שרתים, AWS למבה היא הבולטת ביותר, וברור שהיה לה הכי הרבה זמן להתפתח ולהבשיל. יש כיסוי של עדכונים ותכונות חדשות שנוספו ל- AWS למבדה בשנה האחרונה.

ערימות ללא שרתים

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

אמנם אתה יכול לערבב ולהתאים הצעות ספציפיות שונות בכל אחת מהקטגוריות הללו, אך יש מגבלות תלוי באיזה ספק אתה משתמש, עם חפיפה מסוימת. לדוגמה, עבור שפות, אתה יכול להשתמש ב- Node.js, Java, Go, C # ו- Python ב- AWS Lambda, אך רק JavaScript, C # ו- F # עובדים באופן מקורי על פונקציות Azure. בכל הנוגע לטריגרים, ל- AWS Lambda יש את הרשימה הארוכה ביותר, אך רבים מהם ספציפיים לפלטפורמת AWS, כמו Amazon Simple Email Service ו- AWS CodeCommit; פונקציות ענן של גוגל, בינתיים, יכולות להיות מופעלות על ידי בקשות HTTP כלליות. לפול ג'אורסקי יש מבט מעמיק על הערימות של כל אחת משלוש ההנפקות הגדולות.

מסגרות ללא שרתים

שווה להתעכב מעט על חלק המסגרת של המשוואה, מכיוון שזה יגדיר הרבה כיצד לבנות את היישום שלך בסופו של דבר. לאמזון יש הצעה מקורית משלה, מודל היישומים ללא קוד השרת (SAM), אך ישנם גם אחרים, שרובם חוצה פלטפורמות וגם קוד פתוח. אחת הפופולריות ביותר נקראת, באופן כללי, ללא Server, ומדגישה שהיא מספקת את אותה חוויה של כל פלטפורמה נתמכת, כלומר AWS Lambda, Azure Functions, Google Cloud Functions ו- IBM OpenWhisk. הצעה פופולרית נוספת היא Apex, שיכולה לסייע בהבאת שפות מסוימות שאינן זמינות אצל ספקים מסוימים.

מאגרי מידע ללא שרת

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

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

שלושת הספקים הגדולים ללא שרתים מציעים כל אחד מאגרי מידע משלהם: לאמזון יש Aurora Serverless ו- DynamoDB, למיקרוסופט יש Azure Cosmos DB, ולגוגל יש Cloud Firestore. אלה לא מאגרי המידע היחידים הזמינים. נמניה נובקוביץ 'יש מידע על הצעות נוספות.

מחשוב ללא שרת וקוברנטס

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

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

ללא שרת במצב לא מקוון

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