การออกรุ่นแบบคานารีด้วยแอ็กชัน
ใช้งานรูปแบบการออกรุ่นแบบคานารี เพื่อทยอยเปิดฟีเจอร์ใหม่แก่ผู้ใช้บางส่วน พร้อมติดตามประสิทธิภาพและเสถียรภาพ
การออกรุ่นแบบคานารีด้วยแอ็กชัน เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
บทนำสู่การเผยแพร่แบบ Canary
ลองจินตนาการว่าคุณกำลังเปิดตัวความสามารถหรือการอัปเดตใหม่ หากมีข้อบกพร่องที่ส่งผลกระทบต่อผู้ใช้ทุกคนจะเป็นอย่างไร น่ากังวลใช่ไหม
การเผยแพร่แบบ Canaryช่วยลดความเสี่ยงนี้ด้วยการทยอยเปิดการเปลี่ยนแปลงให้ผู้ใช้กลุ่มเล็ก ๆ ก่อน เปรียบเสมือนการส่ง "นกคีรีบูนในเหมืองถ่านหิน" ไปตรวจสอบอากาศก่อนให้คนอื่นเข้าไป
ประโยชน์ของการเผยแพร่แบบ Canary
การเผยแพร่แบบ Canary มีประโยชน์สำคัญหลายประการ:
- ลดความเสี่ยง: จำกัดผลกระทบของปัญหาไว้กับผู้ใช้กลุ่มเล็ก
- ข้อมูลตอบรับจากการใช้งานจริง: ได้ข้อมูลจากระบบจริงเกี่ยวกับประสิทธิภาพและความเสถียร
- ย้อนกลับได้รวดเร็ว: หากเกิดปัญหา สามารถย้อนกลับเฉพาะกลุ่ม Canary หรือทั้งบริการได้อย่างรวดเร็ว
- การเปิดใช้งานแบบควบคุม: ค่อย ๆ เพิ่มจำนวนผู้ใช้ที่เข้าถึงเมื่อมีความมั่นใจมากขึ้น
Canary เทียบกับ Blue/Green
คุณอาจจำได้ถึงการนำไปใช้งานแบบ Blue/Green ซึ่งสลับการรับส่งข้อมูลทันทีระหว่างสภาพแวดล้อมที่เหมือนกันสองแห่ง
การเผยแพร่แบบ Canary แตกต่างออกไป แทนที่จะสลับทันที จะเป็นการเปลี่ยนเส้นทางการรับส่งข้อมูลอย่างค่อยเป็นค่อยไป เวอร์ชันใหม่จะทำงานควบคู่กับเวอร์ชันเก่า และในช่วงแรกมีผู้ใช้เพียงสัดส่วนเล็กน้อยที่เห็นเวอร์ชันใหม่ วิธีนี้ช่วยให้ติดตามตรวจสอบอย่างละเอียดก่อนเปิดใช้งานทั้งหมด
การทำงานของการเผยแพร่แบบ Canary
ลำดับขั้นพื้นฐานของการเผยแพร่แบบ Canary มีดังนี้:
- นำเวอร์ชันใหม่ไปใช้งาน: นำเวอร์ชันใหม่ของแอปพลิเคชันไปใช้งานกับเซิร์ฟเวอร์หรืออินสแตนซ์กลุ่มเล็ก ๆ ควบคู่กับเวอร์ชันเสถียรที่มีอยู่
- กำหนดเส้นทางการรับส่งข้อมูลบางส่วน: กำหนดค่าตัวกระจายโหลดหรือโครงข่ายบริการให้ส่งการรับส่งข้อมูลของผู้ใช้สัดส่วนเล็กน้อย (เช่น 5-10%) ไปยังเวอร์ชันใหม่
- ติดตามตรวจสอบ: ติดตามประสิทธิภาพ อัตราข้อผิดพลาด และความคิดเห็นของผู้ใช้อย่างใกล้ชิดสำหรับกลุ่ม Canary
- เลื่อนระดับหรือย้อนกลับ: หากทุกอย่างดูดี ให้เพิ่มการรับส่งข้อมูลทีละน้อย หรือเลื่อนเวอร์ชันใหม่ขึ้นเป็น 100% หากเกิดปัญหา ให้ย้อนกลับ Canary และเปลี่ยนการรับส่งข้อมูลกลับไปยังเวอร์ชันเสถียร
การประสานงานด้วย GitHub Actions
GitHub Actions สามารถประสานงานกระบวนการเผยแพร่แบบคานารีทั้งหมดได้ โดยไม่ได้จัดการการรับส่งข้อมูลโดยตรง (หน้าที่นั้นเป็นของโครงสร้างพื้นฐานของคุณ) แต่จะเรียกใช้ขั้นตอนต่าง ๆ ดังนี้:
- สร้างและทดสอบแอปพลิเคชันของคุณ
- นำเวอร์ชันใหม่ไปใช้งานในสภาพแวดล้อมคานารี
- เริ่มเปลี่ยนเส้นทางการรับส่งข้อมูลผ่านการเรียก API ไปยังตัวกระจายโหลดหรือโครงข่ายบริการของคุณ
- รอผลการตรวจติดตามหรือการอนุมัติด้วยตนเอง
- เลื่อนคานารีขึ้นใช้งานจริงหรือเรียกใช้การย้อนกลับ
โครงร่างเวิร์กโฟลว์คานารี
เวิร์กโฟลว์ GitHub Actions ทั่วไปสำหรับการเผยแพร่แบบคานารีอาจมีลักษณะดังนี้:
name: Canary Deployment
on: push
jobs:
build:
# ... build and test steps ...
deploy-canary:
needs: build
steps:
- name: Deploy to Canary Group
# ... call script/tool to deploy and shift 10% traffic ...
monitor-canary:
needs: deploy-canary
# ... wait for monitoring/approval ...
promote-or-rollback:
needs: monitor-canary
# ... conditionally promote to 100% or rollback ...แต่ละขั้นตอนจะโต้ตอบกับเครื่องมือสำหรับนำระบบไปใช้งานของคุณ
การจำลองตรรกะการทยอยเปิดใช้แบบคานารี
แม้ GitHub Actions จะทำหน้าที่ประสานงาน แต่การตัดสินใจและคำสั่งสำหรับนำระบบไปใช้งานจริงมักเกิดขึ้นภายในสคริปต์ ต่อไปนี้เป็นตัวอย่าง Python ที่จำลองตรรกะของการทยอยเปิดใช้แบบคานารี ลองนึกภาพว่าการดำเนินการหนึ่งกำลังเรียกใช้สคริปต์นี้:
def deploy_version(version, traffic_percent):
print(f"Deploying {version} to {traffic_percent}% traffic.")
if traffic_percent == 100:
print("Full rollout complete!")
elif traffic_percent > 0:
print("Canary deployed. Monitoring for stability...")
else:
print("Version removed (rollback).")
if __name__ == "__main__":
print("--- Starting Canary Workflow ---")
new_app_version = "v2.1-canary"
stable_app_version = "v2.0"
# Step 1: Deploy new version to 10% traffic
deploy_version(new_app_version, 10)
# Step 2: Simulate monitoring (e.g., waiting for metrics)
print("Monitoring canary performance...")
import random
canary_successful = random.choice([True, True, True, False]) # 75% chance of success
if canary_successful:
print("Canary looks good! Proceeding to full rollout.")
# Step 3a: Promote new version to 100%
deploy_version(new_app_version, 100)
else:
print("Canary issues detected! Rolling back.")
# Step 3b: Rollback to stable version
deploy_version(stable_app_version, 100)
print("--- Canary Workflow Finished ---")การตรวจติดตามคานารีของคุณ
การตรวจติดตามที่มีประสิทธิภาพมีความสำคัญอย่างยิ่ง เวิร์กโฟลว์ GitHub Actions ของคุณสามารถผสานรวมกับระบบตรวจติดตามได้หลายวิธี:
- การเรียก API: สอบถามเครื่องมือตรวจติดตาม (เช่น Datadog, Prometheus) เพื่อดูตัวชี้วัดสำคัญ
- การตรวจสอบสถานะ: สอบถามปลายทางสถานะของแอปพลิเคชันเป็นระยะ
- ด่านอนุมัติด้วยตนเอง: หยุดเวิร์กโฟลว์ชั่วคราวเพื่อให้มนุษย์ตรวจสอบและอนุมัติ
- การรอตามเวลา: รอช่วงเวลาที่กำหนดเพื่อให้ตัวชี้วัดมีเสถียรภาพ
จากนั้นเวิร์กโฟลว์จะใช้สัญญาณเหล่านี้เพื่อตัดสินใจว่าจะเลื่อนเวอร์ชันขึ้นใช้งานจริงหรือย้อนกลับ
การเลื่อนเวอร์ชันหรือย้อนกลับตามเงื่อนไข
หลังระยะการตรวจติดตาม GitHub Actions จะใช้ตรรกะตามเงื่อนไขเพื่อตัดสินใจขั้นตอนถัดไป คุณสามารถใช้คำสั่ง if ในคำจำกัดความของงานหรือขั้นตอนได้
promote-or-rollback:
needs: monitor-canary
if: success() && needs.monitor-canary.outputs.canary_ok == 'true'
steps:
- name: Promote Full Rollout
# ... command to shift 100% traffic to new version ...
rollback:
needs: monitor-canary
if: failure() || needs.monitor-canary.outputs.canary_ok == 'false'
steps:
- name: Rollback to Stable
# ... command to shift 100% traffic to old version ...วิธีนี้ช่วยให้ระบบตอบสนองต่อประสิทธิภาพของคานารีได้โดยอัตโนมัติ
ตรวจสอบการเผยแพร่แบบคานารี
คุณได้เรียนรู้เกี่ยวกับประโยชน์และกลไกของการเผยแพร่แบบคานารีแล้ว มาทดสอบความเข้าใจกัน
ทบทวน: การเผยแพร่แบบคานารีด้วย Actions
ในบทเรียนนี้ คุณได้เรียนรู้เกี่ยวกับการเผยแพร่แบบคานารี ซึ่งเป็นกลยุทธ์การนำซอฟต์แวร์เวอร์ชันใหม่ไปใช้งานกับผู้ใช้เพียงบางส่วนอย่างค่อยเป็นค่อยไป
- การเผยแพร่แบบคานารีช่วยลดความเสี่ยงและให้ข้อมูลตอบรับจากการใช้งานจริง
- GitHub Actions ประสานงานการสร้าง การนำไปใช้งานกับคานารี การตรวจติดตาม และขั้นตอนการเลื่อนเวอร์ชันหรือย้อนกลับตามเงื่อนไข
- การตรวจติดตามที่มีประสิทธิภาพและตรรกะตามเงื่อนไขเป็นกุญแจสำคัญของกระบวนการคานารีที่ประสบความสำเร็จ
เมื่อใช้คานารี คุณจะนำระบบไปใช้งานได้อย่างมั่นใจและควบคุมได้มากขึ้น
คำถามที่พบบ่อย
บทเรียน “การออกรุ่นแบบคานารีด้วยแอ็กชัน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การออกรุ่นแบบคานารีด้วยแอ็กชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การออกรุ่นแบบคานารีด้วยแอ็กชัน”
ใช้งานรูปแบบการออกรุ่นแบบคานารี เพื่อทยอยเปิดฟีเจอร์ใหม่แก่ผู้ใช้บางส่วน พร้อมติดตามประสิทธิภาพและเสถียรภาพ คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การออกรุ่นแบบคานารีด้วยแอ็กชัน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การนำไปใช้แบบน้ำเงิน/เขียว
- การออกรุ่นแบบคานารีด้วยแอ็กชัน
- การย้อนกลับและการกู้คืนจากภัยพิบัติ
- แฟล็กฟีเจอร์และการทยอยเปิดตัว