프로그램을 프로덕션에 적용하려면 프로그램이 "작동"된 것으로 간주하기 위해 수행해야하는 몇 가지 작업이 있습니다. 즉, 엔지니어와 운영 직원 모두가 측정 가능하고 검증 가능한 방식으로 실행하고 유지 관리 할 수 있습니다. 내 목적을 위해 운영 프로그램은 다음을 충족해야합니다.
- 여러 수준에서 로그 할 수 있어야합니다 (예 : 디버그, 경고 등).
- 프로그램이 수행하는 작업 유형과 작업에 걸리는 시간에 대한 메트릭 / 통계를 수집하고 공유 할 수 있습니다. 이상적으로는 수집 된 측정 항목이 Ganglia 와 같이 일반적으로 사용되는 모니터링 도구와 호환되는 형식으로 사용 가능 하거나 그렇게 수정 될 수 있습니다.
- 이상적으로는 실행중인 프로그램에서 구성된 속성을 해당 프로그램을 다시 시작하지 않고도 업데이트 할 수있는 시스템을 통해 구성 할 수 있습니다.
- 반복 가능한 방식으로 원격 서버에 배포 할 수 있습니다.
Scala 세계에는 적어도 처음 세 가지 요구 사항을 처리 할 수있는 좋은 라이브러리가 있습니다. 예 :
배포와 관련하여 Scala 세계에서 취한 한 가지 접근 방식은 assembly-sbt 와 같은 프로그램을 사용하여 프로그램을 구성하는 바이트 코드와 라이브러리를 함께 묶은 다음 Capistrano 와 같은 도구를 사용하여 결과 번들 ( "fat JAR")을 원격 서버에 푸시하는 것입니다. SSH를 통해 병렬로 명령을 실행합니다. 이것은 언어 별 도구를 필요로하는 문제는 아니지만 그러한 도구가 Haskell 커뮤니티에 존재하는지 궁금합니다.
위에서 설명한 특성을 제공하는 Haskell 라이브러리가있을 것입니다. 사용 가능한 라이브러리 중 "최고"로 간주되는 라이브러리를 알고 싶습니다. 즉, 가장 성숙하고 잘 관리되며 Haskell 커뮤니티에서 일반적으로 사용되며 Haskell 모범 사례의 모범입니다.
Haskell 코드를 "프로덕션 준비"로 만드는 것과 관련된 다른 라이브러리, 도구 또는 관행이 있다면 이것에 대해서도 알고 싶습니다.