การออกแบบและการใช้งานการรองรับข้อบกพร่องในระบบขณะปฏิบัติงาน (fault tolerance) เกี่ยวข้องกับแนวทางปฏิบัติและเทคนิคหลายอย่างเพื่อให้แน่ใจว่าระบบสามารถทำงานต่อไปได้อย่างเหมาะสมแม้ในกรณีที่เกิดข้อผิดพลาด ต่อไปนี้คือข้อควรพิจารณาเกี่ยวกับการออกแบบและแนวทางปฏิบัติทั่วไปบางประการเพื่อรองรับการยอมรับข้อผิดพลาด
Redundancy: เป็นการทำสิ่งที่ซ้ำซ้อนในระดับต่างๆ ของระบบเพื่อลดผลกระทบจากความล้มเหลว ซึ่งอาจรวมถึงความซ้ำซ้อนของฮาร์ดแวร์ (เช่น การใช้เซิร์ฟเวอร์หรือดิสก์อาร์เรย์หลายตัว) ความซ้ำซ้อนของซอฟต์แวร์ (การปรับใช้หลายอินสแตนซ์ของแอปพลิเคชัน) และความซ้ำซ้อนของข้อมูล
Replication: เป็นการจำลองส่วนประกอบหรือข้อมูลที่สำคัญไปยังหลายๆสถานที่หรือเซิร์ฟเวอร์หลายๆแห่ง การเก็บสำเนาไว้หลายชุดจะทำให้ระบบสามารถทำงานต่อไปได้แม้ว่าสำเนาชุดใดชุดหนึ่งจะไม่สามารถใช้งานได้ เทคนิคต่างๆ เช่น การจำลองแบบแบบแอคทีฟ-พาสซีฟหรือการจำลองแบบแบบแอ็คทีฟ-แอ็คทีฟ สามารถถูกปรับใช้ได้โดยขึ้นอยู่กับความต้องการและข้อดี/ข้อด้อยของการจำลองแต่ละแบบ
Monitoring and Failure Detection: กำหนดกลไกการตรวจสอบที่มีประสิทธิภาพเพื่อตรวจจับความล้มเหลวในระบบ ซึ่งรวมถึงการทำ health check และ heartbeat mechanisms และการตรวจสอบสถานะต่างๆของส่วนประกอบต่างๆ ของระบบ เมื่อตรวจพบความล้มเหลวระบบจะสามารถดำเนินการที่เหมาะสมเพื่อจัดการกับความล้มเหลวได้
Failure Recovery: กำหนดกลยุทธ์และกลไกในการกู้คืนจากความล้มเหลว สิ่งนี้อาจเกี่ยวข้องกับการเฟลโอเวอร์โดยอัตโนมัติไปยังส่วนประกอบหรือระบบที่ทำซ้ำซ้อนไว้ การซิงโครไนซ์ข้อมูลหรือการซิงโครไนซ์ซ้ำหลังจากเกิดความล้มเหลว และความสามารถในการกู้คืนสถานะระบบเป็นสถานะที่สอดคล้องกัน (consistency state)
Load Balancing: กระจายปริมาณงานไปยังทรัพยากรต่างๆ เพื่อป้องกันการโอเวอร์โหลดและซึ่งเป็นทำให้ความทนทานต่อข้อผิดพลาดดีขึ้น กลไกการจัดสรรภาระงานสามารถกระจายคำขอหรืองานไปยังส่วนประกอบที่ทำซ้ำซ้อนไว้ เพื่อให้มั่นใจว่าแม้ส่วนประกอบหนึ่งจะล้มเหลว ส่วนประกอบที่เหลือก็สามารถจัดการกับภาระงานได้
Graceful Degradation: ออกแบบระบบเพื่อลดการทำงานหรือประสิทธิภาพของระบบในกรณีที่เกิดข้อผิดพลาด ซึ่งหมายความว่าแม้ว่าส่วนประกอบบางอย่างจะไม่พร้อมใช้งาน ระบบยังสามารถให้บริการในระดับที่ลดลงหรือทำงานในโหมดที่ลดลงแทนที่จะล้มเหลวโดยสิ้นเชิง
Error Handling and Fault Isolation: ใช้กลไกการจัดการข้อผิดพลาดที่มีประสิทธิภาพและแยกข้อผิดพลาดเพื่อป้องกันผลกระทบจากความล้มเหลวขององค์ประกอบหนึ่งที่จะส่งผลกระทบต่อระบบทั้งหมด เทคนิคต่างๆ เช่น การบันทึกข้อผิดพลาด (error logging) การจัดการข้อผิดพลาด (exception handling) และการห่อหุ้ม (encapsulation) ส่วนประกอบที่เหมาะสมสามารถช่วยในการแยกข้อผิดพลาดและลดผลกระทบให้เหลือน้อยที่สุด
Testing and Simulation: ทำการทดสอบอย่างละเอียด รวมถึงการแทรกข้อผิดพลาดและการจำลองสถานการณ์ความล้มเหลว เพื่อตรวจสอบความถูกต้องของกลไกการยอมรับข้อผิดพลาด สิ่งนี้ช่วยระบุจุดอ่อนหรือช่องโหว่ที่อาจเกิดขึ้นในการออกแบบระบบและช่วยให้สามารถปรับปรุงได้ก่อนที่จะปรับใช้
แนวทางปฏิบัติเหล่านี้ เมื่อนำไปใช้อย่างเหมาะสมในระหว่างขั้นตอนการออกแบบและการใช้งาน สามารถช่วยให้แน่ใจว่าระบบจะทนทานต่อความล้มเหลวและสามารถทำงานต่อไปได้อย่างมีประสิทธิภาพแม้เผชิญกับเหตุการณ์ที่ไม่คาดคิด