האם מיקרוסרביסים היא ארכיטקטורת העתיד?

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

ההפך הגמור ממיקרוסרביסים היא ה’מונולית’ הידועה (כלומר monolith), שהיא “הכל במקום אחד”. גם ה- UI, גם הלוגיקה של השרת, הכל- מודבקים עם סלוטייפ ביחד תחת unit אחד הפונה לדטאבייס אחד.

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

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

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

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

היתרון האחרון(בערך) נובע מה-single responsibility, שמפרידה את המודולים אחד מהשני ומצמצמת קשירות בקוד.

אבל בפיתוח (לפחות), לכל פתרון יש מחיר. והמחיר של מיקרוסרביסים הוא לא כל כך זול.

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

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

יש לציין, המונח ‘מיקרוסרביסים’ הוא מונח כללי שאינו מתאר רק ארכיטקטורת צד שרת. יש hype גם בתחומים אחרים כמו למשל micro frontend.

עכשיו נותר רק לשאול, אצלכם עובדים עם מיקרוסרביסים או מונולית?

לטעון תגובות?