ในช่วงวันหยุดหยิบหนังสือ Release It 2nd edition มาอ่าน
เน้นบทที่ 6 ว่าด้วยเรื่อง Stability Patterns
ซึ่งอธิบายถึงรูปแบบของการวางสถาปัตยกรรมของระบบที่ดี
เป็นแนวทางในการออกแบบระบบ
เพื่อลด ขจัดปัดเป่า จากปัญหาต่าง ๆ ที่อาจจะเกิดขึ้น
หรือลดความอันตรายจากข้อผิดพลาดต่าง ๆ ลงไป
ไม่ใช่ต้องตื่นมากดึก ๆ เพื่อมาแก้ไขระบบ ไม่ใช่ต้องยกเลิกงานทั้งหมด เพื่อมาแก้ไขระบบ ถ้าเป็นแบบนี้คงไม่ต้องทำอะไรกันพอดี !!ดังนั้นมาสร้างระบบดี ๆ กันหน่อย
โดยในหนังสือนั้นมีรูปแบบที่แนะนำมากมาย
ประกอบไปด้วย- Timeout
- Circuit breaker
- Bulkheads
- Steady state
- Failfast
- Let It crash
- Test harnesses
- Decouple middleware
- Shed load
- Create back pressure
- Governor
Timeout
น่าจะเป็นเรื่องปกติ ๆ ที่ใคร ๆ ก็ต้องกำหนด timeout หรือเวลาการรอสิ่งต่าง ๆ ยกตัวอย่างเช่น- การเชื่อมต่อไปยัง service ต่าง ๆ
- การเชื่อมต่อผ่านระบบ network
- การเชื่อมต่อไปยัง remote file system
จากบทความเรื่อง Microservices Aren’t Magic: Handling Timeouts อธิบายเรื่องของ Timeout ได้อย่างน่าสนใจ ลองอ่านเพิ่มเติมได้ถ้าหมดเวลาที่รอแล้วก็จะโยน error ออกมา จากนั้นก็ทำการจัดการหรือ handle ต่อไป ว่าจะทำอย่างไรต่อไป ขึ้นอยู่กับ use case ของการทำงาน เช่น
- แจ้งผู้ใช้งานไปว่าระบบมีความผิดพลาด ให้ลองใหม่
- ระบบทำงาน retry หรือลองทำงานใหม่อีกครั้ง ซึ่งจะมีการกำหนด interval การทำงานหใม่อีกด้วย รวมทั้งมีจำนวนการ retry สูงสุดไว้ด้วย
- การจัดการ connection ต่าง ๆ
- การจัดการความผิดพลาดต่าง ๆ
- การจัดการการดึงข้อมูลจาก database
- การจัดการการประมวลผลที่ใช้เวลานาน ๆ