castomFLOW
פתח את castomFLOW

הרצות שאפשר לסמוך עליהן

אף אחד לא שם לב לאוטומציה עד שהיא שולחת משהו פעמיים

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

הריצו סימולציה לפני שאתם מפרסמים

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

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

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

סימולציה · הזמנה 88,214שום דבר לא נשלח
  • 1אימות כתובתהתאמה מלאה. היינו כותבים 6 שדות.
  • ?תנאיהזמנה מעל 1,000 zł? לא — 289,00 zł. נבחר המסלול הקצר.
  • 3חשבוניתהיה שולח POST למערכת החשבוניות. המטען המלא מוצג.
  • !נתפס כאןשיעור המע"מ מופה מהשדה השגוי. התגלה בסימולציה ולא בתיבת הדואר של רואה החשבון.

נשלח: כלוםחויב: כלום

כל ריצה הולכת לפי הגרסה שאליה נכנסה

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

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

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

עריכה בזמן פעילותv4 → v5
  • 1לפני2,918 ריצות בעיצומן, כולן על v4. חלקן בהמתנה של יומיים.
  • 2פרסום v5שני שלבים סודרו מחדש, הודעה אחת נכתבה מחדש.
  • 3אחריאותן 2,918 מסיימות את v4. כל מה שמתחיל מ-11:40 רץ על v5.
  • §אף אחדלא קיבל חצי מתהליך עבודה אחד וחצי מאחר.

הגרסה נרשמת על כל ריצהגרסאות ישנות נשמרות

ניסיונות חוזרים שלא יכולים לשלוח פעמיים

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

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

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

עובד נהרג באמצע שליחההתאושש
  • 1שלב 5 מתחילשליחת הודעת המשלוח.
  • ✕העובד מתפריסה. שום דבר לא נקבע.
  • 2נאסףעובד אחר מוצא את הריצה עדיין בשלב 5.
  • ✓נשלח פעם אחתהלקוח קיבל אימייל אחד, לא שניים.

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

יומן שנכתב כדי שאדם יקרא אותו

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

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

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

במשך הלילה, מקובץ41 כשלים
  • 1סיבה אחתה-API של הספק החזיר 503 בין 02:41 ל-02:50.
  • 2מה קרהכל 41 נוסו שוב; 39 הצליחו בניסיון השני.
  • 3נותרושתיים נעצרו וממתינות לאדם. שתיהן מופיעות ברשימה עם השורה שנכשלה.
  • §לא ארבעים ואחתחקירות. אחת, והחלטה לגבי שתי רשומות.

פרטי גישה הוסרוגרסה נרשמה

מה אנחנו לא טוענים

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

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

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

הריצה שאף פעם לא חושבים עליה היא זו שהצליחה.