civil-and-structural-engineering
יצירת לוח נתונים אינטראקטיבי המופעל על ידי Serverless backends
Table of Contents
מבוא
בעידן שבו ספירת נתונים מכפילה כל כמה שנים, היכולת להפוך מספרים גולמיים לתובנות בלתי ניתנות להפעלה מפרידות בין מנהיגי השוק מ-laggards. לוחות נתונים אינטראקטיביים משמשים כגשר בין מאגרי נתונים מורכבים וקבלת החלטות אנושית – אך בנייתם באופן מסורתי דרשה שרתי אספקה, ניהול מדיניות מדרג, והיאבקות עם עלויות אופטימיזציה של שרת ללא תשלום. Serverless backendends שינוי כי לחלוטין באמצעות פונקציות ענן רק על-מנת להפעיל רק על-דרול, יכול ליצור באופן אוטומטי של משתמשים, באמצעות קיבולת הפעלה אוטומטית, באמצעות קיבולת הפעלה של קיבולת הפעלה של קיבולת של קיבולת הפעלה של קיבולת אבטחה, ללא שינוי אבטחה של קיבולת של מיליוני שלבים ללא תשלום, ללא שינוי אבטחה אינטראקטיבית של קיבולת של נתונים, ללא תשלום, ללא תשלום, ללא תשלום באמצעות אופטימיזציה אוטומטית.
מה הם Backends ללא שרת?
מחשוב ללא שרת הוא מודל של הוצאה ענן שבו הספק מנהל דינמי את הקצאת משאבי מכונה.המונח "חסר מנוחה" הוא לא מרתיע - עדיין קיימים - אבל המפתח אינו עוד הוראות, קשקשים, או שומר עליהם.
- (FLT:0Function-as-a-Service (FaaSOVA)FLT:1 - קיצור-הימים, פונקציות מונחות אירועים (למשל, AWS Lambda, Google Cloud Functions, Azure Functions) אשר מפעילות קוד בתגובה לטריגרים כגון בקשות HTTP, שינויים במסד נתונים או העלאת קבצים.
- (FLT:0) Backend-as-a-Service (BaaSrov)FLT:1 - ניהול שירותי ענן לאחסון נתונים, אימות ו- APIs (למשל, AWS DynamoDB, Firebase, Auth0) אשר מסירים את הצורך להפעיל שרתים ייעודיים לפעילות משותפת.
עבור לוחות נתונים, חזרה טיפוסית ללא שרת משלבת את FaaS כדי לחשב התאמות לשרת נקודות קצה API עם שירותי BaaS כמו מסדי נתונים מנוהל ואחסון אובייקטים.אדריכלות זו מספקת יכולת דרוגנית כמעט ללא תשלום תוך שמירה על מורכבות מבצעית נמוכה.
היתרונות של שימוש Serverless for Dashboards
מדוע לבחור ללא שרת על גישות מסורתיות VPS או על בסיס מיכל?היתרונות מתייחסים ישירות לנקודות הכאב של פיתוח לוח המחוונים:
- (FLT:0) רגישות ללא מעל ראש:FearLT:1 פונקציות ללא שרת בקנה מידה אופקית במילי השניות. כאשר לוח המחוונים שלך הולך ויראלי או חווה עלייה התנועה בעונת הרווחים, הפלטפורמה באופן אוטומטי מסובבת אלפי מקרים של תפקוד כדי להתמודד עם העומס.
- (FLT:0) אחריות: FLT:1 אתה משלם רק עבור זמן החיובי שהפונקציות שלך לצרוך - ממורחות במליפים.עבור לוחות נתונים שרואים שימוש ספירודי (למשל, דו"ח נשיא שבועי), השרתים יכולים לקצץ בעלויות עד 70-90% בהשוואה לשרתים תמיד על BaaS כמו DMD מציעים תמחור בשכר, בהתאם לשימוש ישיר.
- (FLT:0) Reduced Maintenance:FLT:1 פטנג מערכת הקרנלים, שדרוג סביבות ריצה, ו ניטור בריאות השרת הופכת באחריותו של הספק.הצוות שלך מתמקד בלוגיקה עסקית, לא כרטיסי תשתית.
- (FLT:0) אדריכלות: FLT:1 פונקציות ללא Server יכול להיות מופעל על ידי שינויים מסד הנתונים (למשל, שורה חדשה בטבלה דינמוDB) כדי לעדכן קלפי לוח או לדחוף הודעות - החלת פעילות בזמן אמת ללא סקרים.
- (FLT:0) Multi-Language Flexibility:FLT 1:1 רוב ספקי FaaS תומכים Node.js, Python, Go, Java ו .NET. Teams יכולים לבחור את השפה הטובה ביותר לעיבוד נתונים (למשל, Python עבור תולעים) תוך שמירה על החזית ב- JavaScript.
תכנון לוח הבקרה
Defining User Stories and Data מקורות
כל לוח מחוונים מוצלח מתחיל בהבנה ברורה של הקהל והיעדים שלו.סיפורי משתמשים משותפים כוללים:
- "כמנהל מכירות אני רוצה לראות הכנסות בזמן אמת באזור ומסנן על ידי קטגוריות המוצר".
- "כמהנדס DevOps, אני רוצה לראות שיעורי טעויות ואחוזות לב ל-24 השעות האחרונות".
- "כבעל מוצר, אני רוצה להשוות משתמשים פעילים יומיומיים בין שתי קבוצות".
לזהות את מקורות הנתונים הבסיסיים - מסדי נתונים של מערכת יחסים, יומני, APIs, כלי SaaS - וכמה פעמים הם מעדכנים.זה מניע החלטות לגבי גילוח, עיבוד אצווה לעומת הזרמת זמן ותפקוד.
בחירת הפלטפורמה ללא Serverless
שלושת ספקי הענן העיקריים מציעים שירותי PES דומים:
- (FLT:0)AWS LambdaveFLT:1 - מערכת אקולוגית בוגרת עם שילוב הדוק של דינמוDB, S3, API Gateway ו-CloudFront. אידיאלי עבור לוחות מחוונים מורכבים של ארגונים.
- (FLT:0) Google Cloud FunctionseursFLT:1 - התאמה טבעית אם אתה כבר משתמש ב- BigQuery או Firebase. מצוינים עבור לוחות נתונים כבדים ששאילתת נתונים מסיביים.
- (FLT:0Zonee FunctionseursFLT:1) - חזק עבור מחסניות ממוקדות של Microsoft (SQL Server, Power BI, Active Directory).
עבור רוב הפרויקטים החדשים, (FLT:0)AWS LambdaveFLT:1) הוא ברירת המחדל בשל הספרייה העצומה של דוגמאות לקוחות ותמיכה קהילתית.אם אתה מעדיף פחות מנעול של ספקים, לשקול FLT:2Serverless FrameworkofFLT 3 או AWS SAM כדי להגדיר תשתיות כקוד.
בחירת Frontend Technologies
החזית חייבת להיות קשובה, מהירה, ושמירה על אפשרויות פופולריות כוללות:
- (FLT:0)ReactigofLT:1) עם נתב תגובה וספרייה ניהול המדינה (Zustand, Redux ToolKit, או אפילו תגובה קווירי עבור מדינת השרת).
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ,0) ,5 ,2 (ב) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
(ב) שימוש בספריות מבוססות כמו FLT:0(Chart.jsFLT:1 (תיקון השימוש) או שימוש ב-FLT:2D3.jsveFLT 3: (לא מקבילה) לעדכונים בזמן אמת, שקול אינטגרציה WebSocket באמצעות ממשק API של AWS Gateway WebSocket API או Google Cloud/Sub.
בניית ה-Backend עם פונקציות ללא Serverless
הקמת הפרויקט
הכפל את ההחזר שלך באמצעות מסגרת Serverless Framework.A פשוטFLT:0 מגדיר את הפונקציה, נקודת הקצה של HTTP, והרשאה:
1 שלב 1 (ב) 1 שלב: יצירת שירות חדש: FIRLT 1
serverless create --template aws-python3 --path my-dashboard-api
2 שלב 2 (ב) הוסף פונקציה: FLT:1
functions:
getSalesData:
handler: handler.getSalesData
events:
- http:
path: sales
method: get
cors: true
3Step - Define IAM תפקידים LT:1 כדי לאפשר את הפונקציה לקרוא מ-DudmoDB או S3. המסגרת יכולה ליצור מדיניות הרשאות מינימלית באופן אוטומטי.
לכתוב את הלוגיקה
פונקציה טיפוסית ללא שרת עבור נקודת קצה לוחית עושה את הפעולות הבאות:
- פרמטרים של שאילתה (טווח עדכני, מסננים, הדמיה).
- שאילתות בחנות הנתונים (למשל, דינמוDB עם אינדקסים משניים אופציונליים, או S3 בחר בקבצי Parkt).
- ביצוע הדבקה ב-memory (sum, ממוצע, קבוצה-by) באמצעות ספריות בנויות-ב Python או Node.js.
- החזרת תגובה JSON עם הנתונים המעובדים וראשי הבקרה של ה-Cache.
לדוגמה, פונקציה של אגר מכירות ב Node.js:
exports.handler = async (event) => {
const { startDate, endDate, region } = event.queryStringParameters;
const items = await dynamoDb.query({ ... });
const totals = items.reduce(...);
return {
statusCode: 200,
headers: { 'Cache-Control': 'max-age=300' },
body: JSON.stringify({ totals, breakdown: groups })
};
};
שימוש בחנות נתונים מנוהלת
(ב) [ה]:0 [Dynamod]FLT:1] הוא מסד הנתונים הנפוץ ביותר עבור לוחות נתונים עבור לוחות נתונים בשל חד-ספרתיים שלה ו- ניכוי אוטומטי באמצעות חישוב, השתמש בעיצוב חד-פעמי עם מפתחות חלוקה משמעותיים (למשל, FLT:4) כדי להתאים את דפוסי השאילתה.
תגית: Real-Time Capabilities
עבור לוחות נתונים של חי (קדיקים, נתונים של חיישן IoT), השתמש ב- WebSockets. API של AWS Gateway מחבר ישירות לפונקציות Lambda שדוחפות עדכונים ללקוחות מקושרים. לחלופין, ליישם אסטרטגיה סקרנית שבה החזית מכנה את נקודת הקצה כל 10-30 שניות - פשוט יותר ויותר מספיק עבור מקרים רבים של שימוש במודיעין עסקי.
בניית לוח הבקרה הקדמי
אדריכלות:
החזית צריכה להיות יישום חד-עמודי (SPA) שהוצב לשירות אירוח סטטי כמו AWS S3 + CloudFront, Netlify, או Vercel. All Pin Logic שוכן בדפדפן; ה- API חסר השרת נשאר שכבת נתונים דקת.
לכידת וניהול נתונים
השתמש ב- React Query (TanStack Query) כדי לנהל את מדינת השרת.זה מטפל ב- caching, רקע refetching, ו-pagination באופן אוטומטי.
const { data, isLoading } = useQuery(['sales', { startDate, endDate }],
() => fetch(`/api/sales?start=${startDate}&end=${endDate}`).then(r => r.json())
);
שלב את זה עם רכיב תרשים תגובתי.כאשר מסננים משתנים, לעדכן את מפתח השאילתה כדי לעורר שיחת שרת חדשה.
טבלאות
(ב) (ב) ,(ה) ,(ה) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
בניית פילטר ו-Gate-Down controls
יישום בר סינון עולמי באמצעות תיבות צ'ק, נושטים מועדים, ו טיפות.חנות מסנן המדינה בהקשר תגובה או Zustand החנות כך שכל רכיבי הטבלה מגיבים באופן מיידי.עבור מטה-התעלים, לנווט אל לוח תת-קרקעי עם נוף יותר גרניטארי (למשל, מרבע הכנסות להתמוטטות חודשית על ידי המוצר).
עיבוד נתונים
על פי ה-Fly vs. Pre-Aggregated
שתי אסטרטגיות קיימות לטיפול במאגרי מידע גדולים:
- (FLT:0) Pre-aggregation:FLT:1 A מתוכנן Lambda פועל שעה / באופן חד, קובע נתונים סטטיסטיים סיכום, ומאחסן אותם בטבלה "סומרית" דינמוDB.
- (ב) [העיקרון]: [ה] [ה]] [התפקיד שאילתות נתונים גולמיים ומצטברות בזיכרון.
רוב לוחות התכנון משתמשים בהרכב היברידי: מצטברים יומיים לפני מקביל להשקפות משותפות ומאפשרים חישובים חד-פעמיים עבור מסננים מותאמים אישית, עם הגנה על זמן של 30 שניות.
Caching Layer
שיפור ביצועים על ידי Cching תכופים תשובות API. אפשרויות:
- (ב) [15] ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0)ynamoDB DAX:FLT:1 עבור שאילתות מסד נתונים חוזרות ונשנות, כאב ראש כמו Accelerator DMODB (DAX) מקטין את החוזק מ ms-דיגיטלי למיקרו-שניות.
- (FLT:0)ElastiCache Redis: FIRLT:1) השתמש ב Redis ללא שרת (כמו Upstash או AWS ElastiCache Serverless) כדי לאחסן תוצאות מצטברות ומדינת ישיבות.
אבטחה Best Practices
הכרה ואישור
לעולם אל תחשוף API ללא שרת ללא צורה כלשהי של איורים ציבוריים, השתמש במפתחי API שהועברו כמדריכים.עבור לוחות מחוונים של ארגונים פנימיים, לשלב OAuth2 עם ספקים כמו Auth0. in AWS, ליישם מפיץ למודה המאמת את ה-JWTken לפני הפונקציה מבצעת ניתוח: 1) יומני החזית ומקבל JWT 2) כל API כולל את ה-JWTken כדי להכחיש את מדיניות ה-IFken (ה-IR) או את הפונקציה IR.
נתונים הצפנה
כל הנתונים במעבר חייבים להשתמש ב- HTTPS (התקבלו באופן אוטומטי על ידי דומיינים מותאמים אישית של API עם תעודות ACM) נתונים ב-DudmoDB או S3 צריכים להיות מוצפנים עם AWS KMS. עבור לוחות נתונים רגישים, ליישם אבטחה ברמת חתירה על ידי מינוף התפקיד של המשתמש מ-JWT וסינון נתונים בתוך הפונקציה Lambda.
מדיניות IAM
בהתאם לעקרון של זכויות לפחות.כל תפקיד של למנדה צריך להיות תפקיד חשוב של IAM המאפשר רק את הפעולות שהוא צריך (למשל, FLT:11 על טבלאות ספציפיות, FLT:12).
עקבו אחרי and Logging
לוחות מחוונים ללא שרת זקוקים למעקב פרואקטיבי מכיוון שכישלונות הם לעתים קרובות שקטים (תוצאות זמן תפקוד ב-503, לא שרת התרסק).
- (FLT:0)AWS CloudWatchFLT:1 - ניתן לקבל על ידי ברירת מחדל; יומני תצוגה לתפקוד, להגדיר מדדים מותאמים אישית (חשבון, משך, שיעור שגיאה) ליצור לוחות נתונים ב-CloudWatch עצמו כדי לפקח על מערכת המעקב שלך.
- (FLT:0)Distributed Tracing:031) Enable AWS X-Ray על פונקציות שלך כדי לעקוב אחר בקשות באמצעות Gateway, Lambda ו- DynamoDB.זה עוזר לזהות צווארי בקבוק.
- (FLT:0)Alarms:FLT:1 , Set CloudWatch אזעקה עבור שיעורי טעויות >% ומשך הפונקציה > 80% מהשעה שנקבעה.
- (ב) ,0) ,התגלות: ⁇ 1 (ב) השתמש בגלציות JSON, כך שתוכל לחפש ולשאילת אותם עם תובנות CloudWatchs Logs.
אופטימיזציה
התחלה קרה
הבעיה הגדולה ביותר של לוחות מחוונים ללא שרת היא ההתחלה הקרה - השקיפות מתרחשת כאשר פונקציה מופעלת לאחר להיות idle. Mitigations:
- הגדלת הקצאת הזיכרון (יותר VCPU זמין, יזום מהיר יותר).
- השתמש במטבע מבוזר כדי לשמור כמה מקרים חמים.
- אופטימיזציה של חבילת הפונקציה: לא לכלול תלות מיותרת, להשתמש במודולים ES, ומעדיפים זמני ריצה מקומיים כמו Node.js over Java עבור סטארט-אפ מהיר יותר.
- עבור נקודות קצה רגישות לעקביות, לשקול Lambda SnapStart (Java / Python) אשר צילם את סביבת ההוצאה להורג לאחר תחילת ההשלמה.
צוק מחשוב
לדחוף עיבוד נתונים קרוב יותר למשתמשים באמצעות פונקציות ענןFront או Lambda@Edge. לדוגמה, אתה יכול לשכתב פרמטרים או לאמת אסימוני אימות בקצה לפני הבקשה מגיעה ה- API המרכזי שלך.זה מקטין את הזמן העגול עבור קהלים גלובליים.
אופטימיזציה ברשת
למקם את Lambda שלך מתפקד באותו אזור AWS כמו טבלאות ה-DymoDB ו- S3 דליs.אם משתמשים הם גלובליים, להשתמש ב- CDN (CloudFront עם קבוצות מקור מרובות) ואת נקודות קצה API אזוריות.עבור החזית, דחוס נכסים סטטיים עם טבלת ברוקלי ועצלן-עומס רק כאשר נדרש (מסווט ב-React).
דוגמה אמיתית: E-commerce Sales Dashboard
בואו נחבר את כל החלקים יחד.דמיין קמעונאי מקוון שזקוק ללוח נתונים עבור הצוות המבצעי המציג הכנסות בזמן אמת, מוצרים מובילים וביצועים אזוריים.
- (FLT:0DataPiline:0) אירועי הזמנה 1:1 נכנסים לדלי S3 כמו JSON. A מתוכנן Lambda (כל 5 דקות) קורא קבצים חדשים, מצטבר נתונים על ידי אזור ושעה, וכותב בטבלה דינמוDB בשם ,FLT:13:13:13).
- (ב) ויקרא י"א): "ה' (ב') ויקרא ה': "ה' (ב') ויקרא י' (ב') ויקרא י') , ו'''' (ב') ,''' (ב') ויקרא י' (ב') ויקרא י"ד).
- (FLT:0)Frontendir: 1FLT 1 A React אפליקציה עם שלוש כרטיסיות: "Overview", "מוצרים", "תקנות" השתמש בטבלת.js עבור תרשימים בר ו ⁇ קו.
- (ב) ⁇ :0) סודיות: (1) מספק את OAuth2 כניסה. Lambda Authorizer מאשר JWT. IAM תפקידים מגבילים כל פונקציה לקריאה רק בטבלה 18 .
- (FLT:0)Performance: FLT:1 תגובות API של API דחוסות ל-60 שניות באמצעות CloudFront.הפונקציות משתמשות בזיכרון 1024 MB, ודוגמה אחת ממומשת נשמרת חמה במהלך שעות עסקיות (9 AM-6 PMEST).
אדריכלות זו מטפלת ב-10,000 משתמשים במקביל במהלך יום שישי השחור עם אפס דרוג ידני.
בדיקת לוח הבקרה
יחידות ומבחנים לתפקודים ללא שרת
כתוב בדיקות יחידה עבור הלוגיקה של הפונקציה שלך באמצעות המסגרת הסטנדרטית של השפה שלך (Jest for Node, pytest for Python) Mock DynamoDB קורא עם FLT:19 . עבור בדיקות אינטגרציה, השתמש ב-AWS SDK כדי להפעיל את הפונקציה הפרוסת ישירות או לקרוא ל- API Gatewaypoint. A / צנרת D צריך להפעיל את הבדיקות האלה לפני פריסה לייצור.
בדיקות החזית
תרשים מבחן מתייבש וסינון אינטראקציות עם ספריית בדיקה ו- Cypress.בדוק כי שינוי במצב סינון שולח את שיחת ה- API הנכונה וכי עדכון תרשימים ללא זריקת שגיאות. השתמש בבדיקת תמונות עבור תצורה סטטית.
המונחים: CI /CD
השתמש בגיבוי השרת שלך וחזית כחפצים נפרדים לפרוס. השתמש ב- Serverless Framework's (FLT:20) כדי לדחוף את פונקציות Lambda ועדכוני API Gateway.עבור החזית, לבנות את SPA ולהפיץ לדלי S3, תוך אימות של CloudFront של CloudFront.אוטומטי זה עם פעולות GitHub או קוד AWSPipe:
# Example workflow step for backend
- name: Deploy to production
run: serverless deploy --stage prod
ודא כי הגירה מסד נתונים מטופלים בנפרד - שינויים דינמודיים יש לסווג ב-CloudFormation או Terraform וליישם לפני שדרוגים לתפקד.
מסקנה
לוחות נתונים אינטראקטיביים המופעלים על ידי backends ללא השרת מייצגים את הנורמלי החדש עבור ארגונים מונעים נתונים.על ידי הסרת תשתיות משם, השרתים ללא השרת מאפשר לצוותים להתרוצץ במהירות על התכונות שחשובות ביותר: ויזואליזציה משכנעת, שאילתות מהירות, וחוויות אינטואיטיביות של קידוחים ואפקטים מודגשים כאן כדי לכווץ את עצמם, אבל הניצחון האמיתי הוא הפשטות התפעולית - מפתח אחד יכול להחזיק את כל הנתונים מהת המשתנים כדי לפלסמה ולת הימים הרגילים, ולא להרחיב את האמצעים הרגילים, כמו גם את התכונות של השרתים, כמו גם את התכונות של המערכת, כמו גם את התכונות של המערכת, כמו גם את התכונות של המערכת, כמו גם את התכונות של המערכת, כמו גם את התכונות של המערכת, כמו גם את התכונות של המערכת המסורתית של המערכת, כמו גם את התכונות של המערכת, כמו גם את התכונות של המערכת, כמו גם את האמצעים המשתנים, כמו גם את האמצעים המשתנים, כמו גם את התכונות של המערכת, כמו גם את התכונות של המערכת, כמו גם את התכונות של מערכות מחשוב איטי יותר מאשר את התכונות של המערכת, כמו גם את התכונות של המערכת, כמו גם את התכונות של מערכות מחשוב איטי יותר, כמו גם את התכונות של מערכות מחשוב עצמי, כמו גם את התכונות של המערכת, אלא