Table of Contents

מה זה Serverless Computing - ומדוע זה משנה עבור לקוחות ניידים?

מחשוב ללא שרת, המכונה לעתים קרובות פונקציונליות-אס-א-שירות (FaaS), מייצג שינוי פרדיגמטי באדריכלות בענן.במקום מתן וניהול מכונות וירטואליות או מכולות, מפתחים מעלה פונקציות דיסקרטיות אשר מבצעות בתגובה לאירועים - בקשות HTTP, שינויים במסד נתונים, העלאת קבצים, או תמריצים מתוכננים.ספקי ענן כגון AWS Lambda, Google Functions, Azures, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, ו-Cloud, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, ו-P, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, ו-P, Clouds, Clouds, Clouds, Clouds, Clouds, Clouds, ו-PPPriming, ו-Works, ו-Works, Cloudflarereroprearerearereropreroprearerearerearerearereareretrarearerearerearerearerearerearerearerearereares

עבור מפתחי backend ניידים, השרת מבטיח את היכולת לבנות ולהישיר מהר יותר תוך תשלום רק לשימוש בפועל. אפליקציה נייד טיפוסית חזרה לאחור עשוי לכלול אימות משתמש, הודעות, עיבוד תמונות, סינכרון נתונים, ותזמורת של צד שלישי של API. פונקציות ללא צד. Serverless מתאימים היטב לעומסי עבודה מונעים על ידי אירועים אלה, ללא תנאי עבודה.

כיצד חסר מרפא אדריכלות מסורתית

בגיבוי קונבנציונלי, אתה מפעיל שרת יישומים ארוכה (למשל, Node.js, Python, Java) על מכונה וירטואלית או מכולה.אתה חייב לנהל דרוג, עדכוני מערכת ההפעלה, תיקונים אבטחה ותכנון קיבולת. Scaling לעתים קרובות דורש שדרוגים אנכיים או שכפול אופקי מאחורי איזון עומס, שניהם להוסיף מורכבות מבצעית.

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

עם זאת, פונקציות ללא שרת אינן חופשיות מהמגבלות.זמן ההוצאה להורג הוא בדרך כלל מקופל (למשל, 15 דקות עבור AWS Lambda, 9 דקות עבור פונקציות ענן של Google) זיכרון ו- CPU מוגבלים ל tiers מוגדרים מראש.אין דיסק מקומי המתקיים במילויים - המדינה חייבת להיות מאוחסן חיצונית.

תוצאות חיפוש עבור Mobile Backend Development

עלויות יעילות: לא Idle Compute

שרתים מסורתיים עולים 24/7, גם כאשר משתמשים אינם פעילים. Serverless חיוב מבוסס על משך הביצוע והקצאת זיכרון. עבור אפליקציה ניידת עם תנועה נמוכה או ספירודית, זה יכול לגרום חיסכון דרמטי. פונקציה אימות קטן לרוץ 10,000 פעמים בחודש עשוי לעלות פניות.מודל תשלום-שימוש הוא אטרקטיבי במיוחד עבור סטארט-אפ, אב-טיפוס, ואפליקציות עם ספייקטפיפות עונתיות A 2022 על ידי ניתוח LT0% לעומת 70%) נמוך יותר מאשר לשרת נמוך יותר מאשר נמוך יותר מאשר נמוך יותר מאשר נמוך יותר מאשר נמוך יותר מאשר 0Q2.

« « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « « «

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

המונחים: Operational Overhead

שרתי ניהול, החלת התאמות אבטחה, ניטור שטח הדיסק, טיפול בעדכונים של הקרנל - כל המשימות האלה להיעלם. הצוות שלך יכול להתמקד בכתב לוגיקה יישום ולא הפעלה תשתיות. עבור קבוצות פיתוח ניידות קטנות או מפתחי סולו, הפחתת זה בנטל תחזוקה היא יתרון משמעותי.התחישוב הופך פשוט כמו העלאת קובץ zip או דחיפה לקוד למחזור שגורם ל-Steam/CD.

פיתוח מהיר ומחזורי הפרדה

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

אינטגרציה ללא ים עם מערכות ענן

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

  • (ב) ⁇ :0) ,(א) ,התמדה: 1FLT:1 ,AWS Cognito, Firebase Authentication או th0.
  • (FLT:0) בסיסים נתונים: NSQL חנויות כמו DynamoDB או Firehouse, או ללא שרת כמו Aurora Serverless.
  • (ב) ,0) ,5 , דלי אחסון בענן עבור תוכן מבוסס משתמש.
  • (ב) ⁇ :0) ⁇ : ⁇ 1 Push by AWS SNS, Firebase Cloud Messaging, or Azure Notification Hubs.
  • (ב) §0 (API Gatewaysהמחשה: 1FLT) , Managed HTTP נקודות קצה כי המסלול מבקש פונקציות, טיפול בצמצום, אימות, בקשה אימות.

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

זרימת עבודה עבור תכונות בזמן אמת

יישומים ניידים יותר ויותר להסתמך על עדכונים בזמן אמת - צ'אט, ציוני ספורט חיים, פונקציות שיתופיות. Serverless יכולות להיות מופעלות על ידי שינויים במסד נתונים (למשל, מסמך חדש בבית-החרושת) או על ידי הודעות על תור (למשל, AWS SQS) מודל זה מונחה על ידי מודל זה, סימולטור בנייה מחדש תכונות.לדוגמה, פונקציה יכול להקשיב עבור חדש של סימנים למשתמש, להעשיר פרופיל עם ברירת מחדל, לשלוח ברירת מחדל, לשלוח הודעת דואר אלקטרוני ללא הודעה וניהול.

פיתוח ללא תשלום עבור Mobile Backend Development

בעיות קלות: בעיית חוסר הסבלנות הראשונה

כאשר פונקציה ללא שרת יש ו-#8217; לא הופעלה במשך זמן מה, ספק הענן חייב לספק סביבת הוצאה חדשה - עומס זמן הריצה, ההתחלתית של תלות, וביצוע המטפלת זמן הסטארט-אפ הזה, הידוע בשם Python:0cold StartFLT 1, יכול להוסיף 100-1000 מ"מ של עצלות לבקשה ראשונה.

המונחים: Lock-In and Limited Portability

בניית קשרים גמישים ללא שרת לספק ענן ספציפי & #8217; APIs, סביבת ריצה ושילובי שירות. Migrating מ-AWS Lambda ל-Google Cloud Functions אינה סלילת פשוט - לעתים קרובות דורש מטפלי תפקידים חוזרים, שינוי מקורות אירוע, ועדכון מדיניות IAM זה יכול לסבך אסטרטגיות מרובות עננים או להקשות על מתגים מאוחר יותר, בעוד קוד פתוח, או סכינים, אשר עדיין לא דורשות, כמו פתח, או ניהול תבוסה מופשטת, או ניהול תבוסה.

שליטה מוגבלת על סביבת ההוצאה להורג

עם השרתים, אתה לא יכול להתקין חבילות מערכת מותאם אישית, לשנות את הליבה של OS kernel, או לכוון את אספני האשפה לרוץ זמן ריצה.אם ה backend הנייד שלך דורש ספרייה מסוימת תלוי בינאריות, ייתכן שיהיה עליך לארוז אותו בשכבה Lambda או תמונה רצופה אישית - עדיין כפוף למגבלות הספק.

הוצאות זמן והגבלות משאבים

רוב הפלטפורמות ללא השרתות משלמות זמן ביצוע (למשל, 15 דקות עבור AWS Lambda, 60 דקות עבור Azure Functions על תוכנית פרימיום) משימות ארוכות טווח כגון וידאו Transcoding, עיבוד נתונים אצווה, או הורדות קבצים גדולות אינן מתאימות.בנוסף, זיכרון ו- CPU מוגבלים לתפקוד - באופן זמני עד 10 GB של זיכרון ושותף vCPU מתאים.

דיון, מעקב, ואתגרי אחריות

פונקציות Serverless מחולקות, אמפיריות, ללא תנאי. כלים מסורתיים של פיזור (למשל, הצמדת debugger לתהליך ריצה) אינם זמינים.במקום, מפתחים מסתמכים על logging, מופץ מסלול (למשל, AWS X-Ray, Google Cloud Trace), ו- metrics. Correlating logs על פונקציות מרובות בשימוש במהלך שימוש קבוע יכול להיות מכובש היטב את כלי למידה צלול יותר.

הגבלות ספיגה ו Throttling

בעוד שסולמות ללא שרת באופן אוטומטי, כל ספק מטילות מגבלות על מספר הייעודים המעודכנים בחשבון (למשל, 1,000 עבור AWS Lambda ברוב האזורים, גבול רך שניתן להגדיל) אם האפליקציה הניידת שלך חווה עלייה מסיבית העולה על גבול העומס הקונפלי, בקשות נוספות הן מכווצות וחוזרות 429 או 503 שגיאות.

מורכבות ניהול המדינה

פונקציות ללא שרת הן ללא תנאי על ידי עיצוב.כל מדינה הנדרשת על פני ייעוד חייב להיות מאוחסן באופן חיצוני - במסד נתונים, מטמון (ElastiCache או Redis), או חנות אובייקטים.זה מעצבי דפוס לחשוב באופן יזום על עקביות נתונים, חיבור בריכות ואסטרטגיות caching. עבור גבי אחוריים ניידים שמירה על חיבורי WebSocket או למשתמש ארוך-זמן ארוך-זמן, פונקציות השרתים לא טבעיות כמו פונקציות של שירותי טעינה בזמן אמת.

עלויות חיזוי עבור High-Traffic Apps

בקנה מידה, ללא שרת יכול להיות יקר יותר מאשר מקרים שמורים או מקום.עבור חזרה ניידת כי תהליכים מיליוני בקשות בחודש, העלות של הנפקה מוסיפה. פונקציות CPU-intensive עולה גם יותר כי הם לרוץ יותר. ניתוח 2023 על ידי FLT:0 בשבוע שעבר ב-AWSFLT:1 הראה כי ב גבוה באמצעות מחשב, מיכל מחוספסת היטב על גבי נספח של 2023 או פונקציות פחות צפויות להיות שווה ערך לשרת ללא תשלום ב- 2.

כאשר אין צורך ב- Serverless Makes Sense for Your Mobile Backend

Serverless הוא בחירה מצוינת עבור תרחישים רבים של החזרת מכשירים ניידים, במיוחד כאשר:

  • (FLT:0) אתה בונה MVP או אבטיפוס 1FIRLT וחייב להתחיל במהירות עם השקעה קטנה במעלה.
  • (ב) [15] ⁇ (ב"ב) הוא בלתי צפוי או עונתי (עונה 1) - טיפול ללא משמרות על ספייקטים ללא חתימות ידניות.
  • (ב) ,0) הסגנית שלך מורכבת ממגוון רחב של שירותים קטנים ועצמאיים, אשר ניתן ליישם כפונקציות.
  • (ב) אתה רוצה להשתמש בשירותים מנוהלים של 1FLT עבור אימות, מסד נתונים ואחסון, ורק להדביק אותם יחד עם לוגיקה אישית.
  • (ב) צוותך קטן (FLT) ועדיף לבלות זמן בתכונות אפליקציה מאשר בתחזוקה של השרת.

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

מתי לשקול חלופות

ללא תשלום יכול להיות המתאים ביותר אם:

  • (ב) אתה דורש זמני תגובה של 50 מ"מ לכל בקשה ל- 1:1 - מתחיל קר יכול להיות בלתי צפוי.
  • (FLT:0) החזרתך היא תהליכים ארוכים של זמן רב של זמן רב, כגון וידאו ⁇ , אימון מכונה, או צינורות נתונים מורכבים.
  • (FLT:0) אתה צריך שליטה על הסביבה הממושכת FLT:1 (מודולים של הקרנל, גרסאות ספריות ספציפיות, או פרופילים).
  • (ב) אתה בונה שירות אמיתי בזמן אמתי, עם חיבורים וינטנסיים של WebSocket שבו לכל משתמש יש ישיבה ייעודית.
  • (התנועה שלך גבוהה ויציבה מאוד: 1) שרתים או מכולות עשויים להיות יעילים יותר.

במקרים אלה, לשקול שימוש במכלים (Google Cloud Run, AWS ECS, או Azure Container Instances) עם דחיסות אוטומטי, או תזזנד עם Kubernetes עבור גמישות מקסימלית.קבוצות רבות לאמץ גישה היברידית: שימוש ללא שרת עבור פונקציות מונחות ונמוכות לתפקודים תוך הפעלת שירותים מקוטבים עבור עומסי עבודה קריטיים או ארציים.

שיקולים מעשיים לאימוץ Serverless ב- Mobile Backend

אופטימיזציה של Cold Starts

כדי למזער את ההשפעה של התחלה קרה, לבחור שפה עם זמני סטארט-אפ מהירים (Node.js, Python, או Go) לשמור חבילות הפונקציה ⁇ רק על ידי תלות נדרשת. השתמש במסחר עבור פונקציות רגישות לעקביות אשר ינקראו על ידי משתמשים ניידים לעתים קרובות. שקול להשתמש בלוח זמנים חם כדי להפעיל פונקציות כל כמה דקות, אבל לשקול את העלות הנוספת.

עיצוב לחוסר סובלנות

חיצוני כל המדינה. השתמש מסד נתונים מנוהל (DynamoDB, Cosmos DB, Firehouse) עבור עקשנות נתונים. אי-ציות חיבור החלת עם שכבת מטמון כדי להפחית את הקשר מסד הנתונים על פני פונקציות. להימנע מאחסן כל דבר במדריך המקומי של '/tmp' אלא אם כן אתה בסדר עם זה אבוד בין ייעודים ולא משותף פונקציות.

מיצוי מוקדם

הגדר את הכניסה המרכזית (CloudWatch, Stackdriver, Azure Monitor), יומני מובנה עם תעודות זהות קורלציה, וניתוק מבוזר.שימוש בכלים כמו Lumigo, Dashbird, או Epsagon (כיום New Relic) כדי לקבל חשיפה לתזרימי פעולה.com מפתח: ספירה, משך, שיעור שגיאות, להתחיל עצלות, ו- trotling.

ניהול תלות וחלוקת מורכבות

עבור החזרים ניידים מורכבים עם פונקציות רבות, לאמץ מסגרת המספקת מבנה.מסגרת ללא שרת, AWS SAM, Terraform או Pulumi יכול לעזור לנהל תשתיות כקוד. השתמש ב- CI /CD כדי לבצע בדיקות ופריסה. לארגן פונקציות על ידי תחום עסקי (למשל, 'auth', לא notifications', 'תשלומים') ולשמור כל פונקציה ממוקדת על אחריות אחת.

עלויות ממשל

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

מסקנה

מחשוב Serverless מציע בסיס חזק ופרקמטי לפיתוח backend ניידים, במיוחד עבור צוותים כי מהירות ערך, קנה מידה וצמצום תפעולי overhead.מודל השימוש בתשלום ומדפיות אוטומטיות להפוך אותו אידיאלי עבור יישומים עם דפוסי תנועה משתנים.עם זאת, רטיעת התחלה קר, מנעול-אין, מגבלות ביצוע, ועלויות פוטנציאליות בקנה מידה הם עסקאות אמיתיות שיש להעריך נגד האפליקציה שלך #17 דרישות ספציפיות.

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