מה זה FULL STACK ומה הקשר אלינו?

האמת שהכוונה היא ל – “stack” – מייד נסביר איך המילה “full” מצטרפת לתמונה.  אם נרצה להיות מאד מדויקים היינו צריכים להשתמש במילה “layers” – שכבות.  שכן מדובר בארכיטקטורה של אפליקציות mobile ו – web שלהן יש שני צדדים: צד השרת (back end או server) וצד הלקוח (front end או client).  התוכנה בשני הצדדים מחולקת בדרך כלל ל-3 שכבות תפעוליות:

  • השכבה העליונה היא שכבת הממשק למשתמש (User Interface – UI).  זוהי השכבה הנראית (visible) למשתמשים דרך הדפדפן או האפליקציה בטלפון החכם. השכבה הזאת נמצאת בצד הלקוח והיא מכילה את האפשרות לקבל בקשות מהמשתמש (קלט) ולהציג את התוצאות.  למשל, המשתמש יכול “לבקש” לקרוא את כל הכותרות במדור הקריירה בעיתון ואח”כ לבחור את אחת הכותרות ולקרוא את הכתבה עצמה.  נהוג לכנות שכבה זו – Front End או Presentation Layer.
  • השכבה האמצעית היא שכבת השירות (server).  השכבה הזאת “מתווכת” בין הממשק למשתמש בשכבה העליונה לבין הנתונים שנמצאים בשכבה התחתונה.  התיווך בין המשתמש לנתונים הוא תיווך חכם. השכבה הזו נמצאת גם היא בד”כ בצד השרת אבל ישנן אפליקציות בהן יש חלקים משכבת השירות גם בצד הלקוח.  ככל שיש יותר “חוכמה” בצד הלקוח יש פחות פניות לשרת מה שיכול להאיץ את פעילות המערכת כולה.  שכבת השירות יכולה לקבל החלטה (על סמך דרישת המשתמש) להציג תנועות בחשבון הבנק מסוג מסוים בלבד (למשל, הפקדות) או מסכום מסוים (למשל מעל 1,000 ₪).  שכבה זו נקראת Application Layer.
  • שכבת הנתונים (מסד הנתונים – database) היא השכבה הנמוכה.  גם באפליקציות web וגם באפליקציות mobile מוצג למשתמש מידע שנשלף ממסד הנתונים וכמובן שיש למשתמש את היכולת באפליקציות מסוימות לכתוב נתונים לתוך מסד הנתונים.  ישנם מגוון של מסדי נתונים והם מתחלקים למסדי נתונים רלציונים (Relational Database Management Systems – RDBMS או SQL) וכאלה שאינם רלציונים (NoSQL).  ההבדל בין שני הסוגים נעוץ שמסדי הנתונים הרלציונים הם טבלאיים ומגדירים קשרים (יחסים) בין הישויות השונות מה שמקל על שליפת הנתונים באמצעות שאילתות.  מסדי נתונים שאינם רלציונים מכילים את מבנה נתונים יותר גמיש ולכן מתאימים גם לשינויים באפליקציה ללא צורך מיוחד בשינוי מבנה הנתונים.  מסדי הנתונים הלא רלציונים מתאימים לאפליקציות AI ו – big data כשהקשרים בין הנתונים אינם ברורים מראש ומתבררים בתהליכי machine learning.  המידע יכול להכיל למשל את כותרות היום או כתבה מסוימת באתר חדשות, חולצות בצבע כחול באתר e-commerce, עדכון עגלת הקניות, או אפילו יתרת החשבון באתר הבנק.  שכבת הנתונים נמצאת בצד השרת.

להמחשה, ניקח לדוגמא את היום הפופולרי Black Friday:

  • המשתמש מחפש חולצה דרך שכבת ה – UI באתר מסחר אלקטרוני.
  • שכבת הלוגיקה “יודעת” לשאול את השאלות הבאות כדי לצמצם את החיפוש לחולצה הרלוונטית:

האם המשתמש הוא גבר או אישה?

מהי המידה המבוקשת?

שרוולים ארוכים או קצרים?

עם כפתורים או בלי?

באיזה צבע?

ועוד…

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

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

אז למה “stack” ולא “layers”?  פשוט מאד, “באמריקאית” שכבות שמונחות אחת מעל השנייה הן “stacked one over the other”.

ולמה “full stack”?  כאן השימוש במילה “full” נעשה בהקשר של מפתחי תוכנה. בשנים האחרונות גבר הביקוש למפתחים שיכולים לפתח את הקוד בכל השכבות ולכן מתכנתים אלה נקראים “full stack developers”.  

אחד היתרונות בשימוש במתכנתי full stack נעוץ בעובדה שמתכנתי full stack יכולים להיות אחראים על כל הקוד שנכתב עבור האפליקציה – יש יתרון ברור באחראי יחיד בהשוואה לחלוקת האחריות בין אנשים שונים עם תחומי מומחיות אחרים.

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

Leave a Reply

Your email address will not be published. Required fields are marked *