StoreChart
מילון מונחים

Multi-Tenant

ארכיטקטורת Multi-Tenant מאפשרת למערכת SaaS אחת לשרת מספר ארגונים (tenants) נפרדים על אותה תשתית, תוך בידוד נתונים מוחלט ביניהם. ב-StoreChart, כל tenant מנוהל ברמת Row-Level Security (RLS) בבסיס הנתונים.

Multi-Tenant (ריבוי דיירים) היא ארכיטקטורה שבה מערכת SaaS אחת משרתת מספר ארגונים ("tenants") נפרדים.

כל tenant מקבל חוויה כאילו יש לו מערכת נפרדת, אך בפועל כולם רצים על אותה תשתית.

ב-StoreChart, הבידוד מיושם ברמת Supabase RLS (Row-Level Security) — מבטיח שכל שורה במסד הנתונים שייכת ל-tenant ספציפי ואינה נגישה לאחרים.

החלופה לארכיטקטורה רב-דיירים היא ארכיטקטורת דייר יחיד, שבה כל לקוח מקבל פריסה נפרדת לחלוטין (מסד נתונים משלו, משאבי שרת משלו). דייר יחיד מציע בידוד פיזי חזק יותר אך יקר משמעותית להפעלה בקנה מידה, מכיוון שתשתית, עדכונים ותחזוקה צריכים להשתכפל לכל לקוח במקום להיות משותפים. SaaS רב-דיירים מאפשר את הכלכלה של תשתית משותפת בדיוק כי הבידוד נאכף באופן לוגי (דרך מדיניות כמו RLS) ולא פיזית — ולכן חוזק אותה אכיפה לוגית הוא תכונת האבטחה החשובה ביותר בכל מערכת רב-דיירים.

המבחן המעשי לרב-דיירות שנעשית נכון הוא האם הנתונים של דייר אחד יכולים אי פעם לדלוף, אפילו בטעות, לשאילתות של דייר אחר — זה בדיוק מה ש-Row-Level Security מכפיף בשכבת מסד הנתונים, כך שבאג באפליקציה ששכח לסנן לפי דייר עדיין לא יכול להחזיר הזמנות או לקוחות של עסק אחר. StoreChart מסתמך על הגבול הזה שנכפה במסד הנתונים במקום לסמוך על כך שכל שאילתה בקוד האפליקציה תזכור את הסינון, שהיא הגישה הנפוצה והשבירה יותר במערכות רב-דייריות פחות זהירות.

הערך הביטחוני של רב-דיירות אמיתית הכי קל להעריך על ידי דימוי החלופה: מסד נתונים משותף בודד עם בדיקת 'אם tenant_id תואם' בשכבת אפליקציה מפוזרת על פני כל שאילתה, שם בדיקה אחת שהוחמצה בנתיב קוד אחד היא כל מה שנדרש כדי שהנתונים של עסק אחד ידלפו לתצוגה של אחר.

מעבר לביטחון, רב-דיירות גם קובעת באיזו יעילות אפשר להפעיל פלטפורמה בקנה מידה — בסיס קוד רב-דיירי יחיד ומתוחזק היטב שמשרת אלפי עסקים קל בהרבה לתקן, לשדרג ולפקח עליו מאלפי פריסות בודדות-דייר נפרדות, שכל אחת צריכה חלון תחזוקה משלה ועותק משלה של כל תיקון באג שמוחל בנפרד.

בקצרה: רב-דיירות היא בחירת ארכיטקטורה, בידוד הוא ערבות הביטחון שהארכיטקטורה הזו צריכה לספק, ו-RLS הוא המכניזם הספציפי במסד הנתונים שפלטפורמות מודרניות רבות משתמשות בו כדי לספק אותה באופן אמין.

שאלות נפוצות

האם ארכיטקטורה רב-דיירים פחות מאובטחת מדייר יחיד?

לא באופן מובנה — מערכת רב-דיירים מיושמת היטב עם בידוד ברמת מסד הנתונים (כמו RLS) יכולה להיות מאובטחת כמו דייר יחיד, מכיוון שהבידוד נאכף על ידי מסד הנתונים עצמו בכל שאילתה במקום להסתמך על מפתחים שזוכרים לסנן נכון בקוד האפליקציה.

האם מערכת רב-דיירים יכולה עדיין להתאים התנהגות ללקוח?

כן. רב-דיירים מתייחס לבידוד נתונים ותשתית, לא לאחידות תכונות — מערכת יכולה עדיין להציע תצורה, מיתוג או דגלי תכונות לפי לקוח תוך שמירה על בידוד מלא של הנתונים בפועל של כל דייר ברמת מסד הנתונים.

מה קורה אם באג בקוד האפליקציה שוכח לסנן לפי דייר?

במערכת שמסתמכת רק על סינון ברמת האפליקציה, הבאג הזה עלול לחשוף נתוני דייר אחד לאחר. במערכת שאוכפת בידוד עם Row-Level Security ברמת מסד הנתונים, מסד הנתונים עצמו חוסם את השאילתה החוצה-דיירים ללא קשר לבאג באפליקציה, ולכן RLS נחשב לערובה חזקה יותר.

רוצים לראות את זה בפעולה?

נסו את StoreChart בחינם