Travis CI ผู้ให้บริการ continuous integration (CI) ทำฐานข้อมูลหายทั้งระบบเมื่อเดือนมีนาคมที่ผ่านมา หลังพลาดรันชุดทดสอบโดยกำหนดคอนฟิกตัวแปร DATABASE_URL
เป็นเซิร์ฟเวอร์ production ทำให้สคริปต์สั่งล้างฐานข้อมูลเพื่อเตรียมทดสอบ และเมื่อสัปดาห์ที่แล้วทีมงานก็เขียนบล็อครายงานสาเหตุและแนวทางแก้ไข
ความผิดพลาดนี้เกิดจากนักพัฒนาใช้หน้าจอ tmux เปิดฐานข้อมูล production เพื่อตรวจสอบปัญหา จึงคอนฟิกให้ตัวแปรชี้ไปยังฐานข้อมูลจริง หลังจากนั้นก็ทิ้งเทอร์มินัลนี้ไว้หลายวัน แล้วกลับมาใช้รันทดสอบโดยลืมไปว่าตั้งให้ใช้ฐานข้อมูลจริงไว้
หลังฐานข้อมูลถูกล้าง ทีมงานยังทำผิดพลาดหลายอย่าง เช่น เปิดบริการขณะกู้ฐานข้อมูล หรือระบบ cron ไม่กลับมาทำงาน อย่างไรก็ตาม ทีมงานสามารถกู้ฐานข้อมูลกลับมาได้โดยเสียข้อมูลไปเพียง 15 นาทีเท่านั้น
ระบบพัฒนากับเซิร์ฟเวอร์จริงของ Travis CI ไม่ได้แยกขาดจากกัน โดยระบุว่าการออกแบบเครื่องมือทำให้แยกจากกันได้ยาก และกระบวนการแก้ไขก็เป็นการแจ้งเตือนนักพัฒนาว่ากำลังทำงานบนระบบใด รวมถึงการแก้ไขไลบรารีอย่าง DatabaseCleaner ให้เตือนนักพัฒนาว่ากำลังใช้ฐานข้อมูลนอกเครื่องอยู่
ที่มา - Travis CI
Comments
แบบนี้ก็ได้ด้วยเหรอ โครตไม่รอบครอบอย่างรุนแรง
แล้วผลเสียต่อลูกค้าหล่ะ ต้องทำยังไง ???
continous => continuous
ฐานช้อมูล => ฐานข้อมูล
ทีมงานทยัง ?
ทำไมนึกถึงข่าวนี้ 55555
เฮือกกก
ปกป้อง | เฟสบุ๊ก | ทวิตเตอร์
ทำงานแบบนี้มันหายนะของระบบ Production ชัดๆ
ระบบเทสอยู่ network เดียวกับ production ก็เสี่ยงแล้ว ออกแบบระบบยังไง
Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)
คนจริง test กันบน production
มีคนเคยกล่าวไว้
ผมเห็นตายกันนัดต่อนัดแล้ว
ชอบๆฮ่าๆ
คนจริงต้องอยู่กับพวกขี้ระแวง ถ้าคนจริงอยู่ด้วยกันหายนะจะมาเยือน
ถ้าเผลอลบ production แล้วกู้กลับมาได้ โดยเสีย transaction ไปแค่ 15 นาที นี่ผมถือว่าระดับเทพ นะครับ
ผมว่า transaction backup คือเทพ(ช่วยไว้)มากกว่านะครับ
ขาดความรอบคอบมากๆ
ดูเหมือนหัวข้อข่าวจะพิมพ์ผิดนะครับจาก 'ช' เป็น 'ข'