התלמוד של המפתחהתלמוד של המפתח

מסכת פריסה

הכנה לפריסה

5 הלכות

א

אסור לפרוס ביום שישי אחר הצהריים. המפרס לפני כניסת השבת — לוקה, ואם יש לו on-call — לוקה פי שניים.

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

מחלוקת
רבי SRE הזהיר אומר:

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

רבי CI/CD הנועז חולק ואומר:

אם ה-pipeline שלך מפחיד אותך ביום שישי — ה-pipeline שבור, לא הלוח שנה. deploy טוב הוא בטוח בכל יום. deployment שמסוכן בשישי — מסוכן גם ביום שני.

רבי SRE הזהיר:

ואם משהו ישתבש בשבת — מי יתקן?

רבי CI/CD הנועז:

rollback אוטומטי. feature flags. canary release. בנה pipeline שלא צריך תיקון.

רבי SRE הזהיר:

ועד שתבנה pipeline כזה — אני לא פורס בשישי.

שניהם אמת. יש לרפא את ה-pipeline — ועד אז, להיזהר בשישי.

ב

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

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

ג

לפני כל שינוי בבסיס הנתונים — חובה backup. לפני migration — חובה לבדוק שניתן לבצע rollback.

שכן migration שנכשל באמצע — עלול להשאיר את ה-DB במצב לא עקבי. ואמרו חכמים: "עבד על staging קודם" — זוהי הדרך. "עבד ישירות על production" — זוהי האי-דרך.

ד

פיצ׳ר גדול חייב לצאת מאחורי feature flag. הפורס פיצ׳ר גדול ישירות לכולם — כאילו ניסה תרופה חדשה על כל המטופלים בו-זמנית.

feature flag מאפשר לפרוס קוד מבלי לחשוף אותו, לבדוק אצל אחוז קטן, ולכבות בלחיצת כפתור אם משהו משתבש. ודרשו חכמים: rollback מיידי עדיף על hotfix בלחץ.

ה

חובה לתעד מה השתנה בכל פריסה. פריסה ללא changelog — מסוכנת, שכן אף אחד לא יודע מה הוכנס.

ויהי הבאג, וישאלו: "מתי השתנה הדבר הזה?" — ולא ידע איש. הוי אומר: changelog הוא זיכרון הצוות. צוות ללא זיכרון — חוזר על טעויותיו.