จากเรื่อง Fallacies of distributed computing นั้น
ซึ่งอธิบาย 8(7+1) ข้อ ของเรื่องเข้าใจผิดเกี่ยวกับระบบ Distributed
มาดูในข้อแรกกันคือ The network is reliable (ความน่าเชื่อถือ)
ว่าเป็นอย่างไร มีปัญหาอะไร และ วิธีการแก้ไขทำอย่างไรบ้าง ?
มาเริ่มกันเลย

ระบบ network นั้นเกิดมาเพื่อพร้อมพังได้เสมอ
ยิ่งระบบงานมีการแบ่งแยกการทำงานต่าง ๆ ออกมา
แล้วต้องติดต่อสื่อสารกัน เช่น

  • Frontend
  • Backend
  • Service ต่าง ๆ
  • Database
  • Caching

ปัญหาที่สามารถเกิดขึ้นได้ประกอบไปด้วย

  • ปัญหาทางด้าน hardware
  • ปัญหาทางด้าน software
  • ปัญหาทางด้าน security
  • ปัญหาของ environment ต่าง ๆ
  • ปัญหาจากการโดนโจมตีระบบ

ดังนั้นในการออกแและพัฒนาระบบ รวมทั้งการทดสอบ
จำเป็นต้องวางแผนเพื่อรองรับมือปัญหาที่อาจจะเกิดขึ้น
เพื่อทำให้ระบบทำงานได้อย่างถูกต้อง และ มีความน่าเชื่อถือที่สูงขึ้น

ตัวอย่างของวิธีการแก้ไขหรือรับมือ เช่น

  • Timeout
  • Retry พร้อมกับ indempotent
  • Circuite breaker
  • Rate limit
  • ถ้าเป็นระบบ queue ก็ต้องจัดการเรื่อง acknowledge ระหว่าง producer และ consumer ให้ดี หรือต้องจัดการพวก Dead letter queue เพื่อการันตีว่า message ต่าง ๆ สามารถส่งและรับได้อย่างถูกต้อง

ลองดูว่าระบบงานที่เราออกแบบได้วางแผนเรื่องเหล่านี้ไว้หรือไม่ ?