Se ho intenzione di mettere un programma in produzione, ci sono diverse cose che devo fare per poterlo considerare "reso operativo", ovvero funzionante e gestibile in modo misurabile e verificabile sia dagli ingegneri che dal personale operativo. Per i miei scopi, un programma operazionalizzato deve:
- Essere in grado di accedere a più livelli (es: debug, avviso, ecc.).
- Essere in grado di raccogliere e condividere metriche / statistiche sui tipi di lavoro che il programma sta svolgendo e sulla durata del lavoro. Idealmente, le metriche raccolte sono disponibili in un formato compatibile con strumenti di monitoraggio di uso comune come Ganglia , o possono essere modificate.
- Essere configurabile, idealmente tramite un sistema che consente di aggiornare le proprietà configurate nei programmi in esecuzione senza riavviare tali programmi.
- Essere distribuibile su server remoti in modo ripetibile.
Nel mondo Scala esistono delle buone librerie per gestire almeno i primi tre requisiti. Esempi:
- Logula per la registrazione.
- Metriche o struzzo per raccogliere e generare rapporti sulle metriche.
- Configgy o Fig per la configurazione.
Per quanto riguarda la distribuzione, un approccio adottato nel mondo Scala è quello di raggruppare il bytecode e le librerie che compongono il proprio programma con qualcosa come assembly-sbt , quindi inviare il bundle risultante (un "fat JAR") a server remoti con uno strumento come Capistrano che esegue comandi in parallelo su SSH. Questo non è un problema che richiede strumenti specifici per la lingua, ma sono curioso di sapere se tale strumento esiste nella comunità Haskell.
Probabilmente ci sono librerie Haskell che forniscono i tratti che ho descritto sopra. Vorrei sapere quali delle librerie disponibili sono considerate "migliori"; ovvero, che sono i più maturi, ben tenuti, comunemente utilizzati nella comunità Haskell ed esemplari delle migliori pratiche Haskell.
Se ci sono altre librerie, strumenti o pratiche per rendere il codice Haskell "pronto per la produzione", mi piacerebbe sapere anche di quelli.