Table of Contents
מבוא ל- Multi-Tenant SaaS ב- Serverless
בניית פלטפורמה רב-עוצמה של Software-as-a-Service (SaaS) היא משימה מורכבת הדורשת תכנון זהיר סביב יכולת דרוג, אבטחה, ועלויות יעילות.עלייה של תשתיות ללא שרת שינתה באופן יסודי את האופן שבו מפתחים ניגשים לאתגרים אלה, המציעים נתיב לבניית מערכות גמישות, תשלום-כפי שאתה-גו ללא נטל השרתים המסורתיים.
מאמר זה מספק מדריך מקיף, ממוקד ייצור לבניית פלטפורמות SaaS מרובות-מחדש על תשתיות ללא שרת.We'll לחקור את מושג הליבה, לצלול לתוך פרטי יישום עבור כל רכיב מפתח, לדון את העסקאות שאתה צריך לשקול כדי לספק פתרון חזק, מאובטח ויעיל עלות.
מהי תשתית ללא שרת?
תשתיות ללא שרת הן מודל הוצאה להורג בעל מחשוב ענן שבו ספק הענן מנהל באופן דינמי את הקצאה והענקת שרתים. קוד יישומים פועל במכלים חסרי ערך חסרי ערך שאינם חוקיים, אשר הם מותחים אירועים ומנוהלים באופן מלא על ידי הספק.השירותי החיוב הנפוצים ביותר לשרת כוללים AWS Lambda, Azure Functions, ו-Google Clouds.
באדריכלות ללא שרת, אתה כבר לא הוראה, תיקון או מקרים שרת בקנה מידה. במקום, אתה מעלה את הקוד שלך ולהגדיר את האירועים שאמורים לעורר את ביצועו (למשל, בקשות HTTP, שינויים מסד הנתונים, העלאת קבצים) באופן אוטומטי את משאבי המחשוב למעלה או למטה - לעתים קרובות אפס - על בסיס דרישה.
מעבר ל-compute, המערכת האקולוגית ללא השרת כוללת שירותים מנוהלים עבור APIs (API Gateway), מסדי נתונים (אמזון Aurora Serverless, DynamoDB, Firebase Firehouse), אימות (Amazon Cognito, Firebase Auth), והודעות (SQSQS, SNS, EventBridge) שירותים אלה יחד יוצרים גיבוי מנוהל במלואו המסלק כמעט את כל התשתית מעל פני.
מדוע Serverless הוא תקן טבעי עבור SaaS רב-טנט
פלטפורמות SaaS מרובות-נטנסיות משרתות לקוחות רבים (מעשרות) מדוגמה אחת של יישום.יש לבודד את נתוני כל דייר, והפלטפורמה חייבת להתמודד עם עומסי עבודה בלתי צפויים ברחבי הדיירים.אדריכלות ללא שרת שמתאימה לדרישות אלה בכמה דרכים:
- (FLT:0)Automatic אלסטיות: FLT:1irless function scalely ללא התערבות אנושית.כאשר אחד מספיני השימוש של דייר, התשתית מתרחבת מיד מבלי להשפיע על דיירים אחרים.
- (ב) תעריף תשלום: 1FIRLT 1 (You pay only for the Resources כל דייר צורכת.
- (FLT:0) לחנך מורכבות תפעולית: FIRLT:1 Serverless מבטל את השרת תיקון, תכנון קיבולת ותצורה של זמינות גבוהה צוות שלך מתמקד בלוגיקה עסקית, דייר על הסיפון, בידוד נתונים במקום היגיינה תשתיות.
- (FLT:0)Simplified Multi-Tenancy Patterns:FLT) 1 ניהול שירותים כמו אמזון קוגניטו ו Firebase Authentication מציעים תמיכה מובנה עבור מאגרים מרובים של משתמשים. מסדי נתונים ללא שרת יכולים לאכוף בידוד רב-עשרה באמצעות אבטחה ברמת השורה או אסטרטגיות של schema-per-tentant ללא מודעות בינונית אישית.
- (FLT:0)Faster Time to Market:FLT:1 כי השרתים לא להפחית את הצורך במתן והגדרת תשתיות, צוותי פיתוח יכולים להחליש במהירות ותכונות אוניות מהר יותר - יתרון קריטי בשווקים תחרותיים של SaaS.
עיצוב ארכיטקטורת SaaS רב-טנט שלך
פלטפורמת SaaS רב-עוצמה גבוהה על השרתים, חייבת לטפל בבידוד נתונים, אימות, מחיקה וחיוב.התתת הבאה שוברת כל ממד עיצוב.
אסטרטגיות של נתונים Tenant Data Isolation
בידוד נתונים הוא ההחלטה האדריכלית החשובה ביותר במערכת רב-עוצמה.ישנן שלושה דפוסים משותפים, כל אחד עם שינויים מסחריים שונים:
- (FLT:0)Shared Database, משותף שלש (עם עמודה מזהה) :FLT:1 כל הדיירים חולקים את אותו טבלאות מסד נתונים.כל שורה כוללת מזהה דייר (למשל, FLT:0) גישה יעילה ביותר אך דורשת אכיפה קפדנית של מסדי נתונים ברמת אבטחה.
- (FLT:0)Shared Database, בנפרד Schemas:Buildd:veFLT:1 ; כל דייר מקבל את הschema שלו בתוך מסד נתונים אחד.זה מספק בידוד הגיוני טוב יותר תוך שמירה על ניהול מסד נתונים נמוך יותר. אמזון אורורה Serverless תומך schema-per-tenant ומאפשר קנה מידה עצמאי.האתגר העיקרי הוא ניהול הגירה סכימה על פני דיירים רבים.
- (FLT:0Database Per Tenant:FLT:1 כל דייר יש מקרה מסד נתונים נפרד לחלוטין.זה מציע את בידוד החזק ביותר - אידיאלי עבור תעשיות ציות (מימון, בריאות) או דיירים עם נתונים גדולים מאוד. מסדי נתונים ללא מרשם כמו Aurora Serverless לעשות זאת יותר לניהול כי אתה לא צריך לספק, כמו כל אחד מהם, עלות יכול להיות גבוה יותר אם יש הרבה משתמשים נמוכים.
הבחירה שלך תלויה בדרישות האבטחה של הדיירים שלך, התקציב והבשלות התפעולית.סטארט-אפים רבים מתחילים בגישה של בסיס נתונים משותף ועולים למאגרי נתונים מתקדמים ככל שהם גדלים.
הכרה ואישור
אימות המשתמש במערכת רב-נטנסית חייב לזהות את המשתמש ואת דייריהם.האסטרטגיה הנפוצה ביותר משתמשת ספק זהות מרכזי (IdP) כמו אמזון קוגניטו או את 0. עם Cotogni, באפשרותך ליצור מאגר משתמש אחד ולהשתמש בתכונות או קבוצות מותאם אישית כדי לחבר משתמשים עם Tenants. JWTs (JSON Webken Tokens) , על ידי IDP צריך לכלול תביעה אישית כגון פונקציות של 1Fken או LT2ant כדי לאמת את השימוש בפונקציות.
לקבלת אישור, ליישם בקרת גישה מבוססת תכונות (ABAC) ולא בקרת גישה מבוססת תפקידים (RBAC) ברמה העשרונית. השתמש במדיניות IAM או תוכנה בינונית אישית כדי להגביל שאילתות מסד נתונים המבוססות על מזהה ה-JWT. זה מבטיח כי משתמש מ Tenant A אינו יכול לגשת לנתונים השייכים ל- Tenant B, גם אם יש באג בקוד היישום שלך.
Tenant Roting and Onboarding
כאשר מגיעה בקשה, הפלטפורמה חייבת לזהות איזה דייר היא שייכת לגישות נפוצות:
- (ב) לכל אחד מן החולקים (ב') יש מדרש יחיד (ב', ב') ל'שער ה-API' שלך או מאזן העומס שלך, אשר בודק את ה-FLT:4 כדי להפנות בקשות ללוגיקה ספציפית.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0) Header/cookie מבוסס routing:FLT ( 1:1) התעודה המעשרת מועברת בראש מותאם אישית או JWT תביעה.זה לעתים קרובות משולב עם אימות משתמש.
במהלך העשרה על הסיפון, אתה צריך לספק משאבים דינמי.תפקוד ללא שרת יכול, למשל, ליצור מסד נתונים חדש אורורה Serverless מסד נתונים או לעדכן שולחן דינמוDB עם התצורה של דייר חדש.שימוש בכלים קוד כמו AWS CDK או Terraform Automates תהליך זה.
יישום Components for SaaS
עכשיו בואו נבחן את המרכיבים חסרי השרת המרכזיים שבהם תשתמש וכיצד להגדיר אותם עבור ריבוי בעלי יכולת.
ראשי > AP Gateway: The Front Door
Amazon API Gateway (או Azure API Management) פועל כנקודת הכניסה לכל בקשות הלקוח.זה מטפל באימות, מתעתק, ומבקש ניתוק לתפקודי Lambda של מטה הזרם.
- אימות JWTs ו לחלץ את ההקשר העשר לפני שהוא מעורר את הפונקציה backend.
- השתמש בתוכניות שימוש או מפתחי API כדי לאכוף את מגבלות הריבית ל- 10ant (למשל, דיירים בעלי הון חופשי מקבלים 1000 בקשות ליום, הדיירים בתשלום מקבלים 100,000).
- שמות דומיין מותאמים אישית (למשל, FLT:6) וקשור אותם עם נקודות קצה אזוריות או נקודות קצה קצה קצה קצה קצה עבור הפחתת הגינות הגלובלית.
AWS Lambda: The Compute Heart
Lambda פועל לבצע את ההיגיון העסקי שלך. במערכת רב-עוצמה, כל פונקציה בייעוד מקבל אובייקט ההקשר המכיל את מזהה ה-Fant ID, מזהה המשתמש וכל טענות רלוונטיות אחרות כוללות:
- (FLT:0)Use פונקציה אחת למודה לכל שירות: OVAFLT:1 להימנע יצירת פונקציות נפרדות עבור כל דייר.במקום, להעביר את התעודה המעשר כחלק משכר האירוע.התפקיד משתמש בו כדי לסנן שאילתות מסד נתונים.
- (FLT:0) מתחיל קר מתחיל: 1FLT) השתמש במטבע מבוזר עבור דיירים רגישים לערעור או לשלב פונקציות לתוך חבילה אחת של פריסה כדי להפחית את זמן הסטארט-אפ.
- (FLT:0) ,Implement Tenant-aware logging: אנדרט 1 כולל מזהה בעל ערך וזיהוי משתמש בכל הצהרה של יומן שימוש מובנה עם AWS CloudWatchs Insights for debugging over Tenantsants.
- (FLT:0)Error Treatment: 1FLT) לעולם אל תדליפו שגיאות מעבר לעשרה.תפסו את כל החריגים והחזרת הודעות שגיאה גנריות למשתמשים תוך שימתם של פרטים מלאים בפנים.
אתר: הובלת Tenant Data
בחירת מסד הנתונים שלך משפיעה ישירות על בידוד, ביצועים ועלות. שתי אפשרויות מסד נתונים ללא שרת עומדות:
- (ב) [ה]אמזון דינמוב: [ה][דרוש מקור] [ה] [ה]] [ה]]] [ה]]], [ה]]] [ה]]]], [ה]]], [העיקרון] [ה[[המאה ה-20]],], ה[[המאה ה-20]],]], ו[[ה[[המאה ה-20]],]],]],]], [[המאה ה-20]],]],]], [[ה[[ה[[ה[[1924]],]], [[ה[[1924]],]], [[ה[[1924]],]], [[1924]], [[1924]], [[1924]]]]]], [[1924]]]]]]]]]], [[1924]]]], [[1924]]]], [[1924]]]]]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]]]]]]]], [[1924]]]]]]]]]], [[1924]], [[1924]]]], [[1924]], [[1924]], [[1924]]]]]]]], [[1924]]]]]]
- (FLT:0) אמזון אורורה Serverless: 1FLT) מסד נתונים יחסי שמאזין באופן אוטומטי. מתאים לסוחרים הדורשים תוספות מורכבות, נהלים מאוחסנים, או עסקאות ACID.עם Oracleless v2, באפשרותך להשתמש בקובץ יחיד עם מסדי נתונים מרובים (אחד לעשר) או דפוס של Sema-per-ten-per-ten- API לשימוש בשאילתות על פני, אשר ניתן להשתמש ב- HTTPS פונקציות ניהול פשטות.
כל מסד נתונים שתבחר, יישום תלוש ברמה של 10ant כדי למנוע מסוחר רועש ממשאבים משותפים מכריעים. השתמש ב-DudmoDB's FLT:10 לכל שולחן או להחיל את אמזון RDS Proxy לחיבור במאגרי מידע יחסיים.
שירות אימות: Identity and Access Management
אמזון Cognito User Pools לעשות את זה פשוט לנהל רישום משתמשים, כניסה ו MFA עבור יישומים רב-נטנים.
- (ב) ,0) תכונות: (ב) ,(ה) , נספח 1: 11 (ב) לכל משתמש.כאשר משתמש נרשם, להקצות אותם לעשיר באמצעות גורם למכה (Pre Signup או Post אישור).
- (FLT:0Groups:BuildFLT:1) השתמש בקבוצות קוגניטו כדי לייצג עשרות תפקידים (מנהל, חבר, צופה) בתוך דייר.
- (FLT:0) בריכות נאמנות:FLT:1 עבור גישה מאוזנת (למשל, Google, Facebook) או כדי להעניק אישורים זמניים של AWS עבור גישה למשאבים אחרים, השתמש ב-Cognito Identity Pools. Associate עם מזהה ה-Fantant של המשתמש לאכוף הרשאות ברמת משאבים.
Firebase Authentication מציע יכולות דומות עם פרויקטים ספציפיים של חברות SaaS, לשקול את התמיכה של Auth0:0 בנוי-in-in-in-in Multi-tenant Support.
המונחים: Event-Driven Patterns
פלטפורמות SaaS ללא שרת לעתים קרובות צריך עיבוד סינכרוני - למשל, שליחת הודעות דוא"ל, דוחות עיבוד, או טיפול במתן הוראה. השתמש אמזון SQS (Simple Queue Service) או SNS לרכיבי פירוק.כל הודעה צריכה לכלול את מזהה ה-Fant כדי לשמור על ההקשר.
אתגרים ואסטרטגיות מייגציה
ארכיטקטורות רב-עוצמה Server אינן ללא תקלות.כתובתן היא חיונית למוכנות הייצור.
« תחילת הליטנסיכות
כאשר פונקציה Lambda לא הופעלה לאחרונה, הייעוד הבא עשוי לחוות עיכוב (ההתחלה הקרה) זה יכול להיות בעייתי עבור ממשק API של מצופה כי דורש עצלות נמוכה.
- השתמש ב-Convisioned Concurrency for Critical function.
- אופטימיזציה של ריצה (Python / Node.js להתחיל מהר יותר מאשר Java / C#).
- שמור על פונקציות קטנות ולהפחית את עומס התלות.
- לשלב מטפלים מרובים בפריצת פונקציה יחידה כדי להגדיל את השימוש.
המונחים: Lock-In
באמצעות שירותים מנוהלים כמו דינמו-DB, קוגניטו, ומודה מקשרת אתכם לספק ענן ספציפי.
- API ספציפי בענן מאחורי ממשקים או שכבות חזיתות בקוד שלך.
- השתמש בתקנים פתוחים כמו OpenAPI להגדרות API ו- OpenID Connect לאימות.
- עיצוב לוגיקה התחום שלך להיות עצמאי של תשתיות.חשב באמצעות תבנית:0 (אפילו על ידי תבנית מבוססת יוונית) 1 עם פורמטי הודעה משותפים (Cloudevents).
ציות ועקשנות
פונקציות ללא שרת הן אפסיות, מה שהופך כלים מסורתיים לדה-מחדש לא יעילים. להשקיע:
- עקבו אחרי AWS X-Ray X-Ray או OpenTelemetry
- הכניסה המרכזית עם מדדים מותאמים אישית עבור שיעורי שגיאה ברמה גבוהה, שקיפות, ובקשה ספירות.
- התראות על סף רמת Tenant-level (למשל, שימוש נורמלי של 10x).
ביטול ומניעת התעללות
אחד דייר יכול לצרוך את כל המשאבים אם trottling אינו במקום. יישום שיעור גבוה להגביל את שכבת ה- API Gateway באמצעות תוכניות שימוש.עבור גישה מסד נתונים, לאכוף מגבלות יכולת ספציפיות על יכולת שימוש באמצעות מדדים משניים גלובליים של דינמוDB עם מפתחות חלוקה לקריאה / גבולות כתיבה. Lambda צריך גם לאמת מכסות שימוש לפני עיבוד פעולות יקרות.
Best Practices for Production-Grade Serverless SaaS
- (FLT:0) Use Infrastructure as Code (IaC): DefineFLT:1 Define allless Resources (Lambda, API Gateway, DynamoDBטבלאות) באמצעות AWS CDK, Terraform, או Serverless Framework.זה מבטיח חזרה ובקרת גרסה עבור הסביבה הרב-נטנטית שלך.
- (FLT:0) ,Implement Tenant Onboarding Automation:BuildFLT:1) מקורות לעשרות נמלים חדשים באמצעות פונקציה צעד או צינור מונע אירוע.לדוגמה, על הרשמה דייר, גורם למודה שיוצר את מסד הנתונים של הסנט, מפולת נתונים ברירת מחדל, ושולח דואר אלקטרוני בברכה.
- (FLT:0) ,Separate Tenant-Specific Configuration:Felo1 Store Tenant metadata (שם, סוג תוכנית, דגלים תכונה) במרשם דייר - שולחן דינמוDB פשוט המאינדקס על ידי פונקציות זיהוי דייר.
- (FLT:0)Plan for Migration:FLT:1 התחל עם מודל בידוד הפשוט ביותר (שולחן משותף עם מזהה Tenant) ו refactor to Movinger Rapider לאחר מכן. השתמש באסטרטגיות הגירה מסד נתונים כמו שינויים בצקת זמן אפס (עם כלים כמו Flyway) כדי להימנע מפירוק שירותים עמידים.
- (ב) [ה]ה' [ה']'[דרוש מקור]'], [ה']'[דרוש מקור], [ב]], [ה'], [ה']'[ב[[1924]]], ב[[1924]], ב[[1924]], [[1924]], [[1924]],]], [[1924]]]]]],]], [[1924]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]], [[1924]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
- (FLT:0Set Up Disaster Recovery:FLT:1irless שירותים בדרך כלל מציעים זמינות גבוהה בתוך אזור. עבור עומסי עבודה רב-עוצמה קריטיים, לשקול שכפול מחזורי עבור DynamoDB (טבלאות גלובליות) ונקודות קצה של API רב-רישום כדי לשמור על זמינות במקרה של מחוץ לאזור.
מסקנה
בניית פלטפורמה SaaS רב-עוצמה על תשתיות ללא שרת היא בחירה פרגמטית המספקת דרוג אוטומטי, יעילות עלות וצמצום הנטל התפעולי. על ידי תכנון בקפידה אסטרטגיית בידוד הנתונים שלך, יישום אימות Tenant-aware, ומינוף שירותים מנוהלים כמו Gateway, Lambda ומסד נתונים ללא שרת, אתה יכול ליצור פלטפורמה קריאטיבית ייצור שמשרת מאות או אלפי נמלים מקוד יחיד.
כמו בכל ארכיטקטורה, המפתח הוא לעשות עסקאות מכוונת.התחל עם בידוד פשוט, להשקיע בעקביות ו- IaC מהיום הראשון, ולהוסיף בהדרגה תכונות כמו כל התכווט, חיוב מבוסס שימוש, ופריסה רב-אזורית.עם הבסיס הנכון, השרתים מאפשרים לך להתמקד באספקת ערך לעשרות שלך בעוד הענן מטפל בתשתיות.
(ב) לקריאה נוספת, חקרו את המשאבים של ה-FLT:0 (AWS SaaS FactoryveFLT:1) ואת המשאבים של ה-FLT:2AWS Well-Architected SaaS LenscioFLT:3 להדרכה עמוקה על בניית מערכות מרובות-גבוהות.