איך לפבלש ASP.NET בצורה בטוחה
-
הרעיון הוא שלא להפריע לבקשות שבאמצע עיבוד.
תמיד כשאני מפבלש אני נתקל בשגיאה משונה, ורק בפעם השניה הפיבלוש מצליח (כנראה אחרי שהוא עוצר את הסרביס) החשש: חיוב כרטיס אשראי או טרנזקציית SQL באמצע עבודה.
טרם מצאתי באינטרנט תשובה ברורה וכנראה שלא חיפשתי נכון מספיק. -
אם אין רעיונות אתחיל להציע דברים גסים, כי נראה שאין הרבה ברירה.
ליצור קובץ טקסט שמכיל את ההודעה "היי אנחנו לקראת פיבלוש ולכן כל הבקשות לא נענות כעת נא להמתין טיפה", הפייפליין בודק את קובץ הקטסט ואם הוא קיים ומכיל את ההודעה הוא פשוט שולח אותה ללקוח. לאחר כמה דקות שהקובץ הזה קיים לא סביר שיש ריקווסט שנמצא באמצע עבודה ואז מפבלשים.
גועל נפש אבל אני לא רואה משהו יותר טוב. -
@ארכיטקט
https://tchumim.com/post/5824
אני משתמש היום בפרוייקטים שעל הIIS ב app_offline.htm.
אם זה JSON אתה יכול לשים גם JSON בתוך הapp_offline.htm (זה מה שאני עושה וזה עובד)בקשות שעדיין רצות ימשיכו לרוץ, ורק בקשות חדשות יקבלו את התשובה מהדף הזה (בעצם הדף הזה עושה 2 דברים, לא נותן להגיב שום תגובה מהקוד שלך, ובו זמנית מחזיר תגובה אחרת שתרצה)
ע"ע כאן
https://stackoverflow.com/questions/1153449/asp-net-2-0-how-to-use-app-offline-htmכדי לדעת האם יש בקשות רצות, אתה יכול לראות בIIS תחת הWorker Processes
כמובן אתה יכול ליצור פול רק לאתר הספציפי, ואז תראה את הבקשות שלו לבד.
שים לב שאתה לא יכול לראות בWorker Processes אם יש בקשות ששמת אותם בטרייד נפרד ושעדיין באמצע ריצה (אולי תעשה ליסט סטטי שתוכל לגשת אליו מבחוץ ותכניס / תוציא לשם את מה שרץ כדי לדעת שאין שם כלום...) -
חיפשתי פתרונות ספציפית לIIS, זה מה שמצאתי לדוגמא.
https://www.offerzen.com/blog/zero-downtime-deployments-in-an-iis-world
https://octopus.com/docs/deployments/patterns/blue-green-deployments/blue-green-deployments-in-iis