Canary Release

A Technique That Helps Reduce Software Release Risk

วันนี้นำเสนอเทคนิคที่ช่วยลดความเสี่ยงในการ Deploy ซอฟต์แวร์เวอร์ชั่นใหม่ขึ้น Product Environment … เทคนิคนี้เรียกว่า “Canary Release”

เริ่มต้นด้วยการใช้ Blue/Green Deployment ในการเอาของใหม่ขึ้นไปใน Staging Environment ก่อน ทดสอบอะไรต่างๆให้เรียบร้อย เมื่อพร้อมแล้ว … แทนที่จะส่ง Request ทั้งหมดไปที่ Environment ตัวใหม่เลย เราเลือกที่จะค่อยๆส่ง Request บางส่วนไปที่ Environment ใหม่และค่อยๆเพิ่มขึ้นทีละน้อยจนกระทั่งครบ 100% การเลือกว่าลูกค้าคนไหนจะได้ใช้ของใหม่มีหลายวิธี เช่น สุ่มเอาเลย, เลือกให้พนักงานใช้ของใหม่ก่อน (เหมือนที่ Facebook ทำ), หรือที่ซับซ้อนหน่อยคือเลือกตามโปรไฟล์ของลูกค้า (เพศ, วัย, ความสนใจ, ถิ่นที่อยู่, อื่นๆ)

ข้อดีของการใช้วิธีนี้นอกเหนือจากการลดช่วงเวลา Downtime และความรวดเร็วในการทำ Rollback ซึ่งข้อดีทั้งสองข้อนี้เป็นผลพวงมาจาก Blue/Green Deployment แล้วเรายังสามารถทำ Capacity Testing กับซอฟต์แวร์เวอร์ชั่นใหม่ไปในตัวได้ด้วยการค่อยๆเพิ่มปริมาณ Request ที่วิ่งมายัง Environment ชุดใหม่แล้วคอย Monitor ดูผลต่างๆที่เกิดขึ้น

แต่ข้อเสียก็มีเช่นกัน ข้อแรกเราต้องดูแลซอฟต์แวร์มากกว่าหนึ่งเวอร์ชั่น เพราะเป็นไปได้ที่เราจะมี Canary Release หลายชุดในหนึ่งช่วงเวลา ดังนั้นเรื่องนี้ต้องคิดหนักๆแล้วพยายามให้มีจำนวนเวอร์ชั่นที่ต่างกันให้น้อยที่สุด

ข้อเสียข้อสองคือถ้าซอฟต์แวร์ของเราไม่ใช่ Hosted แต่เป็นของที่ต้องติดตั้งที่เครื่องคอมพิวเตอร์ของลูกค้าหรือแม้แต่บนโทรศัพท์มือถือก็ตาม ในกรณีนี้เราเข้าไปจัดการอะไรไม่ได้มาก เป็นสิทธิของลูกค้าจะเลือกอัพเกรดเป็นเวอร์ชั่นใหม่ตอนไหน อย่างไรก็ตามเหตุการณ์แบบนี้ก็ไม่ใช่อุปสรรคในการใช้ Canary Release มาช่วยในการ Deploy ซอฟต์แวร์ใหม่นะ … แต่ความซับซ้อนและขั้นตอนก็จะมีเพิ่มขึ้นมานิดนึงด้วยการใช้เทคนิคที่เรียกว่า ParallelChange (Expand and Contract) ที่ทำให้เราสามารถรันซอฟต์แวร์ที่ฝั่งเซิร์ฟเวอร์ที่สามารถ Support ซอฟต์แวร์จากฝั่งไคลเอ็นท์ได้ทั้งเวอร์ชั่นเก่าและใหม่ … เล่าต่อเรื่องนี้พรุ่งนี้ครับ

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

The Future Has Arrived — It’s Just Not Evenly Distributed Yet, William Gibson

อนาคตอยู่ตรงนี้แล้ว เรามีหน้าที่ต้องถ่ายทอดมันออกไปให้คนอื่นได้สัมผัสสิ่งดีๆร่วมกันครับ

Show your support

Clapping shows how much you appreciated Piyorot’s story.