กลยุทธ์การ deploy: versions, aliases และการแบ่ง traffic

Serverless Applications with AWS Lambda

Claudio Canales

Senior DevOps Engineer

ทำไมกลยุทธ์การ deploy จึงสำคัญ

  • ตรวจพบบั๊กได้รวดเร็ว
  • จำกัดความเสียหาย
  • กู้คืนได้เร็ว

การ deploy แบบเสี่ยง vs แบบปลอดภัย

Serverless Applications with AWS Lambda

$LATEST vs versions ที่ publish แล้ว

$LATEST

  • เปลี่ยนทุกครั้งที่อัปเดตโค้ด

Versions

  • สแนปช็อตที่เปลี่ยนแปลงไม่ได้
  • ใช้ pin สำหรับ rollback และการแบ่ง traffic ได้ง่าย

Latest vs versions

Serverless Applications with AWS Lambda

Version คือสแนปช็อตที่เปลี่ยนแปลงไม่ได้

  • มอง versions เหมือน release artifacts
  • แต่ละ version บันทึกโค้ดและ configuration ไว้
  • เมื่อ publish แล้วจะไม่เปลี่ยนแปลง
  • สามารถย้อนกลับไปยังสถานะที่ดีได้เสมอ

สแนปช็อต version ที่เปลี่ยนแปลงไม่ได้

Serverless Applications with AWS Lambda

Aliases คือตัวชี้ที่มีเสถียรภาพ

  • ตัวชี้ที่มีเสถียรภาพ
  • เรียก alias แทนการระบุ version ตรงๆ
  • เปลี่ยนปลายทางได้โดยไม่กระทบผู้เรียก

Alias ชี้ไปยัง version

Serverless Applications with AWS Lambda

Aliases สำหรับ dev และ prod

  • เหมาะสำหรับการแบ่ง environment
  • ย้าย dev ได้บ่อยตามต้องการ
  • เลื่อน prod โดยย้าย alias

การ map alias สำหรับ dev และ prod

Serverless Applications with AWS Lambda

การแบ่ง traffic ด้วย weighted aliases

  • ทดสอบใน production ได้อย่างปลอดภัย
  • Traffic ส่วนใหญ่ยังอยู่บน version ปัจจุบัน
  • ส่วนเล็กน้อยไปยัง version ที่ทดสอบ

แนวคิดการกำหนด weighted alias routing

Serverless Applications with AWS Lambda

Canary ขั้นที่ 1: 90/10

  • 90% อยู่บน version ปัจจุบัน
  • 10% ทดสอบ version ใหม่ภายใต้ load จริง
  • ติดตาม error และ latency

Canary แบบแบ่ง 90/10

Serverless Applications with AWS Lambda

Canary ขั้นที่ 2: 50/50

  • ถ้า 10% ผ่านไปได้ดี ให้เพิ่มสัดส่วน
  • 50% version ปัจจุบัน, 50% version ใหม่
  • ปัญหาจะปรากฏเร็วที่ 50/50
  • การ monitoring สำคัญมาก

Canary แบบแบ่ง 50/50

Serverless Applications with AWS Lambda

Canary ขั้นที่ 3: 100% version ใหม่

  • ส่ง traffic ทั้งหมดไปยัง version ใหม่
  • version เก่ายังคงอยู่
  • Rollback ทำได้ง่าย

Canary 100% version ใหม่

Serverless Applications with AWS Lambda

แนวคิด blue/green

  • Blue = version ที่เสถียรในปัจจุบัน
  • Green = version ใหม่ที่ทดสอบ
  • สลับโดยย้าย alias
  • Weighted routing ทำให้การสลับค่อยเป็นค่อยไป

การสลับ blue/green

Serverless Applications with AWS Lambda

Rollback = ย้าย alias กลับ

  • ไม่ต้อง deploy ใหม่
  • ย้าย alias ไปยัง version ที่ดีที่สุดก่อนหน้า
  • กู้คืนได้ภายในไม่กี่วินาที
  • Immutable versions และ stable aliases ทำงานร่วมกัน

Rollback โดยการย้าย alias

Serverless Applications with AWS Lambda

ติดตามผลระหว่างการแบ่ง traffic

  • Error และ timeout
  • Duration และ tail latency
  • Throttle หากใช้ cap
  • หยุดหรือ rollback ได้ทันที

เมตริกสำหรับ monitoring การ deploy

Serverless Applications with AWS Lambda

ข้อผิดพลาดที่พบบ่อย: ใช้ $LATEST เป็น prod

  • พึ่งพา $LATEST ทำให้คาดเดาพฤติกรรมไม่ได้
  • Versions และ aliases ทำให้รู้ชัดว่ากำลังรันอะไรอยู่
  • Rollback ปลอดภัย

คำเตือนการ drift ของ Latest

Serverless Applications with AWS Lambda

Ignore

Serverless Applications with AWS Lambda

Checklist การ deploy อย่างปลอดภัย

  • Publish version
  • แบ่ง traffic ทีละน้อยด้วย alias
  • ติดตามผลลัพธ์
  • เตรียม rollback ไว้ทุกขั้นตอน

ไดอะแกรม checklist การ deploy อย่างปลอดภัย

Serverless Applications with AWS Lambda

บทสรุปสำคัญ

  • Versions ให้ความสามารถในการคาดเดา
  • Aliases ให้เสถียรภาพ
  • Weighted routing เพิ่มความปลอดภัย
  • Rollback = ย้าย alias

บทสรุปสำคัญของการ deploy

Serverless Applications with AWS Lambda

มาฝึกกันเถอะ!

Serverless Applications with AWS Lambda

Preparing Video For Download...