如果我要将某个程序投入生产,则需要将该程序做几件事才能使其“可操作”-即,工程师和操作人员都可以以一种可测量且可验证的方式来运行和维护该程序。出于我的目的,已实施的程序必须:
- 能够登录多个级别(例如:调试,警告等)。
- 能够收集和共享有关程序正在执行的工作类型以及该工作需要花费多长时间的度量标准/统计信息。理想情况下,收集的度量可以以与常用的监视工具(例如Ganglia)兼容的格式使用,或者可以被忽略。
- 是可配置的,理想情况下是通过这样的系统进行的:该系统允许更新正在运行的程序中配置的属性,而无需重新启动所述程序。
- 可重复地部署到远程服务器。
在Scala世界中,有很好的库可以处理至少前三个需求。例子:
至于部署,在Scala世界中采取的一种方法是将组成程序的字节码和库与assembly-sbt等捆绑在一起,然后使用Capistrano之类的工具将生成的捆绑(“胖JAR”)推送到远程服务器通过SSH并行执行命令。这不是必须使用特定于语言的工具的问题,但是我很好奇Haskell社区中是否存在这样的工具。
可能有Haskell库提供了我上面描述的特征。我想知道哪些可用的库被认为是“最好的”;也就是说,这是Haskell社区中常用的最成熟,维护最完善的示例,并且是Haskell最佳做法的典范。
如果还有其他使Haskell代码“投入生产”的库,工具或实践,我也很想知道这些。