Ada banyak hal yang dapat Anda lakukan untuk meningkatkan proses penempatan Anda. Beberapa dari mereka adalah:
Pastikan kode Anda diuji dengan baik.
Idealnya Anda harus memiliki cakupan uji unit 100%, serta pengujian integrasi untuk setiap skenario yang mungkin.
Jika Anda belum mendapatkan ini, Anda mungkin harus meninggalkan semuanya dan menyelesaikannya.
Lihatlah perkembangan yang didorong oleh perilaku.
Memiliki rangkaian uji lengkap akan memungkinkan Anda untuk ...
Jalankan integrasi berkelanjutan.
Setiap kali seseorang melakukan perubahan, CI kemudian dapat secara otomatis menjalankan test suite di atasnya. Jika test suite lulus, maka dapat langsung digunakan (atau menjadwalkan penempatan). Untuk perubahan yang tidak memerlukan perubahan signifikan pada database Anda, ini saja akan menghemat banyak waktu dan sakit kepala.
Jika ada masalah, CI juga dapat memberi Anda rollback satu klik.
CI jauh kurang berguna jika suite pengujian Anda tidak lengkap dan benar, karena seluruh premis bersandar pada kemampuan untuk memvalidasi kode Anda dengan cara otomatis.
Buat pembaruan atom.
Idealnya Anda tidak hanya menyalin file baru dari yang lama di server produksi. Alih-alih, gunakan alat seperti capistrano, yang menyalin setiap file ke lokasi baru, dan kemudian menggunakan tautan simbolis untuk menunjuk ke penyebaran yang diinginkan. Rolling back adalah instan karena hanya dengan mengubah symlink untuk menunjuk ke penyebaran sebelumnya. (Meskipun ini tidak selalu mencakup migrasi database Anda.)
Lihat juga apakah wadah seperti Docker dapat membantu Anda.
Buat perubahan kecil, lebih sering.
Apakah Anda memiliki tes, CI, atau tidak sama sekali, ini saja dapat membantu Anda secara signifikan. Setiap perubahan harus memiliki cabang git sendiri, dan penyebaran harus memiliki perubahan sesedikit mungkin. Karena perubahan lebih kecil, ada kemungkinan kesalahan yang kecil selama penerapan.
Pada catatan itu, buat perubahan lebih terisolasi jika memungkinkan. Jika Anda telah membuat perubahan pada game Omaha, dan itu tidak memengaruhi Texas Hold'em, 5 card stud, atau yang lainnya, maka itulah satu-satunya game yang perlu ditangguhkan untuk pemeliharaan.
Analisis apa saja yang sudah berjalan lama.
Anda menyebutkan beberapa bagian penerapan Anda membutuhkan waktu lama. Ini mungkin perubahan skema basis data. Sebaiknya lihat DBA di basis data Anda, bersama dengan setiap perubahan skema, untuk melihat apa yang dapat berkinerja lebih baik.
Mintalah seorang ahli masalah melihat bagian lain dari penyebaran yang memakan banyak waktu.
Bekerja dengan jam yang aneh.
Anda mungkin sudah melakukan ini, tetapi perlu disebutkan. Pengembang (dan sysadmin!) Seharusnya tidak diharapkan bekerja "9 hingga 5" lagi, terutama untuk operasi 24x7. Jika seseorang diharapkan menghabiskan waktu semalam untuk menjaga penyebaran, memperbaiki masalah, dan kemudian menjaga jadwal siang hari, harapan Anda tidak realistis, dan Anda membuat orang itu kelelahan.