Stateless זה לא שאין State - זה איפה הוא נמצא

📚 כשהתקשורת נשברת - חלק 11 תקשורת #State#Stateless
תוכן עניינים

Stateless זה לא שאין State - זה איפה הוא נמצא

לפני שאפשר לדבר על Stateless, צריך לעצור רגע ולהגדיר את המושג הבסיסי שממנו הכול מתחיל: State.

מה זה State במערכת

State הוא כל מידע שהמערכת שומרת ושמשפיע על האופן שבו היא מתנהגת בהמשך.

במילים פשוטות: מה שהמערכת זוכרת.

זה יכול להיות:

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

אם שתי בקשות זהות מקבלות טיפול שונה בגלל משהו שקרה בעבר - יש State.

אז מה זה Stateless

מערכת Stateless היא מערכת שבה כל בקשה מטופלת בפני עצמה.

השרת:

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

כל המידע הדרוש לעיבוד:

  • מגיע עם הבקשה עצמה
  • או נשלף ממקום חיצוני (למשל, מסד נתונים)

חשוב לדייק: Stateless לא אומר שאין State בכלל. הוא אומר שה-State לא נמצא בתוך השירות עצמו.

למה המושג מבלבל

המילה “Stateless” נשמעת כאילו:

  • אין זיכרון
  • אין מורכבות
  • הכול פשוט

אבל זו אשליה.

State תמיד קיים. השאלה היחידה היא: איפה הוא נמצא, ומי משלם את המחיר עליו.

המיתוס: Stateless = אין State

כאן מגיעה הטעות הנפוצה.

אין מערכת בלי State.

יש רק מערכות שבוחרות:

  • להחזיק State בתוך השירות
  • או לדחוף אותו החוצה

Stateless אינו ביטול של State - הוא העברה שלו.

State at the edge

כאשר ה-State נמצא בקצה:

  • הלקוח מחזיק הקשר
  • כל בקשה כוללת את כל המידע הדרוש
  • והשרת נשאר “טיפש” יחסית

היתרון:

  • סקייל פשוט
  • שרתים ניתנים להחלפה
  • התאוששות מהירה

המחיר:

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

המורכבות לא נעלמה - היא פשוט עברה לקצה.

State in the middle

כאשר ה-State נמצא באמצע:

  • השירות זוכר
  • מחזיק הקשר
  • ומקבל החלטות על סמך עבר

היתרון:

  • לוגיקה עשירה
  • אחריות מרוכזת
  • ופחות דרישות מהלקוח

המחיר:

  • סקייל מסובך
  • התאוששות איטית
  • ותלות בין בקשות

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

State explosion

ככל שמערכת גדלה:

  • יותר משתמשים
  • יותר תהליכים
  • יותר חריגים

ה-State מתרבה.

State explosion לא קורה בבת אחת. הוא נבנה לאט, דרך משפטים כמו:

  • “נשמור רק עוד פרט אחד”
  • “זה יעזור לפעם הבאה”
  • “חבל לחשב מחדש”

ובשלב מסוים, אף אחד כבר לא יודע:

  • איזה State קריטי
  • איזה זמני
  • ואיזה מסוכן

Stateless כבחירה מודעת

מערכת יציבה אינה מצהירה: “אנחנו Stateless”.

היא שואלת:

  • איזה State חייב להיות
  • איפה הכי נכון להחזיק אותו
  • ואיפה הוא יגרום הכי פחות נזק

Stateless הוא לא יעד אידיאולוגי. הוא כלי ארכיטקטוני.

המשל

אפשר לחשוב על דלפק שירות.

דלפק שלא זוכר כלום - מבקש מכל לקוח להסביר הכול מחדש.

דלפק שזוכר יותר מדי - נתקע בעבר, ומתקשה לשרת מהר.

השאלה אינה: לזכור או לא לזכור -

אלא: מה, איפה, ולכמה זמן.

השורה התחתונה

State הוא בלתי נמנע. Stateless אינו ביטול שלו.

זו בחירה:

  • איפה ה-State חי
  • מי נושא במורכבות
  • ואיך המערכת מתנהגת תחת עומס וכשל

מערכות שנשברות לא מחזיקות “יותר מדי State” - אלא מחזיקות אותו במקום הלא נכון.

מבט קדימה

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

אפשר לשאול שאלה רחבה יותר:

מה כל זה אומר על התרבות ההנדסית שלנו?

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

תגובות