Latar Belakang
Saya bekerja di tim yang ingin menerapkan penerapan zero-downtime. Kami berencana menggunakan strategi penyebaran biru / hijau untuk mencapai ini. Salah satu hal yang saya sadari dalam melakukan penelitian adalah betapa rumitnya membuat perubahan database. Operasi sederhana seperti mengganti nama kolom dapat memakan waktu 3 siklus rilis penuh hingga selesai!
Tampaknya bagi saya bahwa dengan peluncuran penuh dari perubahan, ambil beberapa siklus rilis memperkenalkan banyak potensi kesalahan manusia. Dalam artikel tertaut itu menunjukkan bahwa perubahan kode diperlukan untuk 2 rilis dan migrasi database diperlukan untuk 3 rilis.
Apa yang saya cari
Saat ini, jika kita ingin mengingat untuk melakukan sesuatu, kita dapat membuat tiket dalam sistem manajemen masalah kita, yang menciptakan kekacauan dan juga mungkin akan dipindahkan ke sprint atau backlog oleh manajemen; atau kita dapat membuat komentar TODO, yang mungkin akan dilupakan sepenuhnya.
Apa yang saya cari adalah cara agar komentar TODO dapat memiliki tenggat waktu untuk menentangnya, dan sistem Integrasi Berkelanjutan kami (saat ini yang belum diputuskan yang akan kami gunakan) akan menolak pembangunan jika tenggat waktu ini kedaluwarsa.
Misalnya, jika kami mengganti nama kolom, kami dapat membuat migrasi awal untuknya, dan kemudian dua komentar TODO untuk memastikan bahwa dua migrasi lainnya dibuat:
// TODO by v55: Create migration to move constraints to new column, remove references to old column in app
// TODO by v56: Create migration to drop old column
Ini tampaknya cukup sederhana untuk diterapkan, tetapi saya ingin tahu apakah sesuatu seperti ini sudah ada, karena saya tidak ingin menemukan kembali roda.
Pikiran tambahan
Saya merasa mungkin saya menderita masalah XY di sini, mengingat bahwa penyebaran bergulir dan penyebaran biru / hijau dianggap sebagai praktik terbaik, rasanya aneh bahwa saya tidak dapat menemukan solusi untuk membuat pembaruan basis data tidak begitu menyakitkan. Jika Anda pikir saya melihat ke hal yang salah sepenuhnya, tolong beri tahu saya dalam komentar! Yang mengatakan, contoh database yang saya berikan hanyalah satu contoh, dan saya pikir komentar TODO dengan tanggal jatuh tempo akan berguna dalam situasi lain juga, jadi bahkan jika saya mendekati situasi spesifik ini semua salah, saya benar-benar ingin menjawab pertanyaan saya pertanyaan sebenarnya juga. Terima kasih!
EDIT: Saya hanya memikirkan situasi lain di mana ini bisa membantu. Jika Anda menggunakan Fitur Toggles untuk menghidupkan bagian-bagian aplikasi Anda ketika mereka sudah siap, Anda harus berhati-hati untuk membersihkannya, jika tidak, Anda akan berakhir dengan Toggle Debt . Komentar dengan tenggat waktu bisa menjadi cara yang baik untuk mengingat ini.
TODO <Bug#>:
untuk melacak solusi untuk masalah dengan komponen lainnya. Ketika bug dihapus pada salah satu komponen itu, Anda dapat dengan mudah menemukan & mengatasi solusi yang relevan. Itu tidak menggantikan pelacak masalah, itu membuatnya lebih mudah untuk dipelihara.