בפוסט הקודם בנושא Docker Containers, קיבלנו הצצה לסביבות פיתוח, DevOps והכנסת גרסאות מהירה לייצור. וגם הפוסט הזה נותן הצצה לתחום אנשי ה DevOps. הפעם החלטתי לתת הצצה הכוללת Step By Step ליצירת אפליקציה (דף אינטרנט) בסביבת ייצור ופרסומה לתוך Azure App Service כאתר אינטרנט בסביבת Azure. נראה כיצד ליצור מסביבה זו עותק משני עבור סביבת Stage ולבצע השינויים ופריסה מחודשת לייצור, חזרה ל rollback והכל באופן שקוף למשתמש ללא השבתה.בעבר, צוות ה Release, אנשי האופרציה, היו מקבלים גרסאות מצוות הפיתוח, מתאמים השבתה ומטמיעים את הקוד החדש בשרתי האפליקציה. בצוות שאני עבדתי בו לא היו קבצי exe להתקנה אוטומטית אלא הרבה מאוד סקריפטים. כל הטמעה שכזו גררה השבתה (בסביבה שנמדדת על השבתות). כל שדרוג אפליקציה והכנסת שינויים בין סביבת פיתוח, stage, ייצור הייתה אופרציה מסורבלת ואם היה צורך ב rollback אז כבר נכנסת לשעות הלילה. וזו הייתה השגרה שלנו.Azure AppService הינו שירות PaaS המאגד בתוכו גם אתרי אינטרנט ואפליקציות וגם תומך בגישת ה CI / CD.באפליקצה הרצה בסביבת Azure AppService ישנה אפשרות להעתיק את האפליקציה וליצור ממנה סביבה נוספת.כל סביבה כזו מכילה בתוכה הגדרות יחודיות (נניח קישור לבסיס נתונים אחר, URL שונה) - Deployment Slots.ולייתר דיוק, כל Deployment Slots הינו אינסטנס נפרד של אפליקציה (סביבת ייצור, פיתוח, Stage). מאחורי הקלעים, כל סביבה של האפליקציה, Slots, חולקים את אותם המשאבים של ה VM (ה Service Plan). לכן לא חושב שמומלץ לבצע בדיקות עומסים על אותם Slots. ה Deployment Slot הראשי נקרא Default, וניתן ליצור עוד כארבעה סביבות, Slots בStandard SKU.תהליך זה מאפשר לנו לבדוק בסביבת ה Stage את הגרסה החדשה, בלחיצת כפתור (או פקודה) להעביר את הגרסה החדשה לייצור ואת הגרסה הישנה שהייתה בייצור, להעביר לסביבת ה Stage. תהליך הנקרא Swap. הכל באופן שקוף למשתמש וללא השבתות. תשאלו מדוע להעביר את הסביבה הישנה לStage? מפני שתהליך זה מאפשר לי לבצע Roll Back מיידי במקרה שמשהו בקוד לא פועל כפי שצריך.מה שחשוב לי שתקחו מהפוסט הזה היא הגמישות והפשטות המירבית המופקת בעבודה עם כלים כגון Visual Studio ו Azure. את ההדגמה ביצעתי עם Visual Studio 2015 אבל ניתן להקים מערכים כאלו בPowerShell וגם להעלות דרך FTP וכו'.Azure App Service ו Azure בכלל זו פלטפורמה מדהימה שקצב הפיתוח והיכולות מגיעים בקצב מסחרר. שווה להתעדכן.
בואו נראה את התהליך from A to Z:
1. נבנה אפליקציה מינימאלית דרך Visual Studio 2015 ונפרסם אותה ב Azure.
2. נגדיר Custom Domain
3. נגדיר סביבת Stage ע"י Deployment slots ונפרסם אפליקציית Stage ע"י Visual Studio 2015
4. נבצע תהליך הנקרא Swap. הכנסה לייצור את גרסת ה Stage - version 1.1, וסביבת הייצור הישנה, version 1.0, נעביר לסביבת ה Stage
הקמת אפליקציה
אצלי מוגדר visual studio 2015 comunity עם Azure sdk https://blogs.msdn.microsoft.com/microsoftimagine/2015/07/20/welcome-to-visual-studio-2015-with-azure/
גם בשרתי אינטרנט iis, apache יש צורך להגדיר אילו דומיינים מקושרים לאותו השרת.
הגדרה של Deployment Slots וביצוע Swap
ראשית עלנו להקים את תשתית סביבת ה Stage. בדף האפליקציה ניגש ל Deployment Slots > Add Slot. אם אין אופציה כזו, יש לוודא שאנו ברישוי Standard או Premium
נקרא לסביבה stage וניתן להעתיק את הקונפיגורציה של האפליקציה בייצור או לבנות חדשה. בהמשך נראה איך מתמודדים עם שינוי הגדרות בין הסביבות.
לצערי מחקתי את סביבת ההדגמה ולא הספקתי לצלם את המסך, אולם בסיום, יווצר Slot עם URL:
http://myprod-stage.azurewebsite.net
כעת יש ליצור את האפליקציה עצמה עבור סביבת ה Stage. ניתן לעשות זאת במספר דרכים. אנחנו נעשה זאת דרך VS.
שימו לב. תחת ה Resource Group שלי יש מספר אתרים. ישנו גם ה MyProd, האפליקציה שיצרנו. מתחתיה יש את ה Deployment Slots והנה ה Stage Slot שיצרנו מקודם.
הנה, נוצרה לנו אפליקציית ה stage בנתיב http://myprod-stage.azurewebsites.net
עכשיו כשיש לנו סביבת ייצור בגרסה 1.0 וסביבת stage בגרסת 1.1 הגיע הזמן להכניסה לייצור!
בסביבת ה Stage נלחץ על כפתור ה Swap
ישנן מספר אופציות לביצוע Swap. ניתן לביצוע דרך סקריפט, PowerShell. ניתן לביצוע בpreview mode ואז נצטרך להגדיר complete swap לסיום
בסיום התהליך נקבל את גרסת הStage ב URL של הייצור ואת גרסת הייצור הישנה בסביבת הStage
לא עבר תקין? התגלה באג? ניתן להחליף את הגרסאות באותה הדרך - ע"י Swap
שינוי הגדרות בין הסביבות
להלן רשימת ההגדרות שעוברות ואלו שאינן בין הסביבות (Slots):
Settings that are swapped:
Settings that are not swapped:
עבור הגדרות App settings והגדרות Connection Strings נוכל להצמידן ל Slot הנוכחי. במקרה זה לא נצטרך לבצע שינוי לאחר או לפני תהליך ה Swap. זה יכול להיות מאוד שימושי במיוחד בקישור לבסיס נתונים בייצור ובסביבת ה Stage
בפוסט הקודם בנושא Docker Containers, קיבלנו הצצה לסביבות פיתוח, DevOps והכנסת גרסאות מהירה לייצור. וגם הפוסט הזה נותן הצצה לתחום אנשי ה DevOps. הפעם החלטתי לתת הצצה הכוללת Step By Step ליצירת אפליקציה (דף אינטרנט) בסביבת ייצור ופרסומה לתוך Azure App Service כאתר אינטרנט בסביבת Azure. נראה כיצד ליצור מסביבה זו עותק משני עבור סביבת Stage ולבצע השינויים ופריסה מחודשת לייצור, חזרה ל rollback והכל באופן שקוף למשתמש ללא השבתה.בעבר, צוות ה Release, אנשי האופרציה, היו מקבלים גרסאות מצוות הפיתוח, מתאמים השבתה ומטמיעים את הקוד החדש בשרתי האפליקציה. בצוות שאני עבדתי בו לא היו קבצי exe להתקנה אוטומטית אלא הרבה מאוד סקריפטים. כל הטמעה שכזו גררה השבתה (בסביבה שנמדדת על השבתות). כל שדרוג אפליקציה והכנסת שינויים בין סביבת פיתוח, stage, ייצור הייתה אופרציה מסורבלת ואם היה צורך ב rollback אז כבר נכנסת לשעות הלילה. וזו הייתה השגרה שלנו.Azure AppService הינו שירות PaaS המאגד בתוכו גם אתרי אינטרנט ואפליקציות וגם תומך בגישת ה CI / CD.באפליקצה הרצה בסביבת Azure AppService ישנה אפשרות להעתיק את האפליקציה וליצור ממנה סביבה נוספת.כל סביבה כזו מכילה בתוכה הגדרות יחודיות (נניח קישור לבסיס נתונים אחר, URL שונה) - Deployment Slots.ולייתר דיוק, כל Deployment Slots הינו אינסטנס נפרד של אפליקציה (סביבת ייצור, פיתוח, Stage). מאחורי הקלעים, כל סביבה של האפליקציה, Slots, חולקים את אותם המשאבים של ה VM (ה Service Plan). לכן לא חושב שמומלץ לבצע בדיקות עומסים על אותם Slots. ה Deployment Slot הראשי נקרא Default, וניתן ליצור עוד כארבעה סביבות, Slots בStandard SKU.תהליך זה מאפשר לנו לבדוק בסביבת ה Stage את הגרסה החדשה, בלחיצת כפתור (או פקודה) להעביר את הגרסה החדשה לייצור ואת הגרסה הישנה שהייתה בייצור, להעביר לסביבת ה Stage. תהליך הנקרא Swap. הכל באופן שקוף למשתמש וללא השבתות. תשאלו מדוע להעביר את הסביבה הישנה לStage? מפני שתהליך זה מאפשר לי לבצע Roll Back מיידי במקרה שמשהו בקוד לא פועל כפי שצריך.מה שחשוב לי שתקחו מהפוסט הזה היא הגמישות והפשטות המירבית המופקת בעבודה עם כלים כגון Visual Studio ו Azure. את ההדגמה ביצעתי עם Visual Studio 2015 אבל ניתן להקים מערכים כאלו בPowerShell וגם להעלות דרך FTP וכו'.Azure App Service ו Azure בכלל זו פלטפורמה מדהימה שקצב הפיתוח והיכולות מגיעים בקצב מסחרר. שווה להתעדכן.
בואו נראה את התהליך from A to Z:
1. נבנה אפליקציה מינימאלית דרך Visual Studio 2015 ונפרסם אותה ב Azure.
2. נגדיר Custom Domain
3. נגדיר סביבת Stage ע"י Deployment slots ונפרסם אפליקציית Stage ע"י Visual Studio 2015
4. נבצע תהליך הנקרא Swap. הכנסה לייצור את גרסת ה Stage - version 1.1, וסביבת הייצור הישנה, version 1.0, נעביר לסביבת ה Stage
הקמת אפליקציה
אצלי מוגדר visual studio 2015 comunity עם Azure sdk https://blogs.msdn.microsoft.com/microsoftimagine/2015/07/20/welcome-to-visual-studio-2015-with-azure/
גם בשרתי אינטרנט iis, apache יש צורך להגדיר אילו דומיינים מקושרים לאותו השרת.
הגדרה של Deployment Slots וביצוע Swap
ראשית עלנו להקים את תשתית סביבת ה Stage. בדף האפליקציה ניגש ל Deployment Slots > Add Slot. אם אין אופציה כזו, יש לוודא שאנו ברישוי Standard או Premium
נקרא לסביבה stage וניתן להעתיק את הקונפיגורציה של האפליקציה בייצור או לבנות חדשה. בהמשך נראה איך מתמודדים עם שינוי הגדרות בין הסביבות.
לצערי מחקתי את סביבת ההדגמה ולא הספקתי לצלם את המסך, אולם בסיום, יווצר Slot עם URL:
http://myprod-stage.azurewebsite.net
כעת יש ליצור את האפליקציה עצמה עבור סביבת ה Stage. ניתן לעשות זאת במספר דרכים. אנחנו נעשה זאת דרך VS.
שימו לב. תחת ה Resource Group שלי יש מספר אתרים. ישנו גם ה MyProd, האפליקציה שיצרנו. מתחתיה יש את ה Deployment Slots והנה ה Stage Slot שיצרנו מקודם.
הנה, נוצרה לנו אפליקציית ה stage בנתיב http://myprod-stage.azurewebsites.net
עכשיו כשיש לנו סביבת ייצור בגרסה 1.0 וסביבת stage בגרסת 1.1 הגיע הזמן להכניסה לייצור!
בסביבת ה Stage נלחץ על כפתור ה Swap
ישנן מספר אופציות לביצוע Swap. ניתן לביצוע דרך סקריפט, PowerShell. ניתן לביצוע בpreview mode ואז נצטרך להגדיר complete swap לסיום
בסיום התהליך נקבל את גרסת הStage ב URL של הייצור ואת גרסת הייצור הישנה בסביבת הStage
לא עבר תקין? התגלה באג? ניתן להחליף את הגרסאות באותה הדרך - ע"י Swap
שינוי הגדרות בין הסביבות
להלן רשימת ההגדרות שעוברות ואלו שאינן בין הסביבות (Slots):
Settings that are swapped:
Settings that are not swapped:
עבור הגדרות App settings והגדרות Connection Strings נוכל להצמידן ל Slot הנוכחי. במקרה זה לא נצטרך לבצע שינוי לאחר או לפני תהליך ה Swap. זה יכול להיות מאוד שימושי במיוחד בקישור לבסיס נתונים בייצור ובסביבת ה Stage
הודעתך לא התקבלה - נסה שוב מאוחר יותר
Oops! Something went wrong while submitting the form