Table of Contents
מבוא
יישומים מודרניים חייבים להתמודד עם דפוסי תנועה בלתי צפויים, בסיסים של משתמשים גלובליים ופרסום תכונה מהירה - כל זאת תוך שמירה על עלויות התפעול תחת שליטה.אדריכלות Serverless התפתחה כגישה טרנספורמטיבית לבניית APIs כי ללא מאמץ ללא נטל הניהול השרת.על ידי חששות תשתית מופשטת, מפתחים יכולים להתמקד בכתב לוגיקה עסקית ולספק ערך מהיר יותר. מאמר זה מספק מדריך מקיף לעיצוב, בנייה, פריסה של API בר-קיימא באמצעות מחשוב השרתים, כיסוי, או פתרונות מתקדמים, אם אתה יכול ליצור רעיונות מתקדמים יותר.
מהי אדריכלות ללא שרת?
אדריכלות ללא שרת מתייחסת למודל מחשוב ענן שבו ספק הענן מנהל באופן דינמי את הקצאת והענקת שרתים.למרות השם, השרתים עדיין מעורבים - הם פשוט בלתי נראים למפתח.המונח "חסר" כולל בעיקר שני מודלים של שירות: FLT:0Functions כשירות (FaaS)FIRLT:1 ו-LT:2Backend כשירות 3 (Fa) LT (F)
- (FLT:0)FaaSigFLT:1 מאפשר לך לבצע פונקציות בודדות בתגובה לאירועים - כגון בקשות HTTP, שינויים מסד הנתונים או העלאת קבצים - ללא מתן או ניהול שרתים.
- (FLT:0)BaaSearFLT:1 מספק שירותים אחוריים שנבנו מראש כמו אימות, מסדי נתונים (למשל, Firebase, AWS DynamoDB), ומחסן, אשר ניתן לשלב ישירות אל החזית שלך ללא כתיבת לוגיקה בצד השרת.
עבור APIs, FaaS הוא בלוק הבניין הראשי.כל נקודת קצה של API תואמת לתפקוד (או קבוצה של פונקציות) שפועלת במיכל חסר מדינה, אפסי.ספק הענן מקנה אוטומטית את מספר מקרי הפונקציה כדי להתאים לתנועה הנכנסת, ואתה משלם רק עבור הזמן הנישא במהלך ביצוע - לעתים קרובות מעוגל ל-100 מ"שניות הקרובות ביותר.
זה מנוגד לאדריכלות המבוססות על השרת המסורתי (monolithic או מקוטב) שבו אתה חייב מראש קיבולת, ניהול מדיניות מדרג, ולטפל בתשתיות כשלים בעצמך.עם השרתים, הספק מטפל בסובלנות, כתמים, ותכנון יכולת, שחרור הצוות שלך כדי להסרח על תכונות מהירות יותר.
היתרונות של שימוש Serverless עבור APIs
Serverless מציעה כמה יתרונות משכנעים לפיתוח API, במיוחד כאשר הגדלות והיעילות התפעולית הן סדרי עדיפויות.
מיפוי אוטומטי
אחת מנקודות הכאב הגדולות ביותר של אדריכלות מסורתית היא טיפול בגירדות תנועה - בין אם מקמפיין שיווק ויראלי, אירוע מתוכנן, או התקפה DDoS. עם פונקציות ללא שרת, ספק הענן יוצר באופן אוטומטי או הורס מקרים של תפקוד מבוסס על נפח בקשה.אין כללים מדרג ידני, אין יכולת לנחש.הממשק של ממשק API מטפל 10 בקשות לדקה יכול להגיע מיד למיליונים לשנייה, בהנחה שאתה עיצב את הפונקציה שלך להיות פונקציה ללא יכולת נייח.
עלויות יעילות
שרתים מסורתיים לרוץ 24/7, תוך התחשבות בעלויות אפילו במהלך תקופות של idle. Serverless האשמות שאתה רק לזמן ביצוע בפועל.עבור APIs עם תנועה משתנה או נמוכה, זה יכול לקצץ חשבונות על ידי 70% או יותר. ספקים רבים מציעים שכבה חופשית נדיבה (למשל, 1 מיליון AWS Lambda בקשות לחודש), מה שהופך אידיאלי עבור סטארט-אפים וטיפוס.
תחזוקה מופחתת Overhead
אין עדכוני מערכת הפעלה, אין תיקון אבטחה, אין תצורה של איזון עומס - ספק הענן מטפל בכל תחזוקה של תשתיות.שינוי זה מאפשר לצוות שלך להתרכז בלוגיקה עסקית, בדיקה וניסיון למשתמש ולא בהנהלה השרת.
מחזורי מהירות מהירים יותר
פונקציות ללא שרת יכולות להיות מעודכנים באופן עצמאי, ומאפשרות פריסה רציפה עם סיכון מינימלי. בשילוב עם כלי תשתית-קוד כמו המסגרת ללא שרת, Terraform, או AWS SAM, אתה יכול לסובב ערימה שלמה של API בתוך דקות.
המונחים: Observability
ספקי ענן מציעים שירותי ניטור ומיקום (למשל, AWS CloudWatch, Azure Monitor) שלוכדים באופן אוטומטי מדדי תפקוד, יומנים ושיעורי השגיאה.זה מחוץ ל-box Telemetry סימולטורים debugging וקיבולת תכנון בהשוואה להגדרות מסורתיות שבהן עליך להפעיל באופן ידני כל רכיב.
צעדים לבניית ממשקי API סקאלה עם Serverless
בחר ספק ענן ומכשיר
בחירת ספק תלויה במערכת האקולוגית הקיימת שלך, בתקציב ובצרכים של התכונה.שלושת ההיפר-קליירים העיקריים - AWS, Azure ו-Google Cloud - כולם מציעים הצעות PES חזקות. בנוסף, לשקול חלופות קוד פתוח כגון OpenFaaS או Knative אם אתה צריך פריסת סיכונים.
- (ב) [ה]ה'] הוא הבוגר ביותר, עם מערכת אקולוגית ענקית של אינטגרציה (API Gateway, DynamoDB, S3), הוא תומך ב- Nodejs, Python, Java, Go, ו-Runtimes מותאם אישית.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ,0) Google Cloud FunctionseursFLT:1 הוא אידיאלי עבור צוותים שכבר משתמשים בשירותי GCP כגון Firehouse או Pub/Sub, ומציעה רמה חופשית נדיבה.
לאחר בחירת ספק, להשקיע במסגרת כמו ה-FLT:0 ,Serverless Frameworkeurs 1 או FLT:2AWS SAMIRFLT 3 כדי להגדיר את ה- API שלך בקוד (YAML/JSON) ולהפיץ באופן עקבי סביבות.
עיצוב ה- API שלך עם גישה ראשונה בחוזה
לפני כתיבת קוד פונקציה, להגדיר את החוזה ה- API שלך. השתמש ב-OpenAPI Specificationph1 (לשעבר Swagger) כדי לתאר נקודות קצה, לבקשה / אחריות schemas, שיטות אימות וקודי שגיאה. גישה זו מונחת תיעוד מיישרות מראש צוותים אחוריים, מאפשרת בדיקות לעג אוטומטיות, ומייצרת SDKs.
שיקולים עיצוביים מרכזיים ל- API ללא שרת:
- (FLT:0) חוסר-השוויון: ⁇ 1) פונקציונליות לא צריכה להסתמך על זיכרון מקומי או על מערכת קבצים ברחבי הייעודים. השתמש באחסון חיצוני (למשל, דינמודי, Redis) עבור נתוני ישיבה.
- (FLT:0)Cold מתחיל:FLT:1 פונקציות שלא נקראו לאחרונה חוסר ערך עונש (בדרך כלל 100ms-1s) בעוד הספק מיישם את זמן ההחלמה.עיצוב לעיבוד אסימונים שבו ניתן, או להשתמש במטבע מבוזר עבור נקודות קצה רגישות לעקביות.
- (ב) [ה]:0] גדלי מטען: [ה] [הרש"י] ו[ה] יש גבולות (למשל, 10 MB עבור שער API; 6 MB for Lambda synchronous invocation] , מחיקת קבצים גדולים ל-S3 ומעבד אותם באופן סינכרוני.
- (ב) ,0) ,הכוח: ⁇ 1 (ה) להבטיח כי בקשות כפולות (למשל, בשל רטיבות) לייצר תוצאה דומה ללא תופעות לוואי.
3.הפעלת פונקציות אישיות
לכתוב פונקציה ללא שרת עבור כל נקודת קצה של API (או קבוצה הקשורים נקודות קצה לתוך פונקציה אחת באמצעות נתב כמו אקספרס או פלמסק).
- (ב) ⁇ :0) , המשך פונקציות ממוקדות: 1FLT 1 כל פונקציה צריכה לעשות דבר אחד טוב.
- (FLT:0) תחליפי הסביבה עבור תצורה:FreaLT:1 , כתובת מסד נתונים של חנות, מפתחי API, ודגלים תכונה במשתנים סביבתיים, לא בקוד.
- (FLT:0) מינוס תלויות:FLT:1 חבילות פריסה קטנה יותר להפחית את זמן ההתחלה הקר. השתמש בחבילות ספציפיות שפה (חבילת Node.js, כרוב עבור Python) לקוד ללא שימוש בעץ.
- (FLT:0)Implement בנתה את הקלט:FLT:1 Log JSON עם תעודות זהות, תעודות זהות מקבילות, ופעמים הדגימה.זה עוזר ב debugging עקבות מופצות על פני שיחות תפקוד.
דוגמה (Node.js with AWS Lambda):
exports.handler = async (event, context) => {
const productId = event.pathParameters.id;
const product = await getProductFromDatabase(productId);
if (!product) {
return { statusCode: 404, body: JSON.stringify({ error: 'Not found' }) };
}
return { statusCode: 200, body: JSON.stringify(product) };
};
מצגת API Gateway ו-Ring
API Gateway (או שווה ערך) יושב מול הפונקציות שלך, טיפול בבקשת HTTP parsing, throttling, אימות וטרנספורמציה תגובה.
- (ב) ,0) מסתיימים: שיטות HTTP ממפה (GET, POST, PUT, DELETE) ודרכים לפונקציות ספציפיות.
- (FLT:0) Authentication: FLT:1 אפשרויות כוללות מפתחי API, תפקידי IAM, Cognito User Pools (לאימות משתמש), או מחוקקים של Lambda.
- (ב) [13] , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ,0) הכרעה בתוקף: 1FLT (המודל המובנה של API Gateway) כדי לדחות בקשות ממותרות לפני שהן מגיעות לתפקידך, צמצום תחילת הקרים מעל פני השטח.
- (ב) ⁇ :0) ⁇ : ⁇ : ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
5.התחמי והגדרת CI/CD
פריסות אוטומטיות כדי להפחית את השגיאה האנושית ולהגביר את המהדורות האופייניות של צינורות:
- הפעל מבחנים ובדיקות אינטגרציה בסביבה מלחיצה.
- בניית חבילת הפריסה (zip או תמונת מכולה).
- המונחים: Infrastructure-as-code (למשל, Serverless Framework ’sls לפרוס).
- עדכון שלב ה- API ו-Alias/versionמיפוי.
- מעקב אחר בריאות באמצעות בדיקות סינתטיות.
שירותי CI /CD פופולריים עם תמיכה ללא שרת: קוד AWSPipeline, GitHub Actions, GitLab CI, ו- Azure DevOps. השתמש פריסות צנריות כדי לגלגל שינויים בהדרגה.
הפרקטיקה הטובה ביותר עבור סקלאה וביטחון
המונחים: Caching
השתמש ב- Multi-layer caching כדי להפחית את הסבלנות והעלות:
- (ב) [15]: ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ⁇ (ב"א) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0Function-leveleur: 1FLT) השתמש ב-memory caching עבור חיפושים חוזרים של מסד נתונים (אך רק בתוך אותו ייעוד; עבור ריצוף צלב, השתמש בקביים חיצוניים כגון ElastiCache או דינמו-דימאוורר).
מעקב אחר ביצועים ועלויות
הגדר לוחות נתונים עבור:
- (FLT:0) Invocation Count and Error rate.FLT:1 קונסולת ספק הענן מציגה את המדדים האלה, אך השתמש בכלי צד שלישי כמו Datadog או New Relic לניתוח גרפי יותר.
- (ב) ,0) קלף מתחיל (FLT:1) אשר לזהות נקודות קצה סובלים מהתחלות קרות או שימוש במטבע מבוזר או עיצוב מחדש לעיבוד אסימונים.
- (ב) ⁇ :0) , עצלות ושפל (ב"ב) ,ב"ה) , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ,0) ל- Endpoint.FLT:1Break Down Cost by function to Optimise יקרים.
וודאו את נקודות הקצה שלכם
API ללא שרת נחשפים לאינטרנט, כך שבטחון חייב להיות מושמד:
- (FLT:0) Authentication: 1FLT (שימוש ב-OAuth2/OIDC זורם עם ספקי זהות (Auth0, Cognito, Azure AD) נמנעים מלגלגל את האימות שלך.
- (הופנה מהדף LT:0) אישור: 1FLT (ה) יישם שליטה על גישה מפורשת היטב בתוך הפונקציה באמצעות נקודת החלטה מדיניות (למשל, Casbin, OPA).
- (FLT:0) Inputation:FLT:1 תמיד מסננים ומאמת קלטות - גם אם שער ה- API מבצע בדיקות בסיסיות.
- ניהול:0 (Clis Management:FLT:1) מאגרי מידע ומפתחי API בכספת (מנהל סודות של AWS, Azure Key Vault) ו-Restretime, אף פעם לא בקוד.
- (FLT:0 Network בידוד:Build:cioFLT:1) מקום פועל בתוך VPC אם הם צריכים לגשת למשאבים פרטיים (למשל, RDS) להיות מודע לכך שהוספת VPC יכולה להגדיל את זמני ההתחלה הקרים; להשתמש בנקודות קצה VPC במידת האפשר.
טעויות יד בחסד
לבנות עמידות ל- API שלך:
- (ב) [13] תורים מתים (DLQs): 1FLT:1 עבור ייעודים סינכרוניים (למשל, פונקציות SQS-triated), להגדיר DLQ כדי ללכוד אירועים כושלים לניתוח מאוחר יותר.
- (ב) ⁇ :0) , 000 ⁇ ⁇ : כאשר קוראים שירותים חיצוניים, נסו עם ג'ייטר כדי להימנע רעם העדר.
- (ב) ,0) הפוך מבני שגיאה עקביים: FLT:1 תמיד להחזיר את ג'ייסון עם שדות "טרור" ו"מסאז', בתוספת מזהה מתאם עבור פיזור.
- (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
אתגרים ומייגים
התחלה קרה
התחלה קרה היא המגבלה חסרת השרתים המדוברת ביותר:
- (ב) ,0) צ'אוו מהר יותר במשרה מהירה יותר: FLT:1 Python ו Node.js יש התחלה נמוכה יותר מאשר Java או C#.
- (ב) ,0) ,Use Prod מטבע: FLT:1 לשמור על מספר מינימלי של מקרים חמים (אך אתה משלם עבור זמן idle).
- (ב) ⁇ :0) , שמור על חבילות קטנות ואופטימיות.
- (ב) לדוגמה, נספח: 202 נקודות זכות לזיכרון: FLT:1 למשל, להחזיר 202 קיבל מיד את הבקשה לתפקיד רקע.
המונחים: go
שירותים ללא שרת הם קנייניים, אבל אתה יכול להפחית את התלות על ידי:
- (ב) ,0) שילובים מופשטים: FLT1 Frameworks כמו FLT:2 ,Serverless FrameworkFLT 3: תמיכה במספר ספקים, ומאפשרת יכולת כניסה בעלות של תכונות מסוימות.
- (FLT:0) שמירה על לוגיקה עסקית עצמאית: FLT:1eur כותב פונקציות שמקבלות אובייקטים אירוע גנרי ולהשתמש בדפוסי הסתגלות עבור SDKs ספציפיים בענן.
- (FLT:0) לצד קוד פתוח ללא שרת: פתיחות 1 ו- Knative יכול לרוץ על כל אשכול Kubernetes, המציע יכולת מעבר, אך דורש עבודה מבצעית נוספת.
דיון ובדיקה
פיזור מקומי של פונקציות ללא שרת יכול להיות מסובך.
- כלי הסימולציה המקומי של ספק ה-HDCloud: FIRLT:1 , Azure Functions Core Tools, או Google Cloud Functions Framework.
- (ב) ויקרא: ויקרא י"א: ⁇ : ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (ב) ⁇ :0) , ⁇ : ⁇ 1 (AWS) או Insights (אזור) כדי לעקוב אחר בקשות מקצה לקצה על פני פונקציות ושירותים מרובים.
השתמש במקרים ודוגמאות
API ללא שרת הוא אידיאלי עבור תרחישים רבים:
- (FLT:0) החזרים חוזרים לאפליקציות ניידים:IRLT:1 , אימות יד, פעולות CRUD והעלאה קבצים ללא מתן שרתים.
- (ב) ,0Webhook המקלטים: FLT:1 Ingest Events from צד שלישי שירותים (GitHub, Stripe) ומעבד אותם באופן סינכרוני.
- (FLT:0) צינורות נתונים בזמן אמת: FLT:1 משלב עם אוטובוסים אירועים כמו EventBridge או Pub/Sub כדי לעבד נתוני הזרמת מידע.
- (FLT:0)GraphQL APIs: FIRLT:1 השתמש AppSync (AWS) עם Lambda פותרrs עבור שכבת GraphQL מנוהלת לחלוטין.
- (ב) ⁇ :0) מיקרו-שירותים בינלאומיים: החלפה 1:1, שירותי מונוליטיים מורשת עם פונקציות קטנות, עצמאיות.
לדוגמה, חברת SaaS עשויה לפרוס ממשק API של ניהול משתמשים באמצעות ממשק API + Lambda + DynamoDB. נקודת המוצא ליצירת משתמשים מאמתה את הקלט, כותבת ל-DymoDB, שולחת אימייל בברכה באמצעות SES, ומחזירה תגובה 201 - כל זאת במסגרת פונקציה אחת.כפי שבסיס המשתמש גדל, מסד הנתונים יכול להגדיל את היקף הרכב, ואת הביצועים באופן אוטומטי ללא שינויים.
מסקנה
אדריכלות ללא שרת מספקת דרך מעשית לבניית APIs כי קנה באופן אוטומטי, עלות צפויה, ותפתח במהירות. על ידי התקנת שרתים משם, מפתחים יכולים להתמקד באספקת תכונות שחשוב למשתמשים.עם זאת, הצלחה דורשת עיצוב זהיר - חוסר מצב, הבנה קר להתחיל מסחר-offs, וליישם יישומים חזקים אבטחה וצייתנות צוות.התחל קטן: בחר קצה אחד, לפרוס אותו עם מסגרת כמו מסגרת ללא תנאי, שמירה על שירותי אבטחה יעילה יותר, תוך כדי שיפור עצמים יעילה יותר, תוך כדי שיפור עצמים של אנשים אחרים.
(ב) לקרא עוד, לחקור את התיעוד הרשמי של ה-FLT:0 (AWS LambdaFLT:1, 2) , ⁇ ⁇ ⁇ ; ⁇ ⁇ ; ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇