Salah satu praktik yang ditetapkan dalam Pengiriman Berkelanjutan Jez Humble adalah bahwa Anda harus membangun satu paket dan kemudian melepaskannya ke setiap lingkungan yang Anda gunakan, sehingga penyebaran dan artefak telah diuji sendiri beberapa kali sebelum diproduksi.
Saya sepenuhnya mendukung ide ini.
Di sisi lain, membangun mode debug yang memberi Anda tumpukan jejak dengan nomor baris sangat berguna di lingkungan pengujian, seperti kemampuan untuk debug jarak jauh. Tapi, Anda ingin mengirim rilis rilis ke produksi.
Jadi, untuk orang yang mengikuti prinsip pertama, pada titik apa Anda beralih dari debug ke rilis build?
Apakah sebelum penerapan pertama ke lingkungan pengujian, menghitung biaya kehilangan mode debug layak dibayar untuk memastikan Anda menguji kandidat rilis yang sebenarnya lebih awal? Atau apakah Anda membangun lagi di beberapa titik dalam proses promosi, karena Anda yakin akan memercayai proses pembuatan melalui perangkat lunak? Atau apakah Anda hanya mengacaukan semuanya dan menggunakan versi debug untuk produksi?
Catatan: Saya tahu ini tidak benar-benar berlaku untuk bahasa yang ditafsirkan karena Anda biasanya dapat menjentikkan sakelar dalam konfigurasi daripada melakukannya saat membangun.
Jawaban:
Kami beralih lebih awal, ketika kode sumber mendapatkan nomor versi dan didorong ke antrian build Debian. Kami berada dalam situasi beruntung melakukan perangkat lunak ilmiah dengan input dan output yang ditentukan dengan baik dan sedikit interaksi sistem, sehingga biaya mereproduksi situasi kesalahan cukup rendah.
Ini juga jawaban umum saya: Titik perubahan build sebagian besar tergantung pada biaya reproduksi untuk kesalahan. Jika ini sangat tinggi, saya bahkan akan mengirimkan debug build untuk menguji pelanggan. Sementara itu membawa risiko kegagalan membangun untuk membangun produksi, ini masih bisa lebih murah daripada menghabiskan minggu dalam reproduksi kasus uji.
sumber
Segera setelah kami pergi ke QA kami beralih ke rilis build. Tetapi kapan pun kita membangun rilis, membangun proses membangun kita juga membangun versi debug dll. Ini memungkinkan kita untuk dengan cepat menjatuhkan debug dll ke dalam lingkungan QA dan mendapatkan informasi tambahan jika diperlukan.
Baik versi rilis dan debug dari dll didukung dan disimpan selama beberapa tahun.
sumber
Di lingkungan kami, kode tersebut digunakan di banyak situs. Dan karenanya harus ada konteks berbeda yang diterapkan pada setiap instance penempatan. Biasanya, kami menempatkannya di tempat-tempat "berisiko rendah" dan melihat pengalamannya.
Penempatan ini masih dalam produksi karenanya, ini bukan mode 'debug'. Tetapi juga mengasumsikan bahwa pengujian dilakukan dengan baik.
Tentu saja, dengan mode debug mati, debug cepat kode (di situs) mungkin sulit. Tetapi jika rilis telah gagal, produksi beralih kembali ke rilis kembali.
Namun, kami mencoba mempertahankan atau menciptakan lingkungan yang identik, yang dapat mereproduksi lingkungan tersebut untuk diuji lagi. (Saya tahu ini tidak selalu sepele untuk dilakukan) tetapi yang kita butuhkan kadang-kadang adalah mereproduksi transaksi / input.
Intinya adalah, berapa banyak godaan, rilis mode debug tidak boleh dalam produksi. Padahal, saya tidak akan mengatakan ini adalah aturan.
Hal lain adalah, rilis ini masih disebut uji coba sampai telah ditetapkan (dengan menjalankan untuk waktu yang signifikan) tempat lain belum menerimanya.
Ada beberapa praktik lain untuk memastikan bahwa proses pembangunan itu sendiri tidak cukup salah. Lihat ini: Cara sederhana untuk meningkatkan kualitas rilis di lingkungan RAD
sumber
Kami memiliki mesin pengembang kami diatur untuk membangun build debug. Tapi begitu devs melakukan kode, paket penerapan dibuat di lingkungan integrasi berkelanjutan kami (TeamCity) dan yang dibangun untuk rilis. Jadi, setiap kali kami memutuskan untuk menyebarkan ke QA, kami mengambil paket penerapan terbaru dari server CI dan mendorongnya keluar, sehingga selalu dirilis kecuali ada di mesin dev.
BTW, untuk beberapa bahasa, bahkan ketika membangun untuk rilis, Anda masih bisa membuat simbol debug. Di .NET, misalnya, ada pengaturan "pdb-only" yang memungkinkan untuk optimasi tetapi masih membuat file debug. Jelas debugging terhadap versi rilis lebih sulit karena tidak setara baris-ke-baris, tetapi masih bisa membantu dalam keadaan darurat.
sumber