Apa Itu Multi-Tenancy?
Multi-tenancy adalah arsitektur di mana satu aplikasi melayani banyak pelanggan atau tenant, sementara data setiap tenant tetap terisolasi. Berbeda dengan multi-instance, setiap pelanggan pada multi-tenancy tidak memerlukan deployment aplikasi terpisah.
Arsitektur ini banyak digunakan pada produk SaaS karena memungkinkan satu sistem melayani banyak pelanggan dengan biaya operasional yang lebih efisien.
Tiga Model Multi-Tenancy
Ada beberapa pendekatan utama dalam menyimpan data tenant:
-
Shared Database, Shared Schema — semua tenant menggunakan tabel yang sama dan dibedakan dengan
tenant_id. Biayanya paling rendah, tetapi membutuhkan kontrol isolasi yang ketat. -
Shared Database, Separate Schema — setiap tenant memiliki schema sendiri dalam satu database. Model ini menawarkan keseimbangan antara biaya dan isolasi.
-
Separate Database per Tenant — setiap tenant memiliki database sendiri. Isolasinya paling kuat, tetapi biaya dan kompleksitas pengelolaannya lebih tinggi.
Row-Level Security di PostgreSQL
Pada model shared schema, PostgreSQL Row-Level Security (RLS) dapat digunakan untuk membatasi data berdasarkan tenant.
Dengan RLS, database dapat memastikan sebuah query hanya mengakses data milik tenant yang sesuai. Pendekatan ini memberikan lapisan keamanan tambahan di luar validasi pada aplikasi.
Tenant Routing
Sistem perlu menentukan tenant berdasarkan setiap request yang masuk. Beberapa pendekatan yang umum digunakan adalah:
-
Subdomain:
tenant.app.com -
Path:
app.com/tenant/dashboard -
Header: informasi tenant dikirim melalui request header
Middleware kemudian dapat mengidentifikasi tenant dan meneruskan tenant context ke proses berikutnya.
Onboarding Tenant
Proses onboarding sebaiknya dibuat otomatis agar tenant baru dapat langsung menggunakan aplikasi. Proses tersebut dapat mencakup provisioning database atau schema, seed data, konfigurasi billing, pengaturan akses, dan welcome email.
Automasi onboarding juga mengurangi pekerjaan manual ketika jumlah pelanggan mulai meningkat.
Keamanan dan Skalabilitas
Selain isolasi data, aplikasi multi-tenant perlu memperhatikan authorization, encryption, audit log, backup, dan monitoring. Pastikan setiap endpoint memvalidasi tenant context sebelum mengakses atau mengubah data.
Untuk sistem yang terus berkembang, monitoring penggunaan resource per tenant juga penting agar satu tenant tidak menghabiskan kapasitas yang tersedia untuk tenant lainnya.
Kesimpulan
Arsitektur multi-tenant SaaS harus dirancang dengan mempertimbangkan keamanan, biaya, compliance, dan skalabilitas. Pilihan antara shared schema, separate schema, atau separate database sebaiknya disesuaikan dengan kebutuhan bisnis dan tingkat isolasi data yang diperlukan.