Wenn ich ein Programm in Produktion nehmen will, muss dieses Programm einige Dinge tun, um es als "operationalisiert" zu betrachten - das heißt, es kann sowohl von Ingenieuren als auch von Betriebspersonal messbar und überprüfbar ausgeführt und gewartet werden. Für meine Zwecke muss ein operationalisiertes Programm:
- Sie können auf mehreren Ebenen protokollieren (z. B. Debugging, Warnung usw.).
- Sie können Metriken / Statistiken über die Art der Arbeit des Programms und die Dauer dieser Arbeit sammeln und austauschen. Im Idealfall sind die gesammelten Metriken in einem Format verfügbar, das mit häufig verwendeten Überwachungstools wie Ganglia kompatibel ist oder so munged werden kann.
- Konfigurierbar sein, idealerweise über ein System, mit dem konfigurierte Eigenschaften in laufenden Programmen aktualisiert werden können, ohne die Programme neu zu starten.
- Bereitstellbar auf Remote-Servern auf wiederholbare Weise.
In der Scala-Welt gibt es gute Bibliotheken, um mindestens die ersten drei Anforderungen zu erfüllen. Beispiele:
- Logula für die Protokollierung.
- Metriken oder Strauß zum Sammeln und Berichten von Metriken.
- Configgy oder Fig zur Konfiguration.
Bei der Bereitstellung besteht ein Ansatz in der Scala-Welt darin, den Bytecode und die Bibliotheken, aus denen das Programm besteht, mit Assembly-sbt zu bündeln und das resultierende Bundle (eine "fette JAR") mit einem Tool wie Capistrano auf Remote-Server zu übertragen das führt Befehle parallel über SSH aus. Dies ist kein Problem, das sprachspezifische Tools erfordert, aber ich bin gespannt, ob es ein solches Tool in der Haskell-Community gibt.
Es gibt wahrscheinlich Haskell-Bibliotheken, die die oben beschriebenen Merkmale aufweisen. Ich würde gerne wissen, welche der verfügbaren Bibliotheken als "am besten" gelten. Das heißt, diese sind am ausgereiftesten, am besten gepflegt, werden häufig in der Haskell-Community verwendet und sind beispielhaft für die Best Practices von Haskell.
Wenn es andere Bibliotheken, Tools oder Methoden gibt, mit denen Haskell-Code "produktionsbereit" gemacht werden kann, würde ich gerne auch davon erfahren.