Table of Contents

Shift לכיוון Container-Native Serverless Deployments

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

כאשר ארגונים מאמצים אסטרטגיות מרובות עננים היברידיים, היכולת לארוז יישום פעם אחת ולהפעיל אותו על פני AWS Lambda, Azure Functions, או Google Cloud Run הופכת לתועלת אסטרטגית. מאמר זה חוקר כיצד לפרוס יישומים ללא שרת באמצעות מיכלים Docker, כיסוי מושגים ליבה, תהליכי פריסה שלב אחר שלב, קצבאות ספציפיות פלטפורמה, ושיטות תפעוליות הטובות ביותר עבור עומסי ייצור.

הבנה של יישומים ללא שרת ב Depth

Serverless אינו מתכוון "לא שרתים" זה אומר שהמפתח לא יותר הוראות, הגדרות, או מנהל שרתים.פלטפורמת הענן מקצה באופן דינמי משאבים, קשקשים בתגובה לביקוש, והאשמות רק עבור זמן מקבילה נצרכת.מודל זה מונע על ידי אירועים מתאים microservices, API backends, צינורות עיבוד נתונים, עיבוד קבצים בזמן אמת.

מאפיינים מרכזיים כוללים:

  • (FLT:0) הקצאת אוטומטי: 1 Instances scale from Zero toאלפים בהתבסס על גורמים כגון בקשות HTTP, הודעות תור או שינויים מסד הנתונים.
  • (ב) ,0) ,ל-לכאורה: "אתה משלם על מספר הבקשות והזמן, לא על יכולת המחיקה.
  • (ב) ⁇ :0 ⁇ :0; ⁇ : ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ⁇ :0) תשתיות: ⁇ 1:1 , העדכונים הביטחוניים, ותכנון היכולת הם אחריותו של הספק.

פונקציות מסורתיות ללא שרת (למשל, AWS Lambda באמצעות Node.js או Python לרוץ זמן) להטיל מגבלות על גרסאות ריצה, זמינות ספריה, וגודל החבילה. Docker מכולות להסיר את המגבלות הללו על ידי כך שאתה מאפשר לך לחבילה כל בינארי, ספרייה, או רכיב מערכת הפעלה לתוך התמונה.

למה ⁇ בשרות ללא שרת?

מיכלי Docker מדגימים יישום עם כל סביבת העבודה שלה —libraries, קבצי תצורה וכלים במערכת.כאשר משתמשים בה פריסות ללא שרת, מכולות מציעות מספר יתרונות אדריכליים.

יכולת מעבר לספקים

תמונות המכילות לדבוק יוזמת Open Container (OCI) מפרטת תמונה שנבנתה עבור AWS Lambda ניתן לבדוק באופן מקומי, פרוס ל-Google Cloud Run, או לרוץ ב- Azure Container Instance עם שינויים מינימליים.

ביקורת ריצה אישית

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

יציבות סביבות

מפתחים נתקלים לעתים קרובות בבעיות "זה עובד על המכונה שלי" . Containers להבטיח כי אותה תמונה פועל זהה במחשב נייד, צינור CI /CD, ואת הפלטפורמה ללא שרת הייצור. עקביות זו מפחיתה זמן פיזור ושחרור סיכונים.

התחלה מהירה עם תמונות מייעלות

בניגוד לאמונה הרווחת, פונקציות ללא שרת מבוססות מכולות יכולות להשיג זמני התחלה קרים דומים לשעות ריצה שנבנו כאשר תמונות מייעלות (תמונות בסיס קטנות, שכבות מינימליות, משככי כפי ש-AWS Lambda עכשיו לתמוך בתמונות מכולה עד 10 GB, המאפשרות מודלים גדולים של למידת מכונה או עומסי עיבוד מולטימדיה.

המונחים: docker Containers

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

שלב 1: שימוש ביישום

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

FROM python:3.11-slim as builder
COPY requirements.txt .
RUN pip install --user -r requirements.txt

FROM python:3.11-slim
COPY --from=builder /root/.local /root/.local
COPY app.py .
ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]

ודא שהדימוי חושף את הנמל או מטפל הצפוי על ידי הפלטפורמה ללא השרת.עיין בתיעוד הספק עבור נקודות כניסה הנדרשות (למשל, AWS Lambda מצפה ל-FLT:2 כדי להפעיל את ממשק הזמן).

שלב 2: בניית ומבחן מקומי

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

  • שם מקור:0;0;364 20:002;917 22,113 21,382 17,485 17,485 17,485 17,485 17,873 17,485 17,485 17,485 17,485 17,485 17,485 17,485 17,485 17,485 17,320
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (FLT:0) Google Cloud:BuildFLT:1) תוסף קוד ענן או חיקוי מקומי

מבחן עם אירועים מדגם (למשל, FLT 3: 3) או (FLT:4) כדי לאשר את תהליכי הטיפול כראוי.

שלב 3: לדחוף לרישום המכיל

לדחוף את התמונה לרישום כגון Docker Hub, Amazon ECR, Azure Container הרישום, או Google Artifact הרישום. Tag את התמונה עם מזהה גרסה ייחודית (למשל, FLT:5 או APP) השתמש בצנרת אוטומטית CI /CD כדי לבנות ולדחוף על כל פעולה.

שלב 4: הגדר את הפלטפורמה ללא Server

לכל ספק יש דרך מסוימת לקשר תמונת מכולה לתפקוד חסר השרת:

  • [01:0]AWS Lambdaeur: [FLT] יוצר תפקיד באמצעות "דימוי קונינר" כמקור. ציין את תמונת ה- ECR והגדרת המטפל (אם לא באמצעות נקודת הכניסה ברירת המחדל).
  • (ב) ,0 Zonee Functionseurs:FLT:1 השתמש במיכל מותאם אישית עם Azure Functions Runtime Baseloy באמצעות FLT:6 או ישירות מ- ACR.
  • (ב) ,0) Google Cloud Runve:FLT:1 , עיין בדימוי מיכל לענן לרוץ עם פקודה אחת: FLT 7 השירות קנה מידה של רכב לאפס כאשר הוא idle.

שלב 5: סיקור ו- Monitor

לאחר תצורה, לפרוס את הפונקציה. Monitor מפתח מדדים:

  • (ב) ויקרא י"ד: ויקרא י"ד:
  • (ב) ,0) ,7
  • (ב) ויקרא י"ד: ויקרא י"ד:
  • (ב) ויקרא י"ד: ויקרא י"ד:

השתמש בכלים ספק-native (CloudWatch, Azure Monitor, Cloud Logging) כדי להגדיר לוחות נתונים ואזהרות. שקול לעבור עם OpenTelemetry עבור observability על פני פונקציות מבוזרות.

Cloud Platform דוגמאות לתמיכה ב-Docker

כל שלושת ספקי הענן העיקריים תומכים כיום בתפקודים ללא שרת, אך לכל אחד יש מאפיינים ייחודיים.

AWS Lambda

AWS Lambda הציגה תמיכה בדימויים של מוצרי מכולות בדצמבר 2020.

  • תמונות עד 10 GB (לא מחוספס) מ-Amazon ECR.
  • חייב ליישם את ה- API של Lambda Runtime או להשתמש בדימוי בסיס של AWS.
  • תמיכה בכל Lambda מפעילה (API Gateway, SQS, S3, DynamoDB Streams וכו ').
  • זמני התחלה קרים הם מעט גבוה יותר מאשר פונקציות מבוססות zip, אבל לשפר עם תמונות מטובישות ומטבע מבוזר.

Azure Functions

פונקציות Azure תומכות במיכלים מותאמים אישית על תוכניות Premium ו-AWS (App Service)

  • השתמש בתמונה בסיס לינוקס עם Azure Functions Runtime מותקנת.
  • ההרחבה Azure Container Registry או Docker Hub.
  • תמיכה גורמת ל-HTTP, אחסון Blob, Cosmos DB, Event Grid ועוד.
  • הטוב ביותר עבור עומסי עבודה הדורשים סביבות ריצה עקביות או קבוצות תלות גדולות.

Google Cloud Run

Google Cloud Run היא פלטפורמה מנוהלת לחלוטין, אשר מפעילה מכולות חסרות מדינה על תשתיות ללא שרת.

  • עיין בכל תמונה של מיכל OCI-compliant מ- Artifact Registry או Container Registry.
  • קנה אוטומטי לאפס כאשר לא בשימוש, ללא עלות של שומן.
  • תמיכה בבקשות מבוססות HTTP רק (שימוש ב-UVtarc עבור גורמים מונעים אירוע).
  • כל תיקון מקבל כתובת ייחודית; ניתן לחלק את התנועה עבור פריסות צנריות.

עבור תרחישים מתקדמים, לשקול (FLT:0) Google Cloud Run קונטיינר (Joe Cloud Run) 1:1 עבור הדרכה לזמינות.

תבניות מתקדמות להורדת הפקה

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

Multi-Stage Builds for Image Size Optimization

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

גילוח גילוח עבור Faster CI /CD

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

שימוש ב-Provisioned Concurrency

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

בריאות ו- Graceful Shutdown

Cloud Run ו- Azure Functions תומכים ב-CDC Checkpoints. Implement (FLT:8 ו-FLT:9 Paths to Signalload Balancers. Handle SIGTERM) אותות לחיבורי מסד נתונים קרובים ולסיים בקשות לטיסה.

ניהול חשאי

אל תטביע סודות בתמונות מכולות. השתמש במשתנה הסביבה שמקורו בחנויות חשאיות של הספק:

  • (FLT:0)AWS:IRFLT:1) השתמש במשתנה הסביבה של Lambda עם הצפנה של AWS KMS, או בדיקה מ-Scar Manager ב-Startup.
  • (ב) ,0אזור: ⁇ FLT:1) השתמש בהערות מפתח ונווט בהגדרות יישום פונקציה.
  • (ב) ,0)GCP:IRFLT:1 השתמש ב-Google Cloud Manager באמצעות ספריית לקוח בענן.

שיקולים של Container- Based Serverless

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

Vulnerability Scanning

תמונות סריקה עבור CVEs ידועים במהלך CI /CD באמצעות כלים כגון Trivy, Snyk, או ספק-native סורק (אמזון ECR סריקה, Azure Defender, Google Container Analysis).

שם הספר בלועזית LEST LEST FORIAM

(ה) אם יש צורך לקרוא רק מדלי יחיד, להימנע ממתן גישה ל-S3 (או FLT:10 או FLT:11).

צילום וחדשנות

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

הגנה על שעות ריצה

ניטור אבטחה מתמשך (למשל, משמרת AWS Duty for Lambda, Azure Defender for Cloud) כדי לזהות התנהגות בלתי-מועילה כגון חיבורים גלויים ל- IP זדוניים ידועים.

לקבלת מבט מעמיק יותר על אבטחת עומסי עבודה של מיכל, להתייעץ עם תיעוד האבטחה של ההרחבה:0.

מעקב, אינטגרציה, וכדאיות

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

המונחים: Loging

כתוב יומני מובנה בפורמט JSON כדי לזרז / stderr. Cloud ספקים ללכוד באופן אוטומטי את אלה ולנתב אותם לשירותי ניהול (CloudWatchs, Azure Analytics Logging).

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

פונקציות של OpenTelemetry SDKs כדי לעקוב אחר בקשות מעבר לגבולות פונקציה, מסדי נתונים ו API חיצוני. הייצוא עקבות לספקים כמו AWS X-Ray, Azure Application Insights, או Google Cloud Trace.

מטריקס מותאם אישית

מדדי עסקים Emit (למשל, ספירת סדר, עיבוד לרטיות) באמצעות ספק APIs (CloudWatch Metrics, Azure Monitor, Cloud Monitoring) משתמשים אלה עבור לוחות נתונים ואזהרות.

מעקב אחרי התחלה

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

אסטרטגיות אופטימיזציה

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

זיכרון אמיתי

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

המונחים: Image Size

תמונות קטנות יותר להפחית את עלויות האחסון במרשם ולהפחית את הכדאיות של תחילת הקר. השתמש בתמונות ללא בסיס (למשל, FLT:12) כדי להפשיט חבילות מיותרות.

המונחים: free Tier

כל ספק מציע שכבה חופשית נדיבה עבור פונקציות ללא שרת. עבור יישומים דלתיים, עלויות יכולות להישאר ליד אפס. Monitor השימוש כדי להימנע מהפתעות.

ניהול עלויות Idle Cost Management

בניגוד למכונות וירטואליות, פונקציות ללא שרת לא עולות כאשר idle. עם זאת, תמיד לוודא כי הפונקציה שלך יכולה להגיע לאפס אם היא פועלת על תוכנית המאפשרת idle (Cloud Run, AWS Lambda, Azure Contion Program).

מלכודות פוטנציאליות וכיצד להימנע מהם

צוותים חדשים ללא שרת מבוססי מכולה נתקלים לעתים קרובות בכמה נושאים משותפים.

התעלמות מהשפעת ההתחלות הקרה

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

לא בדיקה מקומית

הסרת תמונות מכולות בלתי נבדקות לבזבז זמן. השתמש בחיקויים כדי לבדוק באופן מקומי לפני לדחוף לרישום.

הגבלת משאבים

כל פלטפורמה ללא שרת מטילה מגבלות על זיכרון, ביצוע זמן, אחסון אפסי.עיין ב-FLT:0)AWS Lambda מכסastureFLT:1 כדי להבטיח את היישום שלך מתאים בתוך הגבולות.

תמונות Overlook Image Permissions

אם הפונקציה אינה יכולה למשוך את תמונת המכולה (בשל אימת התצורה), הפונקציה אינה עומדת בביטול, ודא כי תפקיד ההוצאה להורג של למודה יש 13:13 ו-FLT:14 הרשאות.

שכחה לעדכון תמונות

תמונות המכילות מכילות חבילות מערכת שדורשות תיקון תמונה אוטומטית מחדש על לוח זמנים כדי ליישם עדכונים אבטחה על שכבת בסיס OS.

מסקנה

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

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