ว่าง ๆ มาดู Service architecture ของ SoundCloud กันหน่อย
โดยที่มีการปรับปรุงมาอย่างต่อเนื่อง
พยายามที่จะแก้ไขปัญหาต่าง ๆ ที่พบเจอ
เพื่อช่วยให้ส่งมอบและดูแลระบบงานได้ดียิ่งขึ้น
เป็นการเดินทางที่น่าสนใจ

ทาง SoundCloud แบ่ง service ออกเป็น 3 กลุ่ม

  • Edge service จะเป็นพวก API gateway และ BFF (Backend For Frontend) สำหรับทำงานตามความต้องการจากฝั่งผู้ใช้งาน
  • Value-Added service (VAS) เป็น layer ตรงกลางที่นำข้อมูลจาก service ต่าง ๆ มาประมวลผล หรือ aggregation/orchestrate layer เพื่อให้เหมาะสมต่อผู้ใช้งานนั้น ๆ เป็น service ที่มีความเฉพาะเจาะจงต่อ business domain นั้น ๆ
  • Foundation service เป็น low-level services ที่ทำงานเฉพาะเจาะจงไปเลย มีหน้าที่รับชอบหนึ่ง ๆ ไปเลย เกิดมาเพื่อการ reuse โดยเฉพาะ

แสดงดังรูป

เป้าหมายหลัก ๆ ของการแบ่งตามนี้คือ แยกการทำงานออกตามหน้าที่อย่างชัดเจน

รวมทั้งช่วยเพิ่ม productivity ของการส่งมอบระบบงานอีกด้วย
แน่นอนว่า มันก็มีข้อเสียเช่นกัน ประกอบไปด้วย

  • การเพิ่ม layer ใหม่ขึ้นมา ก็คือความซับซ้อน และ ค่าใช้จ่ายในการดูแลรักษาที่เพิ่มขึ้น รวมทั้ง infrastructure ที่เพิ่มขึ้น monitoring ที่เพิ่มขึ้น
  • เป็นการเพิ่ม network latency อีกด้วย
  • อาจจะก่อให้เกิดการเรียก service มั่วไปหมดได้ หรือเกิด depednency hell นั่นเอง