Microservices มักเป็นตัวเลือกเริ่มต้นที่ผิด กฎทั่วไปคือ**"monolith first"**: เริ่มต้นด้วย monolith ที่มีโครงสร้างดี และดึงบริการออกมาเฉพาะเมื่อคุณมีเหตุผลที่เป็นรูปธรรม
หลีกเลี่ยง microservices เมื่อ
text
✗ Small team — more services than people to run them
✗ Early-stage product — domain boundaries still shifting
✗ No CI/CD, monitoring, or tracing in place
✗ Low traffic — no real scaling pressure
✗ Simple domain — splitting adds cost, not value
ต้นทุนของการแบ่งแบบแต่ (prematurely)
การย้ายการเรียกเมธอด in-process ไปเป็นการเรียกเครือข่ายจะเพิ่มเวลาแฝง โหมดล้มเหลว การทำให้เป็นอนุกรม และหน่วยการปรับใช้ หากขอบเขตผิด คุณจะจ่ายทั้งหมดนี้และ ยังคงต้องปรับโครงสร้างข้ามบริการ
text
method call → microseconds, can't fail
network call → milliseconds, can time out, can be down
