Rollback Extension สำหรับ Flyway Community Edition
(github.com/coder013)ทำไมถึงสร้างขึ้นมา
- ในสภาพแวดล้อม ECS/EKS สามารถ rollback แอปพลิเคชันได้ แต่ การเปลี่ยนแปลงฐานข้อมูลไม่สามารถ rollback อัตโนมัติได้
- ใน Flyway มีการรองรับ rollback ด้วยคำสั่ง
undoแต่รองรับตั้งแต่ Enterprise Edition ขึ้นไป และ ไม่สามารถใช้ได้ใน Community Edition - จึงพัฒนา Extension นี้ขึ้นมาเพื่อ โปรเจ็กต์ส่วนตัวและทีมขนาดเล็ก ที่รู้สึกว่าค่าไลเซนส์ Enterprise เป็นภาระ
วิธีการทำงาน
- เขียนไฟล์
R{version}__*.sqlไว้ในdb/rollback/ในลักษณะเดียวกับ migration - เมื่อแอปพลิเคชันเริ่มทำงาน จะรันสคริปต์ระหว่างเวอร์ชันปัจจุบัน → เวอร์ชันเป้าหมายในลำดับย้อนกลับ
ฟีเจอร์หลัก
- การตรวจสอบล่วงหน้าแบบ fail-fast — ตรวจสอบว่ามี rollback script อยู่หรือไม่ก่อนรัน
- ธุรกรรมเดียว — รับประกันแบบ all-or-nothing
- โหมด dry-run — ล็อกได้เฉพาะแผนการรัน
- ประวัติการ rollback — บันทึกล็อกลงในตาราง
flyway_rollback_history - Actuator endpoint — ดูเวอร์ชันที่ถูกใช้งานและสคริปต์ที่พร้อมใช้ได้ที่
/actuator/flyway-rollback
ข้อกำหนด
- Java 17+, Spring Boot 3.x
นี่เป็นไลบรารีโอเพนซอร์สตัวแรกที่ผมพัฒนาขึ้น จึงอาจยังมีหลายจุดที่ไม่สมบูรณ์ ฝากทดลองใช้และส่งความคิดเห็นหรือข้อเสนอแนะเพื่อการปรับปรุงได้ตามสบาย ขอบคุณครับ!
ยังไม่มีความคิดเห็น