[Logging] 프로그램을 운영하기위한 최선의 하스켈 도서관은 무엇입니까?


Answers

  • 구성과 관련하여 ConfigFile이 내 프로젝트에 유용하다는 것을 알았습니다. 나는 그것을 생산할 때 모든 데몬에 사용한다. 자동으로 업데이트되지 않습니다.
  • 나는 환경 (지역, 개발, 동료 - 지역)에 걸쳐 재현 가능한 빌드를 만들기 위해 cabal-dev를 사용합니다. 정말 cabal-dev는 특히 프로젝트 디렉토리 내에서 라이브러리의 패치 된 로컬 버전을 지원할 수있는 능력 때문에 없어서는 안될 필수 요소입니다.
  • 가치가있는 것을 위해, 나는 xmonad 스타일의 상태 재로드와 함께 갈 것이다. 하스켈의 순도는 이것을 사소한 것으로 만든다. 마이그레이션은 문제이지만 어쨌든입니다. 나는 hsplugins와 IRCd에 대한 힌트를 실험했으며, 전자의 경우에는 GHC 런타임 문제가 있었고, 후자에서는 세그먼트 오류가있었습니다. 나중에 포스트 모템을 위해 Github에 지점을 남겼습니다. https://github.com/chrisdone/hulk

ConfigFile 예제 :

# Default options
[DEFAULT]
hostname: localhost
# Options for the first file
[file1]
location: /usr/local
user: Fred
Question

프로그램을 프로덕션에 적용하려면 엔지니어와 운영 직원이 측정 가능하고 검증 가능한 방식으로 실행 및 유지 관리 할 수있는 "조작 된"시스템을 고려해야 할 몇 가지 사항이 있습니다. 제 목적을 위해 운영 프로그램은 다음을 수행해야합니다.

  • 여러 수준에서 로그 할 수 있어야합니다 (예 : 디버그, 경고 등).
  • 프로그램이 수행하는 작업 유형 및 그 작업이 얼마나 오래 걸리는지에 대한 통계 / 통계를 수집하고 공유 할 수 있습니다. 이상적으로, 수집 된 메트릭은 Ganglia 와 같이 일반적으로 사용되는 모니터링 도구와 호환되는 형식으로 사용할 수 있거나 매우 혼란 스러울 수 있습니다.
  • 이상적으로는 실행중인 프로그램의 구성 속성이 해당 프로그램을 다시 시작하지 않고도 업데이트되도록 허용하는 시스템을 통해 구성 가능해야합니다.
  • 원격 서버에 반복적으로 배치 할 수 있습니다.

스칼라 세계에는 최소한 처음 세 가지 요구 사항을 처리 할 수있는 훌륭한 라이브러리가 있습니다. 예 :

배치에 관해서, 스칼라 세계에서 취해지는 한 가지 접근법은 assembly-sbt 프로그램과 같은 바이트 코드와 라이브러리를 함께 묶어서 assembly-sbt 와 같은 도구를 사용하여 결과 서버 번들 ( "fat JAR")을 원격 서버에 푸시하는 것입니다 SSH를 통해 병렬로 명령을 실행합니다. 이것은 언어 별 도구가 필요한 문제는 아니지만 하스켈 커뮤니티에 그러한 도구가 있는지 궁금합니다.

위에서 설명한 특성을 제공하는 Haskell 라이브러리가있을 것입니다. 사용 가능한 라이브러리 중 "가장 좋은"라이브러리로 알고 싶습니다. 즉, 가장 성숙하고 유지 관리가 잘되며 하스켈 지역 사회에서 일반적으로 사용되고 하스켈 모범 사례의 모범이됩니다.

Haskell 코드를 "제작 준비"로 만드는 데있어 다른 라이브러리, 도구 또는 관행이있는 경우 해당 라이브러리에 대해서도 알고 싶습니다.