דלג לתוכן
יומן שדה

מה באמת נשבר, ואיך מצאנו את זה.

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

רשת

השער שהיה למעלה, ולא היה נגיש

2026-07

התסמין
מסרונים יוצאים הפסיקו להגיע. ה־API של הספק ענה ל־ping, עמוד הסטטוס שלו היה ירוק, וכל בקשה יוצאת אחרת מאותה מכונה עבדה כרגיל. לחיצת היד של TLS פשוט נתקעה.
הכיוון השגוי
הכל הצביע על כך שהספק חוסם את הכתובת שלנו. כבר ניסחנו פנייה לתמיכה, ואז בדקנו HTTP רגיל לאותו שרת — הוא ענה מיד. כתובת חסומה לא עונה על פורט 80 ונתקעת על 443.
הסיבה
חור PMTU. החיבור נפתח על מנות קטנות, ואז המנה הגדולה הראשונה של לחיצת היד נזרקה במעלה הזרם, ותשובת ה־ICMP שאומרת "צריך לפצל" מעולם לא חזרה. שום דבר לא פג בזמן; זה פשוט נעצר.
התיקון
הצמדת MSS ל־1360 על המארח, כשירות כדי שישרוד אתחול. אומת בכך שתחמנו את נקודת הכשל בין 1400 ל־1420 בייט, לפני ואחרי.

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

DNS

אתרים שעבדו במחשב ומתו בטלפון

2026-07

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

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

גיבויים

מערכת גיבוי שלא ידעה לשחזר

2026-07

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

גיבוי שאף אחד לא שחזר אינו גיבוי. תזמנו את השחזור, לא רק את הגיבוי, ודווחו את התוצאה.

אבטחה

השומר שהבדיקות לא ראו מעבר לו

2026-07

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

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

הגשה

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

2026-07

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

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

פנויים לפרויקטים חדשים

ספרו לנו מה אתם בונים.

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