CI/CD with GitHub Actions & DevOps Pipelines · บทเรียน

การออกรุ่นแบบคานารีด้วยแอ็กชัน

ใช้งานรูปแบบการออกรุ่นแบบคานารี เพื่อทยอยเปิดฟีเจอร์ใหม่แก่ผู้ใช้บางส่วน พร้อมติดตามประสิทธิภาพและเสถียรภาพ

บทเรียน 2 จาก 411 ขั้นตอน

การออกรุ่นแบบคานารีด้วยแอ็กชัน เป็นบทเรียน CI/CD with GitHub Actions & DevOps Pipelines ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CI/CD with GitHub Actions & DevOps Pipelines และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน

บทนำสู่การเผยแพร่แบบ Canary

ลองจินตนาการว่าคุณกำลังเปิดตัวความสามารถหรือการอัปเดตใหม่ หากมีข้อบกพร่องที่ส่งผลกระทบต่อผู้ใช้ทุกคนจะเป็นอย่างไร น่ากังวลใช่ไหม

การเผยแพร่แบบ Canaryช่วยลดความเสี่ยงนี้ด้วยการทยอยเปิดการเปลี่ยนแปลงให้ผู้ใช้กลุ่มเล็ก ๆ ก่อน เปรียบเสมือนการส่ง "นกคีรีบูนในเหมืองถ่านหิน" ไปตรวจสอบอากาศก่อนให้คนอื่นเข้าไป

ประโยชน์ของการเผยแพร่แบบ Canary

การเผยแพร่แบบ Canary มีประโยชน์สำคัญหลายประการ:

  • ลดความเสี่ยง: จำกัดผลกระทบของปัญหาไว้กับผู้ใช้กลุ่มเล็ก
  • ข้อมูลตอบรับจากการใช้งานจริง: ได้ข้อมูลจากระบบจริงเกี่ยวกับประสิทธิภาพและความเสถียร
  • ย้อนกลับได้รวดเร็ว: หากเกิดปัญหา สามารถย้อนกลับเฉพาะกลุ่ม Canary หรือทั้งบริการได้อย่างรวดเร็ว
  • การเปิดใช้งานแบบควบคุม: ค่อย ๆ เพิ่มจำนวนผู้ใช้ที่เข้าถึงเมื่อมีความมั่นใจมากขึ้น

Canary เทียบกับ Blue/Green

คุณอาจจำได้ถึงการนำไปใช้งานแบบ Blue/Green ซึ่งสลับการรับส่งข้อมูลทันทีระหว่างสภาพแวดล้อมที่เหมือนกันสองแห่ง

การเผยแพร่แบบ Canary แตกต่างออกไป แทนที่จะสลับทันที จะเป็นการเปลี่ยนเส้นทางการรับส่งข้อมูลอย่างค่อยเป็นค่อยไป เวอร์ชันใหม่จะทำงานควบคู่กับเวอร์ชันเก่า และในช่วงแรกมีผู้ใช้เพียงสัดส่วนเล็กน้อยที่เห็นเวอร์ชันใหม่ วิธีนี้ช่วยให้ติดตามตรวจสอบอย่างละเอียดก่อนเปิดใช้งานทั้งหมด

การทำงานของการเผยแพร่แบบ Canary

ลำดับขั้นพื้นฐานของการเผยแพร่แบบ Canary มีดังนี้:

  1. นำเวอร์ชันใหม่ไปใช้งาน: นำเวอร์ชันใหม่ของแอปพลิเคชันไปใช้งานกับเซิร์ฟเวอร์หรืออินสแตนซ์กลุ่มเล็ก ๆ ควบคู่กับเวอร์ชันเสถียรที่มีอยู่
  2. กำหนดเส้นทางการรับส่งข้อมูลบางส่วน: กำหนดค่าตัวกระจายโหลดหรือโครงข่ายบริการให้ส่งการรับส่งข้อมูลของผู้ใช้สัดส่วนเล็กน้อย (เช่น 5-10%) ไปยังเวอร์ชันใหม่
  3. ติดตามตรวจสอบ: ติดตามประสิทธิภาพ อัตราข้อผิดพลาด และความคิดเห็นของผู้ใช้อย่างใกล้ชิดสำหรับกลุ่ม Canary
  4. เลื่อนระดับหรือย้อนกลับ: หากทุกอย่างดูดี ให้เพิ่มการรับส่งข้อมูลทีละน้อย หรือเลื่อนเวอร์ชันใหม่ขึ้นเป็น 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 ประสานงานการสร้าง การนำไปใช้งานกับคานารี การตรวจติดตาม และขั้นตอนการเลื่อนเวอร์ชันหรือย้อนกลับตามเงื่อนไข
  • การตรวจติดตามที่มีประสิทธิภาพและตรรกะตามเงื่อนไขเป็นกุญแจสำคัญของกระบวนการคานารีที่ประสบความสำเร็จ

เมื่อใช้คานารี คุณจะนำระบบไปใช้งานได้อย่างมั่นใจและควบคุมได้มากขึ้น

เริ่มต้นได้ฟรี

เรียนรู้ CI/CD with GitHub Actions & DevOps Pipelines ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
48

คำถามที่พบบ่อย

บทเรียน “การออกรุ่นแบบคานารีด้วยแอ็กชัน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การออกรุ่นแบบคานารีด้วยแอ็กชัน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CI/CD with GitHub Actions & DevOps Pipelines ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CI/CD with GitHub Actions & DevOps Pipelines มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การออกรุ่นแบบคานารีด้วยแอ็กชัน”

ใช้งานรูปแบบการออกรุ่นแบบคานารี เพื่อทยอยเปิดฟีเจอร์ใหม่แก่ผู้ใช้บางส่วน พร้อมติดตามประสิทธิภาพและเสถียรภาพ คุณปฏิบัติ CI/CD with GitHub Actions & DevOps Pipelines ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CI/CD with GitHub Actions & DevOps Pipelines หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน CI/CD with GitHub Actions & DevOps Pipelines บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การออกรุ่นแบบคานารีด้วยแอ็กชัน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน CI/CD with GitHub Actions & DevOps Pipelines นี้ได้ไหม

ได้ บทเรียน CI/CD with GitHub Actions & DevOps Pipelines ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การนำไปใช้แบบน้ำเงิน/เขียว
  2. การออกรุ่นแบบคานารีด้วยแอ็กชัน
  3. การย้อนกลับและการกู้คืนจากภัยพิบัติ
  4. แฟล็กฟีเจอร์และการทยอยเปิดตัว
← กลับไปที่ CI/CD with GitHub Actions & DevOps Pipelines