สรุปเรื่อง Distributed system

เพื่อให้มีความน่าเชื่อถือ

  • ลดการติดต่อสื่อสารภายใน หรือลด hop ของการทำงานให้เหลือเท่าที่จำเป็น
  • ลด data ที่ซ้ำซ้อนลง เพราะว่า ยิ่งมี data ที่ซ้ำซ้อนให้ลงมากเท่าไร การแก้ไขหรือ overhead ในการจัดการก็น้อยลง
  • ก่อนที่จะแยก service ออกจากกัน ลองดูก่อนว่า สามารถทำเป็น library ได้ไหม ดังนั้นแทนที่จะทำงานแบบ remote ให้เป็น local ก่อนดีกว่าไหม ตรงนี้น่าคิด
  • เรื่องของปัญหา นั่นคือถ้าบาง service มีปัญหา แล้วส่งผลต่อระบบอื่น ๆ มีปัญหาไปด้วย เราเรียกว่า cascade failure ดังนั้นเราต้องจัดการเรื่องนี้ด้วย หรือเรียกว่า isolate failure/error ให้ได้ ยกตัวอย่าง pattern ในการแก้ไขเช่น circuit breaker, bulkhead, timeout และ retry เป็นต้น
  • บาง service ถูกใช้งานเยอะ ๆ ก็ทำให้เกิดปัญหาด้วยเช่นกัน ดังนั้นต้องป้องกันอีก ไม่ว่าจะเป็นเรื่องของ backpressure, shard loading ไปจนถึงเรื่องการทำ caching รวมถึงการติดต่อสื่อสารจาก sync มาเป็น async อีก แล้วจะทำการการ scale มันยืดหยุ่นมากยิ่งขึ้น

ดังนั้นในการ design, develop และ deploy จึงต้องให้ความสำคัญกับเรื่องเหล่านี้เป็นอย่างมาก

0
173