control-systems-and-automation
שימוש במחשבים ללא סרוויר עבור יישומים שמנהלים על אירועים
Table of Contents
הבנת השינוי ללא תשלום עבור מערכות Event-Driven
פיתוח יישומים מודרני יותר מסתמך על ארכיטקטורות שיכולות להתמודד עם עומסי עבודה בלתי צפויים, להגיב בזמן אמת, וקנה מידה ללא התערבות ידנית. מחשוב ללא שרת בשילוב עם מודל מונחה אירוע מספק בדיוק את זה.על ידי ניהול תשתיות מופשטת והוצאה להורג לאירועים דיסקרטיים, הצוותים יכולים לבנות מערכות שהן גם יעילות וגם תגובה גבוהה. גישה זו עברה מניסיונית לדרגה ייצור, כוח מכל דבר מהנתונים של האינטרנט כדי עיבוד מסחר אלקטרוני.
בליבתו, מחשוב השרתים פירושו מפתחים לכתוב פונקציות בודדות הפועלות במיכלים חסרי מדינה, המופעלות על ידי אירועים ספציפיים.הוראות ספק הענן ולנהל את השרתים הבסיסיים, באופן אוטומטי דרוג מאפס לאלפים של הוצאות להורג במקביל. בשילוב עם ארכיטקטורה מונחה אירוע, כל פונקציה מגיבה לגורם ספציפי - כגון בקשת HTTP, קובץ מעלה, שינוי מסד נתונים, או הודעה מתור פתוח יותר.
מה מחשוב ללא שרת באמת מתכוון
Serverless אין פירושו שאין שרתים; אלא, כלומר המפתח כבר לא חושב עליהם.ספק הענן מטפל בכל תכנון היכולת, תיקון, ורמת שירותים כמו AWS Lambda, פונקציות ענן של גוגל, ו- Azure פונקציות לבצע קוד בתגובה לאירועים וחיוב רק עבור זמן מקביל נצרך - נמדדת באופן חד-משמעי במילישניות.
תכונות מפתח של פלטפורמות ללא Serverless Platforms
- (FLT:0) דרוג מתודולוגי: FLT:1 פונקציות בקנה מידה אופקי מבוסס על מספר האירועים הדומים.
- (ב) כל תפקיד בביטול הוא עצמאי.יש לשמור על המדינה באופן חיצוני (למשל, במאגר או בחנות אובייקטים).
- זמן ההוצאה הקצר של ה-FLT:0 (FLT:1) רוב הפלטפורמות לאכוף משך ביצוע מקסימלי (למשל, 15 דקות עבור AWS Lambda) כדי לעודד קוד יעיל.
- (FLT:0) , אפילוt-מניעה גורמים: FLT:1 פונקציות מופעלות על ידי מגוון רחב של מקורות אירועים, משערי API ועד תורים הודעה ועד לוח זמנים המתוכנן.
מאפיינים אלה דורשים שינוי כיצד מפתחים עיצוב יישומים במקום בניית שירותים מונוליטיים, אתה שובר לוגיקה לפונקציות קטנות, מטרות יחיד שניתן להלחין כדי ליצור זרמי עבודה גדולים יותר.
אדריכלות: The Natural Companion
ארכיטקטורה מבוססת אירוע (EDA) היא דפוס עיצוב תוכנה שבו מרכיבים מתקשרים על ידי ייצור ואכילה אירועים.אירוע הוא שינוי משמעותי במדינה - כמו רישום משתמש חדש, חיישן קורא מעל סף, או הזמנה להיות מוצב. מפיקים פולטים אירועים ללא ידע אילו צרכנים יטפלו בהם; צרכנים מגיבים לאירועים שהם מעוניינים בהם.
כיצד אירועים נכנסים בסביבה ללא שרת
למעשה, זרימה טיפוסית ללא שימוש באירוע נראית כך:
- מקור אירוע (למשל, שער API, זרם שינוי מסד נתונים, מכשיר IoT) מייצר אירוע.
- האירוע מואץ על ידי נתב אירוע או מתווך הודעה (כגון AWS EventBridge, Amazon SNS, או Google Pub/Sub).
- ה נתב מספק את האירוע לתפקודים ללא שרת או יותר רשומים.
- כל פונקציה מבצעת את ההיגיון העסקי שלה - עשוי לעבד נתונים, קורא API חיצוני, או לכתוב למסד נתונים.
- הפונקציה עשויה לנפץ את האירועים שלה, מה שגורם לתפקודי מטה הזרם בשרשרת.
דפוס זה הוא חזק במיוחד כי כל פונקציה נשארת ללא תנאי ובאופן עצמאי, אתה יכול להוסיף צרכנים חדשים ללא שינוי המפיקים, ואתה יכול לנסות נכשל ייעודים עם מנגנונים מובנה ממקור האירוע.
למה לשלב מודלים ללא תשלום ו- Event-Driven?
הסינרגיה בין אדריכלות ללא שרת ואירועית הולכת מעבר ל-zwords. ביחד, הם פותרים אתגרים תפעוליים אמיתיים המגנים על יישומים מסורתיים.
סקלאלה ללא סייג
קנה מידה מסורתי דורש או overprovisioning (תשלום עבור יכולת לא מנוצל) או להגיב על ספייקטים עם lag. Serverless פונקציות בקנה מידה מיידי עם כל אירוע.אם אתה מקבל 1,000 אירועים לשנייה, הפלטפורמה ספין למעלה מ-1,000 ייעודים מקבילים.כאשר התנועה טיפות ל- אפס, אתה משלם שום דבר.זה אידיאלי עבור עומסי עבודה עם דפוסים משתנים או בלתי צפויים.
בקרת עלויות גרנר
אתה משלם רק עבור הזמן הנייח שבו הפונקציות שלך לצרוך - כלפי שרתי ה- מילימטר השני. Idle נעלמים.זה הופך יישומים ללא תנאי ללא תנאי ללא תשלום מאוד יעיל עבור מקרים רבים של שימוש, במיוחד אלה עם תנועה בסיסית נמוכה אבל מדי פעם ספייקטים. לדוגמה, צינור עיבוד קבצים שפועל רק פעם אחת ביום אחד לא עולה מינימלי בהשוואה ל- VM ייעודי.
זמן מהיר יותר לשוק
מפתחים מתמקדים בכתיבה של לוגיקה עסקית, לא ניהול תשתיות.ספקי ענן מציעים עשרות מקורות אירועים מנוהלים ואינטגרציה, צמצום הצורך לכתוב קוד רותח.אתה יכול להרכיב זרמי עבודה מורכבים על ידי חיבור שירותים עם מאמץ מינימלי.
המונחים: Simplicity
אין שרתים לתיקון, אין איזון עומס להגדיר, אין כללים חסכוניים אוטומטי להתכוונן.הפלטפורמה מטפלת בכל הפונקציה המבצעת Overhead. Logs ו- metrics נבנות בדרך כלל, מה שהופך את זה קל יותר לפקח על התנהגות תפקודית בשילוב עם decoupling מונע אירועים, אתה יכול לשנות פונקציה אחת ללא השפעה על אחרים, להפחית את הסיכון הפריסה.
שימוש במקרים מעשיים המספקים ערך אמיתי
עיבוד נתונים בזמן אמת
מכשירים IoT, יומני יישומים וזרומי מדיה חברתית מייצרים נתונים רצופים.צנרת ללא שם של אירוע יכול לזרז, לשנות ולנתח נתונים אלה בתוך זמן קצר.לדוגמה, צי של חיישנים פולטים קריאה טמפרטורה תור הודעה.A תהליכים ללא שרתי כל קריאה, בדיקת סף, וכותב התראות למסד נתונים.
דוגמה:0 (AWS LambdaFLT:103) ניתן להפעיל על ידי זרמי Kinesis כדי לעבד נתונים הזרמת בכל נפח.
סוללות עבודה אוטומטיות ותהליכים עסקיים
כאשר משתמש מעלה קובץ לאחסון בענן, אירוע זה יכול לגרום סדרה של פונקציות ללא שרת: אחד לבדוק סוג קובץ, אחד כדי דחוס, אחד כדי ליצור אגודל, ואחד לעדכן תיעוד מסד נתונים.זה מבטל את הצורך עבור סקרים או עבודות cron. באופן דומה, אירוע מסחר אלקטרוני להציב יכול להתחיל זרימת עבודה צו: תשלום, עדכון, שלח דוא"ל, לשלוח דוא"ל, ומשלוח.
chatbots ו- Voice assistants
פונקציות ללא שרת הן מושלמות לטיפול בטבע חסר-המצב, לבקשה של chatbots.כאשר משתמש שולח הודעה, פלטפורמת הצ'אט שולחת בקשה HTTP ל- API Gateway, אשר גורם לתפקוד חסר השרת.התפקוד מעבד את ההודעה - אולי באמצעות NLP - וחוזר תגובה. כי כל אחד בייעוד הוא עצמאי, אתה יכול להתמודד עם אלפי שיחות במקביל ללא ניהול שרת אינטרנט.
מעקב, התראות ותגובה לתקריות
אירועים במערכת כמו כשלי השרת, התראות אבטחה או ירידה בביצועים יכולים לגרום לפונקציות ללא שרת שמודיעות באופן אוטומטי לצוותים של שיחות, ליצור כרטיסים, או אפילו להפעיל תסריטים של תיווך.לדוגמה, אזעקה במדד CPU גבוה יכולה להפעיל פונקציה Lambda שמונעת מקרה לא בריא ומתחילה דפוס חדש.
לנווט את האתגרים
ארכיטקטורות ללא אירועים אינן כדור כסף.הבנת המגבלות שלהם עוזרת לך לתכנן סביבם.
« תחילת הליטנסיכות
כאשר פונקציה הייתה מותנית לתקופה, הפלטפורמה עשויה להיות צורך להחדיר מחדש מיכל חדש, לטעון את הקוד, ולהפעיל כל לוגיקה ראשונית של ההשלמה.זה יכול להוסיף עצלות של כמה מאות אלפי שניות לשנייה, בהתאם ליישומים של זמן ריצה.יישומים הדורשים זמני אופטימיזציה של תת- 100ms (למשל מסחר בקידוד גבוה) עשויים להיאבק עם אסטרטגיות החלות קרות כולל שימוש במספר (התחלות) או תיקון מהיר יותר (למשל, למשל, למשל, מסחר במקרים של LT) של החלמה (למשל, מסחר החלמה) של מספר פעמים (F) פתורים (למשל, החל מתאריך מוקדם יותר, החל מתאריך התחלה מהירה יותר, החל מתאריך מסחר ריצוף מוקדם יותר, כלומר: 0.
ציות ועקשנות
הפעלת בקשה על פני פונקציות מרובות ומקורות אירועים יכול להיות מאתגר.כלי כניסה מסורתיים ניטור אינם מיועדים לפונקציות מבוזרות, אמפימריות.אתה צריך לאמץ שירותי שמירה בענן כגון AWS X-Ray, Azure Application Insights, או Google Cloud Trace. כלי אלה מספקים מקצה לקצה, המאפשר לך לראות את הנתיב כל אירוע לוקח בקבוק או מזהה באמצעות קידוד (J) הוא גם עובר דרך תיקון (J) באמצעות תיקון.
המונחים: Lock-In Risks
כל ספק ענן מציע מקורות אירועים ייחודיים, גבולות ותפקוד פועל.לעבור יישום ללא שרת לענן אחר לעתים קרובות דורש קוד תפקוד חוזר, שינוי אינטגרציה אירועים, ושיקום תשתיות.כדי להקטין את זה, להשתמש בשכבות מופשטות בקוד פתוח כמו מסגרת Serverless Framework או AWS SAM, ולשמור על לוגיקה עסקית עצמאית של SDKs ספציפיים ענן ככל האפשר.
המונחים: constraints
לפונקציות ללא שרת יש מגבלות קשות על הזיכרון (למשל, עד 10 GB ב-AWS Lambda), זמן ההוצאה להורג (15 דקות מקס), גודל המטען ומטבע המגבלות הללו הן בדרך כלל נדיבות, אבל הן יכולות להיות בעייתיות עבור משימות חד-פעמיות או ארוכות טווח.אם המקרה שלך דורש עיבוד של קובץ וידאו גדול שלוקח 30 דקות, שרת ללא תפקוד אינו מתאים לפעמים לעבוד על ידי שירות זה או תכנות טוב יותר, אבל עבודה של AWS, אבל עבודה טובה יותר, אבל עבודה, אבל עבודה, אבל עבודה טובה יותר, אבל שימוש ב-AWS עשויה להישאר במקום העבודה שלך דורש עיבוד קובץ וידאו גדול יותר, אבל עבודה, אבל עבודה, אבל עבודה, אבל עבודה טובה יותר, אבל עבודה, אבל עבודה, אבל עבודה, אבל עבודה, אם זה יכול להיות מתאים יותר, אבל זה יכול להיות מתאים יותר, אבל פעולה, אבל עבודה עם שירות טוב יותר, אבל זה יכול להיות מתאים יותר, אבל עבודה, אבל עבודה, אבל עבודה עם שירותי תצוגה של שירותי תצוגה, אבל עבודה עם שירות הפעלה, אבל זה יכול להיות מתאים יותר, אבל פעולה, אם זה יכול להיות מתאים יותר טוב יותר, אבל זה יכול להיות מתאים יותר, אבל זה יכול להיות מתאים יותר, אבל עבודה, אבל זה יכול להיות מתאים יותר, אבל עבודה כדי לשרת, אבל זה יכול להיות
שיטות טובות לבניית מערכות ייצור-Ready
עיצוב פונקציות להיות Idempotent
מערכות מונחות אירועים יכולות לספק את אותו אירוע יותר מפעם אחת (במשלוחים עלונים) את הפונקציות שלך צריך להתמודד עם ייעוד כפול בחסד - עיבוד אותו אירוע פעמיים לא צריך לייצר תופעות לוואי.זה אומר לעתים קרובות לבדוק אם העבודה כבר נעשה לפני שתמשיך.
השתמש בתקשורת סינכרונית היכן שאפשר
במקום שיש פונקציה אחת התקשרה זה לזה ישירות, פולטת אירוע ותנוחת הפונקציה במורד הזרם להגיב.זה מקטין את ההפיכה ומשפר את סובלנות האשמה.אם תפקוד במורד הזרם נכשל, ניתן לשחזר את האירוע באופן אוטומטי על ידי מתווך ההודעות.
עקבו אחרי Cold Starts and Optimize Costs
שמור את חבילות הפונקציה שלך רזה.כולל רק את הספריות שאתה צריך, ולהימנע מדמיון כבד (למשל, לטעון מודלים גדולים של למידת מכונה על כל ייעוד) עבור פונקציות משומשות לעתים קרובות, לשקול מתן מטבע כדי לחסל את הכדאיות של ההתחלה הקרה.
תהלוכת מעגל מת ומכתב מת
כאשר פונקציה נכשלת שוב ושוב, זה צריך להפסיק להיות מופעל כדי למנוע ציפוי וצריכת משאבים. השתמש תור מכתב מת (DLQ) כדי ללכוד אירועים כושלים לניתוח מאוחר יותר. להגדיר התראות להודיע לצוות כאשר DLQ מצטבר הודעות.
אדריכלות: A Serverless E-Commerce OrderPiline
כדי לראות כיצד המושגים האלה באים יחד, לשקול מערכת עיבוד פשוטה של הסדר אלקטרוני אלקטרוני שנוצרת עם עקרונות ללא שם וללא תנאים.
- (FLT:0) הזמנת אירוע:FLT:1 כאשר לקוח משלים את הסימון, החזית של האינטרנט שולחת בקשה POST ל- API Gateway.זה גורם לתפקוד "סדר-סולן" למנדה העוקב אחר מלאי ופרטים בתשלום.
- אירוע הצלחה: 0(Validation Success Event: FLT:1 אם בתוקף, הפונקציה פולטת אירוע "מוגדר" לאוטובוס EventBridge.
- עיבוד:0 (Parallel: FLT:1 שני פונקציות מנוי לאירוע זה: אחד מעדכן את מצב ההזמנה במסד הנתונים, ועוד שולח הודעת אישור באמצעות SES.
- (FLT:0) אירוע הניכוי של אינסטלטורי: FLT:1 לאחר עדכון מסד הנתונים, מופעלת פונקציה "דהduct-inventory" (למשל, על ידי זרם דינמודי) זה מעדכן את ספירות המניות ונפלט אירוע "מעודכן".
- (FLT:0) אירוע משלוח: FLT:1 פונקציה "יצירת-shipment" מקשיב לאירוע המכוסה המלאי, יוצרת תווית משלוח באמצעות ממשק API של צד שלישי, ומאחסן את מספר המעקב.
- (ב) ,0) שרשרת ההקצאה: 1:1 סוף סוף, פונקציה שולחת SMS ללקוח עם מספר המעקב.
כל צעד הוא עצמאי, קנה מידה באופן אוטומטי, והוא יכול להיות מעודכן מבלי להשפיע על האחרים.אם שירות הדואר האלקטרוני יורד, הניכוי המלאי עדיין ממשיך - הפונקציה הדואר האלקטרוני תשוב דרך תור המכתב המת.
מסקנה
מחשוב אלחוטי וארכיטקטורה מונחת אירועים מהווים שילוב חזק לבניית יישומים שניתן להעלות, עלות יעילה, ותגובה. על ידי הסרת תשתיות ועיבוד אירועים, מפתחים יכולים להתמקד באספקת ערך עסקי ולא ניהול שרתים.הגישה מוכחת על ידי עיבוד נתונים בזמן אמת, זרימות עבודה אוטומטיות, chatbots, ו ניטור מערכות. בעוד אתגרים כמו מתחיל קר, פיזור מורכבות, וספקן יכול להתקיים עם דפוסים מתאימים, הם יכולים להיות מנוהלים עם תבניות עיצוב תקין.
עבור צוותים המעוניינים לחדש את הארכיטקטורה שלהם, החל עם פונקציה קטנה ומוגדרת ללא אירועים המופעלת על ידי שרת ללא אירועים - כגון גורם עיבוד קבצים או מטפל webhook - היא דרך בסיכון נמוך לצבור ניסיון.כפי שאתה מרחיב, תוכל לגלות את הגמישות ואת החוסן כי מערכות לשרת מונעות אירוע מציעים, מה שהופך אותו אבן הפינה של פיתוח ענן מודרני.