Jika saya akan memasukkan sebuah program ke dalam produksi, ada beberapa hal yang saya perlu program itu lakukan untuk menganggapnya "dioperasionalkan" - yaitu, berjalan dan dapat dipelihara dengan cara yang terukur dan dapat diverifikasi oleh insinyur dan staf operasi. Untuk tujuan saya, program yang dioperasionalkan harus:
- Mampu masuk di berbagai level (mis: debug, peringatan, dll.).
- Mampu mengumpulkan dan berbagi metrik / statistik tentang jenis pekerjaan yang dilakukan program dan berapa lama waktu yang dibutuhkan untuk pekerjaan itu. Idealnya, metrik yang dikumpulkan tersedia dalam format yang kompatibel dengan alat pemantauan yang umum digunakan seperti Ganglia , atau bisa sangat disesuaikan.
- Dapat dikonfigurasi, idealnya melalui sistem yang memungkinkan properti yang dikonfigurasi dalam menjalankan program diperbarui tanpa memulai ulang program tersebut.
- Dapat diterapkan ke server jarak jauh dengan cara yang berulang.
Di dunia Scala, ada perpustakaan yang bagus untuk menangani setidaknya tiga persyaratan pertama. Contoh:
- Logula untuk penebangan.
- Metrik atau Burung Unta untuk mengumpulkan dan melaporkan metrik.
- Configgy atau Fig untuk konfigurasi.
Adapun penerapan, salah satu pendekatan yang diambil di dunia Scala adalah menggabungkan bersama bytecode dan pustaka yang membentuk program seseorang dengan sesuatu seperti assembly-sbt , lalu mendorong bundel yang dihasilkan ("JAR gemuk") ke server jarak jauh dengan alat seperti Capistrano yang menjalankan perintah secara paralel melalui SSH. Ini bukan masalah yang memerlukan alat khusus bahasa, tapi saya penasaran apakah alat semacam itu ada di komunitas Haskell.
Mungkin ada perpustakaan Haskell yang menyediakan ciri-ciri yang saya jelaskan di atas. Saya ingin tahu perpustakaan mana yang dianggap "terbaik"; yaitu, yang paling matang, terpelihara dengan baik, biasa digunakan dalam komunitas Haskell, dan contoh praktik terbaik Haskell.
Jika ada pustaka, alat, atau praktik lain seputar pembuatan kode Haskell "siap produksi", saya juga ingin mengetahuinya.