המדריך המלא ל-שומר-התוצר — 'רץ' זה לא 'ייצר'
שכבת-השמירה שבודקת שכל עבודה מתוזמנת באמת ייצרה תוצר — לא רק 'רצה בהצלחה'
שומר-התוצר זה דפוס-בקרה (watchdog — 'כלב-שמירה' תוכנתי שמשגיח על תהליכים אחרים) שנולד מתובנה לא נעימה: הכשל הכי מסוכן במערכת אוטומטית הוא לא זה שצועק — אלא זה ששותק. עבודה מתוזמנת יכולה לרוץ כל יום, להסתיים בלי שום שגיאה, ולהיראות 'ירוקה' בכל לוג — ובפועל לא לייצר שום דבר: הגיבוי לא באמת מגבה, הדוח לא באמת נשלח, הקובץ לא באמת נכתב. שומר-התוצר סוגר בדיוק את החור הזה: הוא עובר בקצב קבוע על כל העבודות המתוזמנות ברשת ושואל שאלה אחת פשוטה — לא 'האם התהליך רץ?' אלא 'האם נוצר תוצר אמיתי?' — קובץ שהתעדכן, רשומה שנכתבה, הודעה שנשלחה. אם עבודה 'רצה בהצלחה' אבל התוצר חסר, נשלחת התראה ישירה לטלפון. אצלי (אלעד) השומר משגיח על כל העבודות המתוזמנות של רשת-הסוכנים — והוא כבר הוכיח את עצמו בכך שתפס עבודות שנראו בריאות לגמרי בלי לייצר כלום. אצלכם — זה אותו עיקרון לכל אוטומציה שיש לכם: גיבויים, דוחות, סנכרונים. אם יש לכם תהליך מתוזמן אחד שחשוב לכם, מגיע לו שומר-תוצר.
מה המדריך מכסה
מה זה שומר-תוצר?
ה-watchdog שבודק את המדפים, לא את התנור
שומר-התוצר (output guardian) הוא תהליך-בקרה קטן שרץ בקצב קבוע ועובר על כל העבודות המתוזמנות במערכת. לכל עבודה מוגדר מראש מה התוצר שהיא אמורה לייצר ובאיזה חלון-זמן — קובץ-גיבוי מעודכן, דוח יומי שנשלח, רשומה שנכתבה למסד. השומר בודק את התוצר עצמו, לא את התהליך. אם עבודה רצה 'בהצלחה' אבל התוצר חסר או מיושן — זה בדיוק הכשל השקט שהוא נבנה לתפוס, והתראה יוצאת. הוא משלים את אימות-על-תוצאה של שכבת-האוטונומיה: האימות בודק משימה בודדת ברגע שהיא רצה, והשומר בודק את התמונה הכוללת לאורך זמן.
שלוש רמות-אמת — רץ, הצליח, ייצר
כל רמה תופסת כשלים שהקודמת מפספסת
כדי להבין למה שומר-תוצר הכרחי, צריך להבחין בין שלוש רמות-אמת שונות. רמה 1 — 'רץ': התהליך הופעל והסתיים בלי לקרוס (exit code 0). רמה 2 — 'הצליח': שלב-אימות בדק שהמשימה השיגה את היעד המיידי שלה (זה ה-verify-on-result של שכבת-האוטונומיה). רמה 3 — 'ייצר': קיים תוצר מוחשי, עדכני ולא-ריק בעולם. רוב המערכות עוצרות ברמה 1. מערכות טובות מגיעות לרמה 2. אבל רק רמה 3 נותנת ביטחון אמיתי — כי היא בודקת את מה שבסוף באמת חשוב: התוצר.
סוגי-בדיקה — איך בודקים 'יש תוצר'
קובץ, רשומה, לוג, הודעה — לכל עבודה סוג-הבדיקה שלה
'תוצר' נראה אחרת בכל עבודה, ולכן שומר-תוצר טוב תומך בכמה סוגי-בדיקה פשוטים. המשותף לכולם: הם בודקים משהו מוחשי ואובייקטיבי, עם חלון-זמן (freshness — עד כמה התוצר 'טרי'). ההגדרה לכל עבודה היא שורה-שתיים בקובץ-תצורה: סוג-הבדיקה, איפה לבדוק, ומה חלון-הזמן המותר. זה כל מה שצריך כדי להפוך עבודה 'עיוורת' לעבודה מושגחת.
התראות — ישירות לטלפון, בלי להציף
התראה אמיתית כשיש פער, שקט מוחלט כשאין
שומר-תוצר שמציף אתכם בהתראות ייכנס להתעלמות תוך שבוע — ואז הוא חסר-ערך. לכן צד-ההתראות חשוב לא פחות מצד-הבדיקות: התראה יוצאת רק כשיש פער אמיתי ('רץ אבל לא ייצר'), היא מגיעה ישירות לטלפון של הבעלים דרך קאמי, והיא מכבדת שבתות וחגים ותקופת-צינון (cooldown) — אותה תקלה לא תציק לכם שוב ושוב כל שעה. הפערים גם נרשמים לתיבת-קשב מרכזית, כך שהתדריך של לולאת-המנכ״ל יכול לרכז אותם בבוקר.
דוגמאות מהחיים — איפה זה תופס
גיבוי, דוח יומי, סריקה מתוזמנת, צינור-תוכן
הדרך הכי טובה להרגיש את הערך של שומר-תוצר היא דרך המקרים הקלאסיים שבהם הוא תופס כשל שאף שכבה אחרת לא הייתה תופסת. המשותף לכולם: תהליך שרץ 'בהצלחה' לאורך זמן, בלי אף שגיאה — ובלי לייצר את מה שהוא קיים בשבילו. אלה לא תרחישים תיאורטיים; אלה הדפוסים הכי נפוצים של כשל שקט בכל מערכת אוטומטית.
אינטגרציה — איך מאמצים שומר-תוצר אצלכם
מתחילים מעבודה אחת קריטית, מרחיבים בהדרגה
כמו בכל המדריכים — לא עוטפים את כל המערכת ביום הראשון. הסדר: בוחרים את העבודה שהכי כואב לגלות באיחור שנכשלה (כמעט תמיד: הגיבוי), מגדירים לה בדיקת-תוצר אחת, ומחברים התראה לטלפון. חיים עם זה שבוע, מכיילים את חלון-הזמן, ורק אז מוסיפים את שאר העבודות. שומר-התוצר משתלב ברשת הרחבה: הוא קורא מ-יומן-התוצאות, מדווח דרך קאמי, מזין את התדריך של לולאת-המנכ״ל, ומספק ל-אורורה חומר-גלם לזיהוי דפוסי-כשל.

