ระบบ Multi-Tenancy คืออะไร — ทุกสิ่งที่ Developer ต้องรู้เกี่ยวกับ SaaS Architecture

$ ./run-saas.sh
> Initializing multi-tenant architecture...
> ✓ 1 instance, 500 tenants, $0.02/tenant/hour
> System ready.

สวัสดีครับ Developer ทุกคน! ถ้าคุณกำลังสร้าง SaaS หรือกำลังวางแผนว่าจะสร้าง คำว่า “Multi-Tenancy” น่าจะเคยผ่านหูมาบ้าง แต่มันคืออะไรกันแน่? ทำไม SaaS ทุกตัวต้องพูดถึงมัน? บทความนี้จะพาคุณเข้าใจทุกอย่างตั้งแต่พื้นฐานจนถึงการ implement จริง


Multi-Tenancy คืออะไร?

Multi-Tenancy คือ architecture ที่ software instance เดียวสามารถให้บริการลูกค้าหลายคน (หลาย “tenant”) ได้พร้อมกัน โดยแต่ละ tenant จะรู้สึกเหมือนใช้ระบบแยกตัวเองโดยสมบูรณ์

ทำไมถึงเรียกว่า “Multi”?

ลองนึกภาพ อพาร์ตเมนต์ ครับ — อาคารหนึ่งหลัง แต่มีห้องหลายห้อง แต่ละห้องมี:

Multi-Tenancy Apartment Building Diagram
  • ประตูล็อกแยกกัน (ข้อมูลไม่ปนกัน)
  • เคาน์เตอร์น้ำค่าใช้จ่ายแยกกัน (billing แยก)
  • ตู้จดหมายแยกกัน (notification แยก)

แต่ทุกห้องใช้:

  • กลอนประตูรวม (codebase เดียว)
  • ส่วนกลาง (infrastructure รวม)
  • พนักงานอาคารเดียวกัน (maintenance team)

Tenant คืออะไร?

Tenant = ลูกค้า/องค์กร ที่ใช้บริการของคุณ ไม่ใช่ user แต่ละคนนะครับ

ยกตัวอย่าง:

  • บริษัท ABC ใช้ระบบ CRM ของเรา → ABC คือ 1 tenant
  • ภายใน ABC มีพนักงาน 50 คน → 50 users แต่เป็น tenant เดียว

💡 สำคัญ: อย่าสับสนระหว่าง “tenant” กับ “user” — tenant คือ entity ที่รวม users เข้าด้วยกัน


Single-Tenancy vs Multi-Tenancy — อะไรคือความต่าง?

Single-Tenancy vs Multi-Tenancy Comparison

Single-Tenancy คือ architecture ที่ใช้ software instance หนึ่งต่อ tenant หนึ่ง — เหมือน บ้านเดี่ยว ที่มีเจ้าของบ้านหนึ่งครอบครองทั้งหลัง

เปรียบเทียบ Side-by-Side

Feature Single-Tenancy Multi-Tenancy
ค่าใช้จ่าย สูงมาก ($100+/เดือน/tenant) ต่ำ ($2-10/เดือน/tenant)
Isolation สมบูรณ์แบบ ขึ้นกับวิธี implement
การบำรุงรักษา ยาก — ต้อง update หลายที่ ง่าย — deploy ครั้งเดียว
Scalability Scale ทั้ง instance Shared resources
Customization ปรับแต่งได้เต็มที่ จำกัดตาม shared config
Compliance ง่าย — isolate สมบูรณ์ ต้องระวังเรื่อง data leak

วิธีแยก Tenants — Architecture Types

Database Level Isolation

Database Isolation Types for Multi-Tenancy

มี 3 วิธีหลักในการแยก tenants ในระดับ database:

  1. Shared Database, Separate Schema — ทุก tenant อยู่ใน DB เดียวกัน แต่ schema ต่างกัน
  2. Shared Database, Shared Schema (ใช้ tenant_id) — ทุก tenant อยู่ใน table เดียวกัน ใช้ tenant_id แยก
  3. Separate Database — แยก DB ต่อ tenant

ทำไมต้องใช้ Multi-Tenancy? — Benefits

  • ลดค่าใช้จ่าย — Shared infrastructure = ค่าใช้จ่ายต่อ tenant ลดลงมหาศาล
  • ขยายระบบง่าย — Horizontal scaling ได้ง่าย เพิ่ม tenant ใหม่ได้เร็ว
  • บริหารจัดการง่าย — Deploy ครั้งเดียว ทุก tenant ได้อัพเดท
  • Faster Time-to-Market — เพิ่มลูกค้าใหม่ได้เร็ว ไม่ต้อง setup infrastructure ใหม่ทุกครั้ง

สรุป — เลือกอย่างไรดี?

Multi-Tenancy = shared resources, cost-effective, scalable, เริ่มต้นที่นี่
Single-Tenancy = dedicated, secure, expensive, สำหรับ enterprise

แนะนำของผม: เริ่มต้นด้วย Multi-Tenancy ก่อน แล้วค่อย migrate เป็น Single-Tenancy สำหรับลูกค้าที่ต้องการ (upsell opportunity!)


บทความนี้เขียนสำหรับ Developer ทุกคนที่อยากเข้าใจ Multi-Tenancy ให้ลึกซึ้งขึ้น ถ้ามีคำถามหรืออยากให้เขียนเรื่องอะไรเพิ่มเติม บอกได้เลยครับ!

เกี่ยวกับผู้เขียน

ITTHIPAT

สวัสดีครับผม อิทธิพัทธ์ (เป้) ชอบหาเทคนิคต่างๆที่ทำให้ชีวิต Programmer ง่ายขึ้น ทั้ง Automate, Library ชอบทำ Blog และ Video ถ้ามีเวลานะ!

ขอบคุณทุกคนที่ติดตาม และอ่านบทความของผมครับ ผมหวังว่าความรู้ที่เขียนขึ้นในเว็บไซต์นี้จะช่วยทุกท่านได้ไม่มากก็น้อย 

Scroll to Top