Skip to content
Tech

ทำไม schema migration ของฉันถึงทำงานก่อนที่จะตรวจสอบว่า service ที่ deploy ไว้นั้นจะรับมือกับมันได้?

83

โอกาส

เมื่อคุณ push การเปลี่ยนแปลง schema ไปยังฐานข้อมูล production การ migrate จะทำงานก่อนที่เครื่องมือใดจะยืนยันว่า service versions ที่กำลังทำงานอยู่สามารถอ่านและเขียนรูปแบบใหม่ได้ คอลัมน์ที่ถูกลบหรือ field ที่เปลี่ยนชื่อจะถึงฐานข้อมูลก่อนที่ pod เก่าจะ drain เสร็จสิ้น และการ rollback จะคืน schema แต่ไม่ได้คืนข้อมูลที่ถูกเขียนโดย version ใหม่ในระหว่างนั้น เครื่องมือ ORM สร้าง SQL จาก diff แต่ไม่ได้จำลองอะไรเกี่ยวกับ deployment topology, service versions ที่ทำงานพร้อมกัน หรือรูปแบบการอ่านเขียนจริง ทีมงานชดเชยด้วยพิธีกรรม expand-contract ที่บันทึกไว้ใน wiki และความรู้ภายในทีม ไม่ใช่การบังคับใช้ผ่านเครื่องมือ ขั้นตอนที่ผิดลำดับเพียงขั้นเดียวก่อให้เกิดความล้มเหลวแบบ cascading ในหลาย service และเป็นเหตุการณ์ที่มีหลักฐานชัดเจนมูลค่า 4.5 ล้านดอลลาร์ในปีที่ผ่านมา

ทำไมถึงสำคัญ

การตรวจสอบความเข้ากันได้ก่อนการ deploy ที่จำลอง live service topology ของคุณจะเปลี่ยนขั้นตอนที่เสี่ยงที่สุดใน deployment ให้เป็นสิ่งที่คุณสามารถวิเคราะห์ได้ก่อนกด apply

วิธีที่ผมให้คะแนนโอกาส

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

ความรุนแรง9/10

ความเจ็บปวดที่มันก่อขึ้นเมื่อปรากฏตัว

ความถี่8/10

ความถี่ที่คนจริงๆ เจอมัน

ช่องว่าง7/10

ความขาดแคลนของเครื่องมือที่ดีสำหรับมันในปัจจุบัน

ปัญหาอื่นที่น่าแก้ไข