วัฒนธรรมการปล่อยซอฟต์แวร์ของ Shopify
(engineering.shopify.com)Shopify ให้นิยามวัฒนธรรมการปล่อยซอฟต์แวร์ว่าเป็น "ผลรวมของความเชื่อและการกระทำของสมาชิกทุกคน"
"ทำให้การ Shipping ไม่ใช่งานที่ไม่อยากทำ แต่เป็นความรู้สึกของการเฉลิมฉลอง"
วิธีที่ Shopify ใช้วัดวัฒนธรรมการปล่อยซอฟต์แวร์
-
แบบรับข้อมูล: แบบสำรวจความสุขของนักพัฒนา (ทุก 2 ปี), ช่อง Slack
-
แบบเชิงรุก: dogfooding, ทีมสนับสนุนภายใน, UX research
กระบวนการปล่อยซอฟต์แวร์ของ Shopify
- ไปป์ไลน์การปล่อย: PR → CI/Merge (Merge Queue) → Canary → Production
-
ไม่มี release manager นักพัฒนาที่รับผิดชอบ PR จะดูแลกระบวนการทั้งหมดจนถึง production
-
ไม่มีช่วงเวลาที่กำหนดไว้ตายตัว และดำเนินการได้ทุกเมื่อด้วยคำสั่ง
/shipit -
หากเกิด error/crash ให้ใช้
/shipit --emergencyเพื่อปล่อยแบบ fast-track -
ทำทุกอย่างที่ทำได้ให้เป็นอัตโนมัติ
1 ความคิดเห็น
คิว Merge จะเข้าใจได้ง่ายขึ้นถ้าอ่านบทความที่เผยแพร่เมื่อปีที่แล้วก่อน
"Successfully Merging the Work of 1000+ Developers"
https://engineering.shopify.com/blogs/engineering/…
Shopify ใช้การพัฒนาแบบ trunk-based โดยมีการ merge คอมมิตประมาณ 400 ครั้งต่อวัน และมีการเปลี่ยนแปลงเว็บไซต์ราว 40 ครั้งต่อวัน
ดำเนินการ deploy ผ่าน Shipit engine ที่เปิดซอร์สไว้ที่ https://github.com/Shopify/shipit-engine
หลักการพื้นฐาน
master branch ต้องเป็น Green อยู่เสมอ : ต้องผ่าน CI
master ต้องใกล้เคียงกับ Production
ต้องสามารถจัดการ merge แบบเร่งด่วนได้อย่างรวดเร็ว