✕ סגור 
צור קשר
תודה על ההתעניינות .

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

פשטות בניהול גרסאות וסביבות אפליקציות עם Azure App Service & Deployment Slots

עומר יפהר
|
בינונית
|
December 11, 2016

בפוסט הקודם בנושא 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. ה Deployment Slot  הראשי נקרא Default, וניתן ליצור עוד כארבעה סביבות, Slots.תהליך זה מאפשר לנו לבדוק בסביבת ה 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/

נפתח את VS ונגדיר file > new > web siteנגדיר asp.net empty web site

ניצור קובץ index.html ונגדיר אותו כדף This is PROD!

  • נעמוד על הקובץ index.html (בצד שמאל - solution explorer) 
  • נכניס את השינויים המסומנים בצהוב
  • לאחר מכן נעמוד על MyProd ב solution explorer > קליק ימני > publis web app

 

  • נבחר את ה subscription הרלוונטי ונבחר new
  • web app name זהו שם יחודי שנצטרך לבחור. זהו האתר
  • מומלץ לבחור recorse group חדש
  • app service plan - זהו הרישוי וכח העיבוד של אתר או אוסף האתרים. ניתן בשלב זה לבחור free (בשלב יותר מאוחר נהיה חייבים לשדרג ל standard ע"מ לקבל יכולות מתקדמות)
  • ללחוץ create לסיום
  • לוודא את נתיב ה URL וללחוץ publish להקמת האפליקציה ב Azure app service
  •  האתר נפתח ותקין
  • עכשיו נגדיר את הDomain הרצוי ולא הגנרי של Azure
  • הלכתי ל DNS שלי (אפשר גם לקבל את השירות ישירות מ Azure) והגדרתי CNAME. שמח וטוב לב הכנסתי את הנתיב myprod.yfhar.com וקיבלתי את המסך הזה... ומדוע? 

גם בשרתי אינטרנט iis, apache יש צורך להגדיר אילו דומיינים מקושרים לאותו השרת.להסבר מלא להגדרת custom domain יש לעבור ללינק הנ"ל https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-custom-domain-nameיש לגשת לApp Servises > MyProd

  • לבחור Custom Domains
  • במקרה שלי הקמתי את הService Plan עם רישוי Free ולכן מבקש ממני רישוי נוסף. על מנת לקבל את כל האפשרויות הרלוונטיות, נבחר standard sku
  •  נבחר Add hostname
  • יש לרשום את ה FQDN אותו ה cname שהגדרנו ב DNS
  • לבחור validate
  • לבחור Add hostname
  •  והנה אנו גולשים ל myprod.yfhar.com

הגדרה של Deployment Slots וביצוע Swop

  • ראשית עלנו להקים את תשתית סביבת ה Stage. בדף האפליקציה ניגש ל Deployment Slots > Add Slot. אם אין אופציה כזו, יש לוודא שאנו ברישוי Standard או Premium
  • נקרא לסביבה stage וניתן להעתיק את הקונפיגורציה של האפליקציה בייצור או לבנות חדשה

לצערי מחקתי את סביבת ההדגמה ולא הספקתי לצלם את המסך, אולם בסיום, יווצר Slot עם URL:http://myprod-stage.azurewebsite.net

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

  • נפתח בחזרה את Visual Studio 2015
  • מצד ימין, ב Solution Explorer, נבחר את קובץ ה index.html אשר פבלשנו מקודם ונשנה את ה title וה body מprod ל stage
  • נלחץ קליק ימני על MyProd ונבחר Publish Web App עבור פיבלושו לStage Slot שיצרנו מקודם
  • נבחר profile מצד שמאל
  • נבחר Microsoft Azure App Service

שימו לב. תחת ה Resource Group שלי יש מספר אתרים. ישנו גם ה MyProd, האפליקציה שיצרנו. מתחתיה יש את ה Deployment Slots והנה ה Stage Slot שיצרנו מקודם.

נבחר את ה Stage לסיום התהליך ופבלוש האפליקציה של ה Stage

 הנה, נוצרה לנו אפליקציית ה stage בנתיב http://myprod-stage.azurewebsites.net

 עכשיו כשיש לנו סביבת ייצור בגרסה 1.0 וסביבת stage בגרסת 1.1 הגיע הזמן להכניסה לייצור!

  • ניגש לאפליקציה MyProd
  • נבחר את Deployment Slots
  • נלחץ על סביבת הStage

 בסביבת ה Stage  נלחץ על כפתור ה Swapישנן מספר אופציות לביצוע Swap. ניתן לביצוע דרך סקריפט, PowerShell. ניתן לביצוע בpreview mode ואז נצטרך להגדיר complete swap לסיום

 בסיום התהליך נקבל את גרסת הStage ב URL של הייצור ואת גרסת הייצור הישנה בסביבת הStageלא עבר תקין? התגלה באג? ניתן להחליף את הגרסאות באותה הדרך - ע"י Swap

בפוסט הקודם בנושא 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. ה Deployment Slot  הראשי נקרא Default, וניתן ליצור עוד כארבעה סביבות, Slots.תהליך זה מאפשר לנו לבדוק בסביבת ה 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/

נפתח את VS ונגדיר file > new > web siteנגדיר asp.net empty web site

ניצור קובץ index.html ונגדיר אותו כדף This is PROD!

  • נעמוד על הקובץ index.html (בצד שמאל - solution explorer) 
  • נכניס את השינויים המסומנים בצהוב
  • לאחר מכן נעמוד על MyProd ב solution explorer > קליק ימני > publis web app

 

  • נבחר את ה subscription הרלוונטי ונבחר new
  • web app name זהו שם יחודי שנצטרך לבחור. זהו האתר
  • מומלץ לבחור recorse group חדש
  • app service plan - זהו הרישוי וכח העיבוד של אתר או אוסף האתרים. ניתן בשלב זה לבחור free (בשלב יותר מאוחר נהיה חייבים לשדרג ל standard ע"מ לקבל יכולות מתקדמות)
  • ללחוץ create לסיום
  • לוודא את נתיב ה URL וללחוץ publish להקמת האפליקציה ב Azure app service
  •  האתר נפתח ותקין
  • עכשיו נגדיר את הDomain הרצוי ולא הגנרי של Azure
  • הלכתי ל DNS שלי (אפשר גם לקבל את השירות ישירות מ Azure) והגדרתי CNAME. שמח וטוב לב הכנסתי את הנתיב myprod.yfhar.com וקיבלתי את המסך הזה... ומדוע? 

גם בשרתי אינטרנט iis, apache יש צורך להגדיר אילו דומיינים מקושרים לאותו השרת.להסבר מלא להגדרת custom domain יש לעבור ללינק הנ"ל https://docs.microsoft.com/en-us/azure/app-service-web/web-sites-custom-domain-nameיש לגשת לApp Servises > MyProd

  • לבחור Custom Domains
  • במקרה שלי הקמתי את הService Plan עם רישוי Free ולכן מבקש ממני רישוי נוסף. על מנת לקבל את כל האפשרויות הרלוונטיות, נבחר standard sku
  •  נבחר Add hostname
  • יש לרשום את ה FQDN אותו ה cname שהגדרנו ב DNS
  • לבחור validate
  • לבחור Add hostname
  •  והנה אנו גולשים ל myprod.yfhar.com

הגדרה של Deployment Slots וביצוע Swop

  • ראשית עלנו להקים את תשתית סביבת ה Stage. בדף האפליקציה ניגש ל Deployment Slots > Add Slot. אם אין אופציה כזו, יש לוודא שאנו ברישוי Standard או Premium
  • נקרא לסביבה stage וניתן להעתיק את הקונפיגורציה של האפליקציה בייצור או לבנות חדשה

לצערי מחקתי את סביבת ההדגמה ולא הספקתי לצלם את המסך, אולם בסיום, יווצר Slot עם URL:http://myprod-stage.azurewebsite.net

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

  • נפתח בחזרה את Visual Studio 2015
  • מצד ימין, ב Solution Explorer, נבחר את קובץ ה index.html אשר פבלשנו מקודם ונשנה את ה title וה body מprod ל stage
  • נלחץ קליק ימני על MyProd ונבחר Publish Web App עבור פיבלושו לStage Slot שיצרנו מקודם
  • נבחר profile מצד שמאל
  • נבחר Microsoft Azure App Service

שימו לב. תחת ה Resource Group שלי יש מספר אתרים. ישנו גם ה MyProd, האפליקציה שיצרנו. מתחתיה יש את ה Deployment Slots והנה ה Stage Slot שיצרנו מקודם.

נבחר את ה Stage לסיום התהליך ופבלוש האפליקציה של ה Stage

 הנה, נוצרה לנו אפליקציית ה stage בנתיב http://myprod-stage.azurewebsites.net

 עכשיו כשיש לנו סביבת ייצור בגרסה 1.0 וסביבת stage בגרסת 1.1 הגיע הזמן להכניסה לייצור!

  • ניגש לאפליקציה MyProd
  • נבחר את Deployment Slots
  • נלחץ על סביבת הStage

 בסביבת ה Stage  נלחץ על כפתור ה Swapישנן מספר אופציות לביצוע Swap. ניתן לביצוע דרך סקריפט, PowerShell. ניתן לביצוע בpreview mode ואז נצטרך להגדיר complete swap לסיום

 בסיום התהליך נקבל את גרסת הStage ב URL של הייצור ואת גרסת הייצור הישנה בסביבת הStageלא עבר תקין? התגלה באג? ניתן להחליף את הגרסאות באותה הדרך - ע"י Swap

עומר יפהר
http://yfhar1.blogspot.co.il/2016/12/azure-app-service-deployment-slots.html
מומחה בתשתיות IT

הירשם לרשימת הדיוור של IsraelClouds

Thank you! Your submission has been received!

Oops! Something went wrong while submitting the form

מילון מונחיםהשירותים שלנו תנאי שימושהרשמה לניוזלטרמדיניות פרטיות