ช่องการปรับใช้และการสลับ
สร้างช่องเตรียมระบบสำหรับการปรับใช้แบบบลู-กรีน อุ่นเครื่องรุ่นใหม่ในช่องเตรียมระบบ และสลับไปยังระบบจริงโดยไม่มีเวลาหยุดให้บริการ
ช่องการปรับใช้และการสลับ เป็นบทเรียน Cloud & IT Cert Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cloud & IT Cert Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน
ช่องการปรับใช้คืออะไร
ช่องการปรับใช้ คือสภาพแวดล้อมแบบแยกจากกันที่ทำงานอยู่จริงสำหรับเว็บแอป App Service โดยแต่ละช่องมีชื่อโฮสต์ของตนเอง (เช่น myapp-staging.azurewebsites.net) ช่องต่าง ๆ ใช้แผน App Service และทรัพยากรร่วมกับช่อง Production แต่ทำงานแยกจากกัน ช่องเหล่านี้รองรับ การปรับใช้แบบ blue-green — คุณตรวจสอบรุ่นใหม่ในช่อง Staging แล้วสลับรุ่นนั้นเข้าสู่ Production ได้โดยไม่มีช่วงหยุดทำงาน ช่องการปรับใช้ใช้งานได้ตั้งแต่ ระดับ Standard ขึ้นไป
การสร้างช่องการปรับใช้
เพิ่มช่องการปรับใช้ใหม่ให้กับเว็บแอปของคุณโดยใช้พอร์ทัล Azure หรือ CLI แต่ละช่องจะมี URL การตั้งค่าแอปพลิเคชัน และสตริงการเชื่อมต่อเป็นของตนเอง คุณสามารถสร้างได้สูงสุด 5 ช่อง ในระดับ Standard และสูงสุด 20 ช่อง ในระดับ Premium ชื่อช่องที่ใช้กันทั่วไป ได้แก่ staging, canary, hotfix และ integration ซึ่งสื่อถึงขั้นตอนต่าง ๆ ของไปป์ไลน์การเผยแพร่
# Create a staging deployment slot
az webapp deployment slot create \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging
# Deploy code to the staging slot
az webapp deploy \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--src-path app.zip
# The staging slot is live at:
# https://MyUniqueWebApp-staging.azurewebsites.netการเตรียมช่อง Staging ให้พร้อม
ก่อนสลับช่อง สิ่งสำคัญคือต้อง เตรียมช่อง Staging ให้พร้อม เพื่อให้รุ่นใหม่เริ่มต้นทำงานอย่างสมบูรณ์ อินสแตนซ์ App Service ที่ยังไม่พร้อมจะให้บริการคำขอแรก ๆ ได้ช้า เนื่องจากรันไทม์กำลังเริ่มต้นทำงาน ซึ่งเป็นสิ่งที่ยอมรับไม่ได้ใน Production เปิดใช้ Auto Swap หรือส่งคำขอ HTTP เพื่อเตรียมความพร้อมไปยังช่อง Staging ด้วยตนเอง นอกจากนี้ App Service ยังรองรับการกำหนดค่า applicationInitialization เพื่อกำหนดเส้นทางเตรียมความพร้อมที่ต้องส่งคืนค่า 200 ก่อนที่จะถือว่าช่องพร้อมใช้งาน
# web.config snippet for warm-up (IIS/Windows)
# <system.webServer>
# <applicationInitialization>
# <add initializationPage='/health' hostName='MyUniqueWebApp-staging.azurewebsites.net'/>
# </applicationInitialization>
# </system.webServer>
# Or use a startup probe via the App Service health check
az webapp config set \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--generic-configurations '{"healthCheckPath": "/health"}'การสลับช่อง
การสลับ จะแลกเปลี่ยนช่อง Staging และ Production พร้อมกันในเชิงอะตอมิก ระหว่างการสลับ App Service จะกำหนดเส้นทางการรับส่งข้อมูลไปยังอินสแตนซ์ Staging ที่กำลังเรียกใช้โค้ดใหม่ก่อน รอให้อินสแตนซ์เหล่านั้นเริ่มต้นทำงาน จากนั้นจึงกำหนดเส้นทางการรับส่งข้อมูล Production ทั้งหมดไปยังอินสแตนซ์ใหม่ และอินสแตนซ์ Production เดิมจะกลายเป็นช่อง Staging ใหม่ วิธีนี้ทำให้การย้อนกลับทำได้ง่ายมาก — เพียงสลับอีกครั้งเพื่อย้อนคืน
# Swap staging into production
az webapp deployment slot swap \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--target-slot production
# Rollback: swap production back to staging
az webapp deployment slot swap \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot production \
--target-slot stagingการตั้งค่าเฉพาะช่องและไม่เฉพาะช่อง
การตั้งค่าแอปพลิเคชันสามารถทำเครื่องหมายเป็น sticky (เฉพาะช่อง) หรือ ไม่ใช่ sticky (สลับไปพร้อมกันได้) การตั้งค่าที่ไม่ใช่ sticky จะย้ายไปพร้อมกับช่องการปรับใช้เมื่อคุณสลับช่อง — ดังนั้นสตริงการเชื่อมต่อฐานข้อมูล Staging ของคุณจะติดตามโค้ดเข้าสู่ Production การตั้งค่า sticky จะอยู่กับช่องเดิมไม่ว่าจะมีการสลับหรือไม่ — Production จะคงสตริงการเชื่อมต่อฐานข้อมูล Production ไว้เสมอ ทำเครื่องหมายการตั้งค่าเป็น sticky โดยใช้ช่องทำเครื่องหมาย 'การตั้งค่าช่องการปรับใช้' หรือ CLI
# Mark a setting as sticky (slot-specific) -- it won't swap
az webapp config appsettings set \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--slot-settings DATABASE_URL='postgresql://staging-db/...'
# Set a non-sticky setting (it WILL travel with a swap)
az webapp config appsettings set \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--settings FEATURE_FLAG_NEW_UI=trueการแบ่งการรับส่งข้อมูลสำหรับการเผยแพร่แบบ Canary
App Service รองรับ การแบ่งการรับส่งข้อมูล — การกำหนดเปอร์เซ็นต์หนึ่งของการรับส่งข้อมูล Production ไปยังช่องที่ไม่ใช่ Production โดยไม่ต้องสลับช่องทั้งหมด วิธีนี้รองรับ การเผยแพร่แบบ canary ซึ่งคุณจะค่อย ๆ เปลี่ยนการรับส่งข้อมูลจาก 5% เป็น 10% แล้วเป็น 50% เมื่อมั่นใจในรุ่นใหม่มากขึ้น พร้อมตรวจสอบอัตราข้อผิดพลาดในแต่ละขั้น ผู้ใช้ที่เข้าสู่ช่อง canary จะได้รับคุกกี้ sticky ซึ่งทำให้ผู้ใช้เหล่านั้นอยู่บนรุ่นเดิมเพื่อให้เซสชันมีความสอดคล้องกัน
# Route 10% of traffic to the staging slot (canary)
az webapp traffic-routing set \
--name MyUniqueWebApp \
--resource-group MyRG \
--distribution staging=10
# View current traffic distribution
az webapp traffic-routing show \
--name MyUniqueWebApp \
--resource-group MyRG
# Reset all traffic to production
az webapp traffic-routing clear \
--name MyUniqueWebApp \
--resource-group MyRGการสลับอัตโนมัติ
Auto Swap จะสลับช่อง Staging เข้าสู่ Production โดยอัตโนมัติทุกครั้งที่มีการปรับใช้โค้ดใหม่ในช่องนั้น เหมาะอย่างยิ่งสำหรับไปป์ไลน์ CI/CD ที่ต้องการให้การปรับใช้ที่สำเร็จทุกรายการพร้อมใช้งานจริงทันที Auto Swap จะรอให้คำขอ HTTP ของช่อง Staging ส่งคืนค่า 200 ก่อนดำเนินการสลับให้เสร็จสิ้น เปิดใช้ฟีเจอร์นี้แยกตามช่องในพอร์ทัลหรือ CLI — แต่ควรใช้อย่างระมัดระวัง เนื่องจากไม่มีขั้นตอนอนุมัติด้วยตนเองระหว่างการปรับใช้กับ Production
# Enable Auto Swap for the staging slot
az webapp deployment slot auto-swap \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--auto-swap-slot production
# Disable Auto Swap
az webapp deployment slot auto-swap \
--name MyUniqueWebApp \
--resource-group MyRG \
--slot staging \
--disableแนวทางปฏิบัติที่ดีสำหรับช่องการปรับใช้
ปฏิบัติตามแนวทางที่ดีต่อไปนี้สำหรับช่องการปรับใช้: ตรวจสอบใน Staging ก่อนสลับไปยัง Production เสมอ ใช้ การตั้งค่า sticky เพื่อแยกการเชื่อมต่อฐานข้อมูล Production ออกจาก Staging เรียกใช้ การทดสอบเบื้องต้น กับ URL ของช่อง Staging หลังการปรับใช้ กำหนดค่า เส้นทางตรวจสอบสถานะ เพื่อให้แน่ใจว่า App Service จะไม่ดำเนินการสลับให้เสร็จสิ้นหากรุ่นใหม่ไม่ทำงานตามปกติ และ ติดแท็กการปรับใช้ เพื่อให้คุณติดตามได้ว่าการส่งการเปลี่ยนแปลงใดกำลังทำงานอยู่ในแต่ละช่อง
ช่องในไปป์ไลน์ CI/CD
ในไปป์ไลน์ CI/CD ทั่วไป ขั้นตอนการสร้าง จะคอมไพล์และทดสอบโค้ด ขั้นตอนการปรับใช้ จะส่งอาร์ติแฟกต์ไปยังช่อง Staging ขั้นตอนการทดสอบการผสานรวม จะเรียกใช้การทดสอบอัตโนมัติกับ URL ของ Staging และ ขั้นตอนการสลับ จะสลับ Staging เข้าสู่ Production โดยอาจมีการควบคุมด้วยการอนุมัติด้วยตนเอง รูปแบบนี้รองรับโดยตรงทั้งใน Azure Pipelines และ GitHub Actions ผ่านการดำเนินการปรับใช้ App Service
# GitHub Actions step: deploy to staging slot
# - name: Deploy to Staging Slot
# uses: azure/webapps-deploy@v2
# with:
# app-name: MyUniqueWebApp
# slot-name: staging
# publish-profile: ${{ secrets.AZURE_STAGING_PUBLISH_PROFILE }}
#
# - name: Swap to Production
# uses: azure/CLI@v1
# with:
# inlineScript: |
# az webapp deployment slot swap \
# --name MyUniqueWebApp \
# --resource-group MyRG \
# --slot stagingการตรวจสอบสถานะการสลับ
ระหว่างและหลังการสลับช่อง ให้ตรวจสอบเมตริกสำคัญใน Azure Monitor เพื่อยืนยันว่ารุ่นใหม่ทำงานเป็นปกติ เฝ้าดูการเพิ่มขึ้นอย่างฉับพลันของ ข้อผิดพลาด HTTP 5xx เวลาในการตอบสนองเฉลี่ย และ การใช้ CPU/หน่วยความจำ ตั้งค่า การแจ้งเตือนเมตริก ให้ทำงานเมื่ออัตราข้อผิดพลาดเกินเกณฑ์ — วิธีนี้จะส่งสัญญาณให้คุณสลับกลับได้อย่างรวดเร็ว การตรวจจับอัจฉริยะของข้อมูลเชิงลึกของแอปพลิเคชันสามารถแจ้งเตือนความผิดปกติหลังการปรับใช้ให้คุณโดยอัตโนมัติ
# Create an alert rule for HTTP 5xx errors post-swap
az monitor metrics alert create \
--name 'HighErrorRate' \
--resource-group MyRG \
--scopes '/subscriptions/.../providers/Microsoft.Web/sites/MyUniqueWebApp' \
--condition 'avg Http5xx > 10' \
--window-size 5m \
--evaluation-frequency 1m \
--action-group MyActionGroupช่องเทียบกับหลายแอป
ช่องการปรับใช้เหมาะกว่าการดูแลแอป App Service แยกกันโดยสิ้นเชิงสำหรับ Staging และ Production เนื่องจากช่องใช้แผนเดียวกัน (ไม่มีค่าใช้จ่ายเพิ่มเติม) สลับได้ในคลิกเดียวพร้อมการย้อนกลับ รองรับการแบ่งการรับส่งข้อมูล และจัดการอยู่ภายใต้ทรัพยากร App Service เดียวกัน ควรใช้แอปแยกกันเฉพาะเมื่อ Staging ต้องใช้ SKU ของแผนที่แตกต่างกันโดยพื้นฐาน มีข้อกำหนดด้านการแยกทรัพยากร หรือมีการเรียกเก็บเงินที่แยกจากกันโดยสิ้นเชิง
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจแนวคิด Microsoft Azure Fundamentals (AZ-900) จากบทเรียนนี้
ทบทวนบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า ช่องการปรับใช้ เป็นสภาพแวดล้อมแบบแยกส่วนที่รองรับการปรับใช้แบบ blue-green การตั้งค่าเฉพาะช่อง จะเก็บการกำหนดค่าเฉพาะสภาพแวดล้อม (เช่น URL ฐานข้อมูล) ไว้กับช่องแทนที่จะผูกไว้กับโค้ด และ การแบ่งการรับส่งข้อมูล รองรับการเผยแพร่แบบ canary ด้วยการกำหนดเปอร์เซ็นต์หนึ่งของการรับส่งข้อมูล Production ไปยังรุ่นใหม่ บทถัดไปเราจะสำรวจการปรับขนาดอัตโนมัติและโดเมนแบบกำหนดเอง
คำถามที่พบบ่อย
บทเรียน “ช่องการปรับใช้และการสลับ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ช่องการปรับใช้และการสลับ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cloud & IT Cert Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ช่องการปรับใช้และการสลับ”
สร้างช่องเตรียมระบบสำหรับการปรับใช้แบบบลู-กรีน อุ่นเครื่องรุ่นใหม่ในช่องเตรียมระบบ และสลับไปยังระบบจริงโดยไม่มีเวลาหยุดให้บริการ คุณปฏิบัติ Cloud & IT Cert Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cloud & IT Cert Prep หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cloud & IT Cert Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “ช่องการปรับใช้และการสลับ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cloud & IT Cert Prep นี้ได้ไหม
ได้ บทเรียน Cloud & IT Cert Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างแผน App Service และเว็บแอป
- ช่องการปรับใช้และการสลับ
- การปรับขนาดอัตโนมัติและโดเมนแบบกำหนดเอง
- การตรวจสอบสิทธิ์และเครือข่ายของ App Service