engineering-design-and-analysis
כיצד להשתמש ב Containerization עם אדריכלות ללא שרת עבור Deployments היברידיים
Table of Contents
מבוא
אדריכלות יישומים מודרנית יותר ויותר לדרוש הן את העקביות של מכולות ואת הגמישות של מחשוב ללא שרת.שלב שתי גישות אלה למודל פריסה היברידית מאפשר לארגונים להפעיל שירותי ליבה יציבים במיכלים תוך כדי עומס משימות מונעות אירוע, משתנה, או אמפיריות כדי לשלב פונקציות ללא שרת.זה אסטרטגיה היברידית מספקת גמישות, יעילות והיקף ללא צורך בהגירה מלאה מעבודות קיימות, באמצעות הבנה, כאשר הם יכולים לשלב אותן קבוצות גמישות, כדי לשנות אותן, כדי לשנות אותן, כדי לשנות אותן, כדי לשנות אותן, כדי לשנות אותן, יעילות, יעילות, יעילות, יעילות, יעילות, יעילות, יעילות, יעילות, יעילות, ורמות, יעילות, ורמות, ולהגדיל את הגדלות, ולהגדיל את היכולת למנוע דרוגנות, ולהגדיל את היכולת למנוע דרוגנות ללא צורך, ולהגדיל אותן, ולהגדיל את היכולת לשנות אותן, ללא צורך, ולהגדיל אותן שיטות עבודה.
במאמר זה, אנו חוקרים את היסודות של מכולות וארכיטקטורה ללא שרת, מתווה את היתרונות קונקרטיים של מיזוג אותם, ולספק מפת דרכים מעשית ליישום פריסות היברידיות.אתה תלמד על דפוסי שילוב, אסטרטגיות ניטור, שיקולים ביטחוניים, ושיטות הטובות ביותר הנמשכות מסביבות ייצור בעולם האמיתי.אם אתה מודרניזציה מונוליטית או בניית מערכת מחשוב ענן חדש, הגישה ההיברידית מציעה נתיב פרגמטי קדימה.
הבנה של אדריכלות המכילה ואדריכלות ללא שרת
כדי לשלב ביעילות את המיכל עם מחשוב ללא שרת, חיוני להבין את המאפיינים הייחודיים ואת המודלים התפעוליים של כל טכנולוגיה.
המונחים: Portability and control
(הכולל) מציע יישום יחד עם כל התלויות שלו (הצינורות, קבצים תצורה, זמן ריצה) ליחידה קלה, עמידה בשם מיכל.
Containers מספקים התנהגות עקבית בכל התפתחות, בדיקות, וסביבת ייצור.הם אידיאליים עבור יישומים המדינה, תהליכים ארוכי טווח, ומיקרו-שירותים הדורשים שליטה על הסביבה בזמן הריצה.
אדריכלות ללא תשלום: Event-Driven Scalability
(המחשבים חסרי השרתים מפשטים את כל ניהול התשתית.מפתחים כותבים פונקציות (חלקים קטנים, מטרות יחיד) ופורסים אותם לפלטפורמה שמתמודדת באופן אוטומטי עם דרוג, איזון וחיובים.ספקים כגון FLT:0AWS LambdaeursFLT:1, FLT:2Zonee Functions for aLT 3, andLT:4 Google Clouds (להלן:0) טרה-T.
Serverless אידיאלי עבור משימות ללא תנאים, קצרות מועד, עיבוד סינכרוני, Webhooks ולוגיקה אחורית המשתנה ללא תנאי.זה מבטל את תכנון היכולת ומפחית את התפוקה התפעולית, אבל הוא גם מציג מגבלות כגון התחלה קרה, משך הוצאה מוגבלת, וחוסר-ביצוע כברירת מחדל.
היתרונות של שילוב Containerization עם Serverless
אימוץ מודל היברידי המנף את שני המכולות ותפקודים ללא שרת פותחים יתרונות ייחודיים שאף גישה לא מספקת בבידוד.
- (FLT:0) סלקציה ואפשרויות חלוקה (Flexibility) 1) Containers יכולים לרוץ בכל מקום: על-premises, בענן, בחוד החנית, בפונקציות ללא שרת להתמודד עם משימות שקשה להכליל ביעילות, כגון עיבוד פרץ או עבודה מתוכננת.
- (FLT:0) רגישות על הביקושFLT:1 - Containers עם פלטפורמות תזמורת כמו Kubernetes יכול בקנה מידה אופקי, אבל קנה מאפס לרמות גבוהות עדיין דורש מתן נקודות.תפקוד ללא תפקוד באופן אוטומטי ואינסוף (עם מגבלות ספק) ללא עיכוב מתן, מה שהופך אותם מושלמים עבור ספייק תנועה בלתי צפויים.
- (FLT:0) Cost EfficiencyFLT:1 - עם מיכלים, אתה משלם עבור מכונות וירטואליות או אשכולות בסיסיים אפילו כאשר הם underutilized. Serverless פונקציות לעקוב אחר מודל תשלום-מבצעי, ביטול עלויות של אדדל היברידית.
- (FLT:0) פיתוח ו Deploymentalph:1 ; Containers להאיץ את הפיתוח על ידי מתן סביבות ניתנות לשיפוץ. פונקציות ללא שרת מאפשרות לך לשלוח תכונות קטנות ועצמאיות במהירות ללא דאגה לגבי תשתיות מעל פני השטח.
- (FLT:0) מבצע SimplivecityFLT:1 - Serverless מסיר את הצורך לנהל שרתים עבור משימות רבות, בעוד מיכלים נותנים לך שליטה על החלקים של המערכת שלך הדורשים תצורה מסוימת, רשתות או מדינה.
המונחים: Hybrid Deployments
מיכלים משולבים בהצלחה וללא שרת דורשים תכנון אדריכלי זהיר.הצעדים הבאים מספקים מדריך מעשי לבניית פריסה היברידית.
שלב 1: שימוש בבקשות הליבה
התחל על ידי אריזה השירותים הקיימים שלך לטווח ארוך, יישומים המדינה, ומיקרו-שירותים לתוך מכולות. השתמש Dockerfiles כדי להגדיר את הסביבה של זמן ריצה, תלותיות, נקודות כניסה.
שלב 2: זיהוי מועמדים ללא שרת
לא כל רכיב מתאים למשימות ללא תנאי, מונעות אירועים שהן קצרות מועד (בדרך כלל מתחת ל-15 דקות) ויכול לסבול עיכובים קלים.
- עיבוד וידאו או וידאו מופעל על ידי העלאת קבצים
- שינויים בנתונים ו- ETL צינורות
- מטפלות Webhook עבור אינטגרציה של צד שלישי
- ניקוי או דיווח עבודות
- אימות ובדיקות אישור
- הודעה בזמן אמת
להעריך כל משימה נגד מגבלות הפלטפורמה הנבחרת ללא השרת.AWS Lambda, למשל, יש מגבלות על זיכרון (10,240 MB), זמן ביצוע (15 דקות), וגודל שכר (6 MB למילוי ייעודים סינכרוניים).
שלב 3: הקמת תקשורת בין Containers ותפקודים ללא שרת
מערכת היברידית דורשת זרימת נתונים חלקה בין שירותים מקוטבים לבין פונקציות ללא שרת.ד דפוסי האינטגרציה הנפוצים ביותר הם:
- (FLT:0)API Gateway + HTTP EndpointsssveFLT:1) - שירותים המכילים לחשוף REST או gRPC נקודות קצה. פונקציות ללא שרת יכול לקרוא נקודות קצה אלה ישירות או להיות מופעל על ידי מסלולים של API Gateway.
- (FLT:0) Mesage QueuesFLT:1) השתמש בשירות תור מנוהל כמו אמזון SQS, Azure Queue Storage, או RabbitMQ. Containers מייצרים הודעות, ותפקודים ללא שרת לצרוך אותם (או להיפך).
- (FLT:0) אפילו BussveFLT:1 - אמזון EventBridge, Azure Event Grid, או Google Eventarc לאפשר מכולות ופונקציות לפרסם ולחתום על אירועים.תבנית זו אידיאלית עבור אדריכלות מגובשת, מונחת אירועים.
- (FLT:0)שירות MeshessFLT:1 - במתקנים מתקדמים, שירות mesh כמו Istio מספק ניתוק אינטליגנטי וצייתנות בין microservices מאוכלים פונקציות ללא שרת לרוץ על פלטפורמה שאינה עולה בקנה מידה עצום (למשל, AWS Mesh עם Lambda).
בחר את התבנית שמתאימה לדרישות השקיפות שלך, לצרכים של טיפול בשגיאות, ולתשתית הקיימת. עבור בקשות סינכרוניות בעלות נמוכה, שיחות ישירות של HTTPS או אינטגרציה של API Gateway עובד בצורה הטובה ביותר.
שלב 4: יישום אחריות וביטחון
סביבות היברידיות מגבירות מורכבות, ביצוע observability קריטי. השתמש בפתרון מרכזי של כניסה ופיקוח כגון ערימה ELK (Elasticsearch Log,stash, Kibana) או שירות ענן-native כמו AWS CloudWatch, Azure Monitor, או GCP תפעול. דיסטריוט עוקב אחר תעודות רכיב באמצעות כלים כגון AWS X-Ray או Openmetry זה מאפשר לך לעקוב אחר שירות ללא תשלום כמו שרת.
אבטחה חייבת לטפל בשני התחומים.יישם את העיקרון של לפחות זכות על תפקידי מכולה ותפקידים ללא תפקוד השרתים. השתמש במנהל סודות (AWS Secrets Manager, HashiCorp Vault) כדי לאחסן את האישורים.נתוני הצפנה במעבר (TLS) ובשאר.עבור פונקציות ללא שרת, לאמת את כל קלט ולהיות מודע להזרקת נקודות תורפה.
Best Practices for Hybrid Deployments
לאחר שיטות מוכחות מבטיח כי הארכיטקטורה ההיברידית שלך נשארת ברסן ומבצעת לאורך זמן.
עיצוב של Interoperability
Define חוזים ברורים בין רכיבים. השתמש ב- APIs, צ'מס אירוע, ופורמטי הודעה (למשל, JSON, Avro, Protobuf) גרסה של ממשקי ה- API שלך ו- Event schemass כדי לאפשר אבולוציה עצמאית של רכיבים מקוטבים וחסרי השרת.הימנע מהפיכה הדוקה; לדוגמה, אל תהטמיעו נקודות קצה ללא תפקוד ישירות בדימוי, במקום להשתמש בסביבה משתנה או שירות מרישום.
סודיות אוטומטית עם CI /CD
לטפל בשני המכולות והפונקציות ללא השרתים כקוד. בנה צינורות CI /CD אשר באופן אוטומטי לבדוק, מכולות (או מיקוד הפונקציה קוד), ופריסה לסביבה המתאימה. השתמש בכלים כמו Terraform או AWS CDK כדי לספק ולגרסה של תשתית התזמורת, שערי API, תורים והגדרות אבטחה. פריסה אוטומטית מקטין את השגיאה האנושית ומהירויות של ההסתירה.
אופטימיזציה של משאבים
עבור מכולות, בגודל הנכון את צמתים של אשכול ולהשתמש באוטומטיות אופקית המבוססת על מדדים CPU / memory. עבור פונקציות ללא שרת, בחר את הקצאת הזיכרון המתאימה (אשר גם להקצות CPU פרופורציונלי) השתמש בבדיקת ביצועים כדי לקבוע את ההגדרות האופטימליות. Monitor עבור בעיות מתעתלות או קרות ונחשבת מטבע עבור פונקציות רגישות ללחות.
עדיפות אבטחה
אימוץ מודל אחריות משותף.עבור מכולות, לשמור תמונות בסיס מינימליות ועד היום. Run מכולות עם משתמשים שאינם-בסיסיים. עבור פונקציות ללא שרת, להשתמש במשתנה סביבה עבור תצורה ולעולם לא לאחסן סודות בקוד. אימות בקשה ברמת תפקוד והגדרת AWS WAF או הגדרות דומות של יישומים אינטרנט מול Gateways.
ניהול המדינה בזהירות
פונקציות ללא שרת הן ללא תנאי מטבען.אם אתה צריך לשתף מדינה עם מיכלים, להשתמש בחנויות חיצוניות כמו Amazon DynamoDB, Redis, או מסדי נתונים יחסיים.חשבו על הבורסות: למשוך מדינה ממסד נתונים מוסיף שקיפות אך שומר על פונקציות ללא הגבלת המדינה.עבור מכולות, המדינה יכולה להיות מנוהלת באמצעות PersisVolClaims ב Kubernetes או על ידי הצמדת ספירת ספירת ספירת ספירת ספירת EBS.
מקרים אמיתיים לשימוש
פריסות היברידיות כבר בשימוש בייצור על פני תעשיות רבות.כאן שלוש דוגמאות מרשימות.
E-Commerce Checkout Pipeline
מיקרו-שירות מאוכל מטפל בזרימת העבודה של Checkout, ניהול מלאי, תשלומים, ויצירה הזמנה.לאחר אישור התשלום, המכל מפרסם הודעה ל תור. פונקציה ללא שרת צורכת הודעה זו ומייצרת חשבונית PDF, שולחת הודעת אישור דואר אלקטרוני ועדכונים מערכת CRM.התפקוד קנה רק כאשר יש צורך, שמירה על עלויות נמוכות עבור הזמנות מזדמנות מדי פעם.
עיבוד נתונים
אלפי מכשירים IoT שולחים נתוני טלמטה לשירות צבירה מקוטב המריצה על Kubernetes.המכולים מבצעים אימות קל משקל ושחיקה. ואז הם דוחפים ערכות נתונים על זרם (למשל, AWS Kinesis). פונקציות ללא תשלום כל שיא, החלת כללי טרנספורמציה ושמירת התוצאות במאגר זמן.
פלטפורמות מדיה
שירות הזרמת וידאו משתמש בכלים כדי להפעיל את מנהל התור המסתובב שלה ואת ההיגיון של העברת תוכן.כאשר משתמש מעלה סרטון, ההעלאה הולכת ישירות ל- S3. אירוע S3 גורם לתפקוד חסר השרת שיוצר אגודל, מתחיל עבודה ארוכת טווח של חלוף על גבי ערכת גיבוי מאונט, ושולח הודעה למשתמש.
אתגרים ושיקולים
בעוד פריסות חזקות, היברידיות מציגות מורכבות שיש לנהל.
קוד פתוח ב- Serverless function
פונקציות ללא שרת חווים קר מתחיל כאשר הם מופעלים לאחר תקופה של חוסר פעילות.זה מוסיף עצלות, אשר יכול להיות בעייתי עבור שיחות API סינכרוניות מ מכולות. Mitigate קר מתחיל על ידי שימוש במטבע מבוזר, בחירת שפה / זמן עם סטארט-אפ מהיר יותר (למשל, Node.js או Python), או הבטחת כי הפונקציה מופעלת באופן קבוע כדי לשמור על זה חם.
אחריות ווויכוח
הפעלת עסקה על פני שטח של מיכל וגבולות ללא שרת קשה יותר מאשר בסביבה אחת. להשקיע בטיול מבוזר ומיקום מובנה.וודא כי כל הרכיבים פולטים תעודות זהות קורלציה וכי עקבות מועברים לגיבוי מרכזי.
שקיפות נתונים
כאשר עדכון מכולה ותפקיד ללא שרת קוראים את אותו הנתונים, עליך לטפל בעקביות בסופו של דבר אם באמצעות חנויות מבוזרות. השתמש מטפלות באירועי idempotent ויישם לוגיקה חוזרת עם backoff אקספוננציאלי. שקול באמצעות תבנית סאגה עבור עסקאות מרובות שלבים המשתרעות על שני מכולות ופונקציות.
ניהול עלויות
בעוד השרתים ללא תשלום עלויות idle, נפח ייעוד גבוה יכול להיות יקר.לעקוב אחר ההוצאות ללא השרת שלך ולהגדיר התראות תקציב. בדומה, Kubernetes אשכולs חייב להיות בגודל הנכון כדי למנוע משאבים ללא בזבז. השתמש במקרים מסוימים עבור מיכלים שבו ניתן.
מסקנה
שילוב של מיכליזציה עם ארכיטקטורות ללא שרת מאפשר לארגונים לבנות מודלים של פריסה היברידית המנצלים את הטוב ביותר של שני העולמות. Containers לספק יציבות, שליטה ויציבות עבור שירותי ליבה, בעוד פונקציות ללא שרת מציעים קנה מידה אוטומטי, יעילות עלויות ופשטות עבור עומסי עבודה מונעים אירועים. על ידי תכנון קפדני של תבניות אינטגרציה, יישום observability ואבטחה, ולאחר שיטות הטובות ביותר עבור אוטומציה ומשאבים, קבוצות אופטימיזציה, יכול ליצור מערכות גמישות וגמישות הן גמישות והן גמישות.
הגישה ההיברידית אינה פתרון בגודל אחד, אלא עבור תרחישים רבים בעולם האמיתי - צינורות מסחר אלקטרוני, עיבוד נתונים של IoT וזרימות עבודה מדיה - היא מספקת הטבות למדידה במהירות, עלות ויעילות תפעולית. כמו גם פלטפורמות קונטינמיזציה וגם פלטפורמות ללא שרת להמשיך להתפתח, הגבולות ביניהם מטושטשים עוד יותר, מה שהופך פריסות היברידיות בחירה ארכיטקטונית נפוצה יותר ויותר.