Если я собираюсь запустить программу в производство, мне нужно, чтобы эта программа сделала несколько вещей, чтобы считать ее «введенной в действие», то есть запустить и поддерживать измеримым и проверяемым образом как инженерами, так и оперативным персоналом. Для моих целей действующая программа должна:
- Уметь вести журнал на нескольких уровнях (например, отладка, предупреждение и т. Д.).
- Уметь собирать и обмениваться метриками / статистикой о типах работы, которую выполняет программа, и о том, сколько времени она занимает. В идеале собранные метрики доступны в формате, совместимом с широко используемыми инструментами мониторинга, такими как Ganglia , или могут быть изменены.
- Быть настраиваемым, в идеале через систему, которая позволяет обновлять настроенные свойства в запущенных программах без перезапуска указанных программ.
- Возможность повторного развертывания на удаленных серверах.
В мире Scala есть хорошие библиотеки для выполнения хотя бы первых трех требований. Примеры:
- Логула для вырубки.
- Метрики или Страус для сбора и отчетности по метрикам.
- Configgy или рис для настройки.
Что касается развертывания, один из подходов, принятых в мире Scala, состоит в том, чтобы связать вместе байт-код и библиотеки, составляющие вашу программу, с чем-то вроде assembly-sbt , а затем отправить полученный пакет («толстый JAR») на удаленные серверы с помощью такого инструмента, как Capistrano. который выполняет команды параллельно через SSH. Это не проблема, для решения которой требуются инструменты, специфичные для языка, но мне любопытно, существует ли такой инструмент в сообществе Haskell.
Вероятно, существуют библиотеки Haskell, которые предоставляют свойства, которые я описал выше. Я хотел бы знать, какие из доступных библиотек считаются «лучшими»; то есть наиболее зрелые, хорошо поддерживаемые, обычно используемые в сообществе Haskell и являющиеся образцом лучших практик Haskell.
Если есть какие-либо другие библиотеки, инструменты или методы, позволяющие сделать код Haskell «готовым к производству», я бы тоже хотел узнать о них.