อ่านบทความเรื่องของ Slack’s Migration to a Cellular Architecture
ซึ่งทางระบบของ Slack ทำการ migrate architecture ของระบบ
มาใช้ cell-based architecture เป็นอีกหนึ่ง architecture pattern
โดยอธิบายรายละเอียดจาก AWS นั่นเอง
มีเป้าหมายเพื่อ

  • รองรับผู้ใช้งานจำนวนสูง
  • ในมุมมองของผู้ใช้งานหรือลูกค้า ระบบต้องสามารถใช้งานได้ตลอดเวลา
  • ถ้าระบบมีปัญหาขึ้นมา ต้องสามารถเกิดผลกระทบในกรอบที่จำกัดเท่านั้น ไม่ใช่พังทั้งระบบ (Isolated failure)

เป้าหมายหลัก ๆ ของ Slack นั้น ทำการ migrate เฉพาะ service ที่สำคัญ ๆ เท่านั้น

ทำการย้ายจาก monolith มายัง cell-based architecture
แน่นอนว่า แนวคิดนี้มีทั้งข้อดีและข้อเสียที่ต้องทำความเข้าใจ

มาทำความรู้จักกับ component ต่าง ๆ ของ cell-based architecture

  • Cell คือส่วนการทำงานหลัก โดยในแต่ละ cell จะทำงานจบในตัวเอง เป็นอิสระ ทั้งข้อมูล การพัฒนา การ deploy การ monitor/observe รวมทั้ง resource ต่าง ๆ ที่ใช้งาน ใน cell จะมี service ที่จำเป็นต่อการใช้งานใน cell ไปเลย
  • Interface คือ ช่องทางการติดต่อของแต่ละ cell ทั้งขาเข้าและออก
  • Inter-cell component สำหรับการติดต่อสื่อสารกับ cell จำนวนมาก เช่น Router, Load balance และ Messaging เป็นต้น

เมื่อทำตามนี้แล้วจะได้ระบบตามที่ต้องการข้างต้น
ทั้ง scalability, performance และ resilience
รวมทั้งขอบเขตของปัญหาและการทดสอบก็เล็กลง

แต่ก่อให้เกิดปัญหาตามมาเช่นกัน

  • ความซับซ้อนในการสร้างและจัดการ อย่าลืมว่า แต่ละ cell ต้องมี redundant ด้วยนะ (ทั้งใน zone และต่าง zone)
  • เพิ่ม overhead ของระบบงาน รวมทั้งค่าใช้จ่ายของ resource ที่ใช้งาน เพราะว่าต้องแยกเป็นอิสระต่อกัน

อีกทั้งเรื่องของการ Isolate หรือแยกกันนั้น
ต้องดูให้ครบทุกมุมมองว่าจะ Isolate แบบไหนบ้าง เช่น

  • Physical
  • Virtual
  • Process
  • Network

จะเห็นได้ว่าทุก ๆ pattern นั้นล้วนมีข้อดีและข้อเสีย

เลือกใช้ให้เหมาะกับงาน หรือ requirement ด้วยเสมอ
อย่าลืมว่า เรานำมาใช้งานเพื่อแก้ไขปัญหา หรือ ต้องมีประโยชน์นะครับ !!!

ระวังปัญหาที่อาจจะเกิดขึ้นจาก gap ระหว่าง business, architecture, development และ deployment
อย่าให้เป็นดังรูป

Reference Websites