סינכרוניות ואסינכרוניות: שתי דרכים שונות לגרום למערכת לעבוד

תוכן עניינים

סינכרוניות ואסינכרוניות: שתי דרכים שונות לגרום למערכת לעבוד

למה “הכול אסינכרוני” הוא לא אסטרטגיה

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

אבל “הכול אסינכרוני” הוא לא תכנון. זו בריחה מהחלטות.

אסינכרוניות פותרת בעיה אחת ברורה: לא לחכות.

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

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

במערכת אסינכרונית לגמרי:

  • בקשות נכנסות בלי לעצור
  • הודעות נערמות בתורים
  • תהליכים רצים במקביל בלי לדעת אחד על השני

אין נקודה ברורה שבה אפשר לומר: “עכשיו המערכת עמוסה מדי”.

הכול מתקדם - עד שבבת אחת הכול איטי, תקוע, או מתפרק.

הקושי בניבוי עומסים

הקושי הגדול הוא בניבוי עומסים.

כשאין סנכרון:

  • קשה לדעת כמה עבודה באמת ממתינה
  • קשה להבין מי מחכה למי
  • וקשה לראות איפה נוצר צוואר בקבוק

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

ואז העומס מתגלה מאוחר מדי.

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

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

סנכרוניות יוצרת גבולות:

  • מישהו מחכה - וזה סימן
  • משהו נחסם - וזה לחץ
  • המערכת “מרגישה” את העומס בזמן אמת

החסימה היא לא תקלה. היא משוב.

שילוב נכון בין השניים

מערכת שמערבבת נכון בין אסינכרוני לסינכרוני:

  • משתמשת באסינכרוניות כדי לא לחסום שלא לצורך
  • ומשתמשת בסנכרוניות כדי לשמור על שליטה

לא הכול צריך לרוץ במקביל. לא הכול צריך להידחות לתור.

המשל

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

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

סיכום

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

מערכת טובה לא שואלת “איך נהפוך הכול לאסינכרוני?” אלא “איפה אסינכרוניות עוזרת - ואיפה צריך לעצור, לחכות, ולהרגיש את העומס?”

כי יציבות לא מגיעה מלהריץ הכול במקביל - אלא מלדעת מתי לא.

תגובות