ระหว่างรอรถกลับบ้าน ทำการสรุปสิ่งที่จำเป็นต่อการพัฒนาระบบงาน
แต่ในปัจจุบันเราพยายามแยกระบบงานใหญ่ออกเป็น service เล็ก ๆ
หรือบางคนอาจจะเรียกว่า Microservices
สิ่งที่น่าสนใจคือ ในการพัฒนาระบบงานนั้น
เราต้องคำนึงถึงอะไรบ้าง
Interface สำหรับการเชื่อมต่อกับ service หรือระบบอื่น ๆ
ซึ่งมีหลากหลายมาก ๆ เช่น- JSON
- JSON-RPC
- Thrift
- Protocol Buffers
Pattern หรือรูปแบบที่ระบบงานน่าจะต้องมี
ยิ่งในโลกของ Microservices ยิ่งจำเป็นและมีการพูดคุยกันมา ยกตัวอย่างเช่น- Circuit breaking ถ้าปล่อยให้ผู้ใช้เรียก service ที่ทำงานแย่ ๆ เช่น ทำงานช้า ใช้ memory เยอะ ๆ คงไม่ดีแน่นอน
- Service discovery/registry ถ้ามี service จำนวนมาก ๆ การนำ service เข้าและออก แบบง่าย ๆ น่าจะดีไม่น้อย รวมทั้งสามารถดูได้ด้วยว่ามี service อะไรบ้าง ก็น่าจะแจ่มมาก ๆ คนใช้งาน service ก็มีหาและเชื่อมต่อ service จากที่นี่เลย One Stop Service ชัด ๆ แต่ระวังเรื่อง Single Point of Failure นะ ย้อนกลับไป SOA มันก็คุ้น ๆ นะ
- Health check ในทุก ๆ service หรือทุก ๆ ระบบควรมี health check เสมอ ทั้ง readiness และ liveness
- Timeout ขาดไม่ได้เลย สำหรับการเชื่อมต่อไปยังส่วนต่าง ๆ ซึ่งต้องสามารถ configuration ได้ง่าย ไม่ใช้ไปแก้ไข code ตรง ๆ นะ
- Load balancing สิ่งที่ควรต้องมีในการเรียกใช้ service จาก client ปัจจุบัน Load balance มีอยู่ในฝั่ง client หรือผู้เรียกใช้งานกันแล้ว
- Routing สิ่งที่เราเลือกใช้งานนั้น จำเป้นต้องมีการจัดการ routing ที่ง่ายและยืดหยุ่น ทั้งแบบ static และ dynamic
- Application monitoring ของระบบงาน ในแต่ละ flow และ scenario ในมุมมองของผู้ใช้งานและการทำงานของระบบงาน ไม่ใช่ Server หรือ System monitoring นะ