ทำไมถึงสร้างขึ้นมา

  • ในสภาพแวดล้อม 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

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

ยังไม่มีความคิดเห็น

ยังไม่มีความคิดเห็น