จากบทความเรื่อง Law of Demeter (LoD) ในการเขียน code นั้น
เพื่อช่วยลด coupling ระหว่าง class
หรือเป็นแนวคิดที่ช่วยให้เรามีความรู้เกี่ยวกับปลายทางที่จะเรียกให้น้อยลง
ทำให้มีอิสระมากยิ่งขึ้น

โดยถ้าเรานำแนวคิดนี้ มาใช้กับการแยก service ด้วย
ก็น่าจะได้ผลดีเช่นกันนะ

ยกตัวอย่างเช่น

เรื่องแรก แต่ละ service ควรมีข้อมูลที่จะใช้เป็นของตัวเอง

ไม่ให้ใครมาใช้งานตรง ๆ
หรือไม่ไปดึงข้อมูลจาก service มาใช้งานทุกครั้ง
มองเป็นเรื่องของ local data ให้มากขึ้น
ก็น่าจะช่วยเพิ่มความรวดเร็วในการทำงาน
และเป็นอิสระจาก service อื่น ๆ มากขึ้น
ทำให้ scale และ deploy ง่ายขึ้นอีก

เรื่องที่สอง ถ้าแต่ละ service ต้องใช้ข้อมูลจาก service อื่น ๆ ก็ควรมี interface ให้ใช้งาน

ไม่ว่างจะเป็น REST API, gRPC, messsaging หรือ protocol อื่น ๆ
เพื่อซ่อนการทำงานหรือข้อมูลภายในไว้
จะช่วยให้ระหว่าง consumer และ provider เป็นอิสระแก่กัน
แต่ก็ต้องระวังเรื่องการเปลี่ยนแปลงรูปแบบข้อมูลที่ตกลงกันไว้
ดังนั้นเรื่อง compatability ก็สำคัญมาก ๆ

หรืออาจจะต้องเรื่องของ validate schema ข้อข้อมูลเอาไว้ด้วย

เรื่องที่สาม แต่ละ service จะติดต่อกัน ก็ไม่ควรเรียกกันตรง ๆ

ดังนั้นเพื่อลดการผูกมัด ควรใช้งาน service discovery/registry เข้ามาช่วย
ทำให้เรียกใช้งานผ่านชื่อ ส่วนที่อยู่จริง ๆ สามารถเปลี่ยนได้ง่าย
โดยไม่กกระทบต่อผู้ใช้งาน

หรือถ้าต้องการลดข้อผู้มัดไปอีก ก็ไปทาง event-based ไปเลย
โดยฝั่ง provider ก็ไม่รู้ด้วยว่าฝั่ง consumer มีใครบ้าง
ยิ่งทำให้เป็นอิสระต่อกันมากยิ่งขึ้น
แต่ก็ตามมาด้วยระบบ observability ที่ดีด้วย
มีได้ก็ต้องมีเสีย

จะเห็นได้ว่า เราเน้นไปที่ความเป็นอิสระต่อกัน

เพื่อให้พัฒนา ทดสอบ deploy scale และ maintain ได้ง่าย
รวมไปถึงเรื่อง resielince ของระบบด้วย
แต่ไม่ใช่จะแยก service เสมอไปนะ
ต้องดูการทำงานใช้งานด้วยว่า เป็นแบบใด
แยกมาก ๆ อาจจะแย่ก็ได้ ตรงนี้ต้องระมัดระวัง

หรือแทนที่จะเรียกต่อกันยาว ๆ
อาจจะใช้แนวคิด composition ก็ได้
มีหลายแนวทางที่น่าสนใจ