Bir programı üretime sokacaksam, o programın "operasyonel" olduğunu düşünmek için yapmam gereken birkaç şey var - yani hem mühendisler hem de operasyon personeli tarafından ölçülebilir ve doğrulanabilir bir şekilde çalışıyor ve sürdürülebilir. Benim amaçlarım için, operasyonel hale getirilmiş bir programın:
- Birden çok düzeyde oturum açabilme (ör: hata ayıklama, uyarı vb.).
- Programın yaptığı iş türleri ve bu işin ne kadar sürdüğü ile ilgili ölçümleri / istatistikleri toplayıp paylaşın. İdeal olarak, toplanan ölçümler, Ganglia gibi yaygın olarak kullanılan izleme araçlarıyla uyumlu bir formatta mevcuttur veya bu şekilde kullanılabilir.
- İdeal olarak, çalışan programlarda yapılandırılmış özelliklerin söz konusu programları yeniden başlatmadan güncellenmesine izin veren bir sistem aracılığıyla yapılandırılabilir olun.
- Tekrarlanabilir bir şekilde uzak sunuculara konuşlandırılabilir olun.
Scala dünyasında, en azından ilk üç gereksinimi karşılayan iyi kütüphaneler vardır. Örnekler:
- Günlük kaydı için Logula .
- Metrikleri toplamak ve raporlamak için Metrikler veya Devekuşu .
- Yapılandırma için Configgy veya Fig .
Dağıtıma gelince, Scala dünyasında benimsenen bir yaklaşım, bir kişinin programını oluşturan bayt kodunu ve kitaplıkları assembly-sbt gibi bir şeyle bir araya getirip ardından ortaya çıkan paketi (bir "şişman JAR") Capistrano gibi bir araçla uzak sunuculara göndermektir. SSH üzerinden paralel olarak komutları yürüten. Bu, dile özgü araçları gerektiren bir sorun değil, ancak Haskell topluluğunda böyle bir aracın var olup olmadığını merak ediyorum.
Muhtemelen yukarıda anlattığım özellikleri sağlayan Haskell kitaplıkları vardır. Mevcut kütüphanelerden hangilerinin "en iyi" olarak kabul edildiğini bilmek isterim; yani, en olgun, bakımlı, Haskell topluluğunda yaygın olarak kullanılan ve Haskell'in en iyi uygulamalarının bir örneğidir.
Haskell kodunu "üretime hazır" yapma konusunda başka kitaplıklar, araçlar veya uygulamalar varsa, bunları da bilmek isterim.