Nếu tôi định đưa một chương trình vào sản xuất, có một số điều tôi cần chương trình đó làm để coi nó đã "hoạt động" - nghĩa là, cả kỹ sư và nhân viên vận hành đang chạy và bảo trì theo cách có thể đo lường và kiểm chứng được. Đối với mục đích của tôi, một chương trình đã hoạt động phải:
- Có thể đăng nhập ở nhiều cấp độ (ví dụ: gỡ lỗi, cảnh báo, v.v.).
- Có thể thu thập và chia sẻ các số liệu / thống kê về các loại công việc mà chương trình đang thực hiện và thời gian thực hiện công việc đó. Lý tưởng nhất là các chỉ số được thu thập có sẵn ở định dạng tương thích với các công cụ giám sát thường được sử dụng như Ganglia hoặc có thể được trộn lẫn như vậy.
- Có thể định cấu hình, lý tưởng nhất là thông qua một hệ thống cho phép cập nhật các thuộc tính đã cấu hình trong các chương trình đang chạy mà không cần khởi động lại các chương trình đã nói.
- Có thể triển khai tới các máy chủ từ xa theo cách có thể lặp lại.
Trong thế giới Scala, có những thư viện tốt để xử lý ít nhất ba yêu cầu đầu tiên. Ví dụ:
- Logula để ghi nhật ký.
- Metrics hoặc Ostrich để thu thập và báo cáo các chỉ số.
- Configgy hoặc Fig để cấu hình.
Đối với việc triển khai, một cách tiếp cận được thực hiện trong thế giới Scala là kết hợp mã bytecode và các thư viện bao gồm chương trình của một người với một cái gì đó như assembly-sbt , sau đó đẩy gói kết quả (một "fat JAR") đến các máy chủ từ xa bằng một công cụ như Capistrano thực thi các lệnh song song trên SSH. Đây không phải là vấn đề cần đến các công cụ dành riêng cho ngôn ngữ, nhưng tôi tò mò liệu một công cụ như vậy có tồn tại trong cộng đồng Haskell hay không.
Có lẽ có các thư viện Haskell cung cấp các đặc điểm mà tôi đã mô tả ở trên. Tôi muốn biết thư viện có sẵn nào được coi là "tốt nhất"; nghĩa là, những thứ đã trưởng thành nhất, được duy trì tốt, thường được sử dụng trong cộng đồng Haskell và là mẫu mực của các phương pháp hay nhất của Haskell.
Nếu có bất kỳ thư viện, công cụ hoặc thực hành nào khác xung quanh việc tạo mã Haskell "sẵn sàng sản xuất", tôi cũng muốn biết về những điều đó.