หากฉันจะนำโปรแกรมไปใช้ในการผลิตมีหลายสิ่งที่ฉันต้องการให้โปรแกรมนั้นทำเพื่อที่จะพิจารณาว่า "ใช้งานได้" นั่นคือการทำงานและบำรุงรักษาด้วยวิธีที่วัดผลได้และตรวจสอบได้โดยทั้งวิศวกรและเจ้าหน้าที่ฝ่ายปฏิบัติการ สำหรับวัตถุประสงค์ของฉันโปรแกรมที่ดำเนินการจะต้อง:
- สามารถบันทึกได้หลายระดับ (เช่นการดีบักคำเตือน ฯลฯ )
- สามารถรวบรวมและแบ่งปันเมตริก / สถิติเกี่ยวกับประเภทของงานที่โปรแกรมกำลังทำและระยะเวลาที่งานนั้นใช้ ตามหลักการแล้วเมตริกที่รวบรวมจะมีอยู่ในรูปแบบที่เข้ากันได้กับเครื่องมือการตรวจสอบที่ใช้กันทั่วไปเช่นGangliaหรืออาจเป็นแบบ munged ก็ได้
- สามารถกำหนดค่าได้โดยดีอย่างยิ่งผ่านระบบที่อนุญาตให้คุณสมบัติที่กำหนดค่าไว้ในโปรแกรมที่รันอยู่เพื่ออัปเดตโดยไม่ต้องรีสตาร์ทโปรแกรมดังกล่าว
- สามารถปรับใช้กับเซิร์ฟเวอร์ระยะไกลด้วยวิธีที่ทำซ้ำได้
ในโลกของ Scala มีห้องสมุดที่ดีสำหรับจัดการกับข้อกำหนดอย่างน้อยสามข้อแรก ตัวอย่าง:
- Logulaสำหรับการบันทึก
- เมตริกหรือนกกระจอกเทศสำหรับรวบรวมและรายงานเมตริก
- ConfiggyหรือFigสำหรับการกำหนดค่า
สำหรับการปรับใช้แนวทางหนึ่งที่ใช้ในโลกของ Scala คือการรวมไบต์โค้ดและไลบรารีที่ประกอบด้วยโปรแกรมของตนเข้าด้วยกันเช่นแอสเซมบลี - sbtจากนั้นดันบันเดิลผลลัพธ์ ("fat JAR") ไปยังเซิร์ฟเวอร์ระยะไกลด้วยเครื่องมือเช่นCapistranoที่รันคำสั่งแบบขนานบน SSH นี่ไม่ใช่ปัญหาที่จำเป็นต้องใช้เครื่องมือเฉพาะภาษา แต่ฉันสงสัยว่ามีเครื่องมือดังกล่าวอยู่ในชุมชน Haskell หรือไม่
อาจมีห้องสมุดของ Haskell ที่มีลักษณะที่ฉันได้อธิบายไว้ข้างต้น ฉันต้องการทราบว่าห้องสมุดใดที่มีให้บริการ "ดีที่สุด" นั่นคือซึ่งเป็นผู้ใหญ่มากที่สุดได้รับการดูแลอย่างดีมักใช้ในชุมชน Haskell และเป็นตัวอย่างของแนวทางปฏิบัติที่ดีที่สุดของ Haskell
หากมีไลบรารีเครื่องมือหรือแนวทางปฏิบัติอื่น ๆ เกี่ยวกับการสร้างโค้ด Haskell "พร้อมใช้งานจริง" ฉันก็อยากทราบข้อมูลเหล่านี้เช่นกัน