• בלוג
  • שלוש סיבות שגורמות לנו לבנות ארכיטקטורה לא נכונה

שלוש סיבות שגורמות לנו לבנות ארכיטקטורה לא נכונה

14/12/2024

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

1. מפתחים מחליפים סטאק בין פרויקטים

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

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

2. מימוש פונקציונאליות ישנה יכול להיות מאתגר

חבר אחר התחיל לבנות מערכת Front End בריאקט שתחליף מערכת jQuery ישנה. אחרי שדברים התחילו לעבוד הוא גילה שיש בעיה של SEO כי כל העמוד נבנה מתוך JavaScript ורצה להוסיף Server Side Rendering. התוספת של רינדור צד שרת הוסיפה בעיות ביצועים שהוא לא ראה בתחילת הפיתוח וב POC-ים הראשונים. יותר מזה, בגלל שהיא התגלתה בשלב מאוחר כבר היה קשה לשנות חלקים יותר בסיסיים במערכת והביצועים נפגעו כי אי אפשר היה לבנות את התוספת בצורה הטובה ביותר.

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

3. בונים לבד רק בשביל לפתור בעיה

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

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