דלג לתוכן הראשי

ארכיטקטורה

ארכיטקטורת מיקרו-שירותים: תקשורת, חוסן ועקביות מבוזרת

דפוסים מרכזיים – סינכרון/אסינכרון, Service Discovery, circuit breaker, Saga.

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

בחרו ב-API סינכרוני (REST, gRPC) כשתקציב ההשהיה צר וזרימות בקשה-תגובה. אכפו timeouts, תקציבים לקפיצה ומחיצות משאבים כדי שתלות איטית לא תייבש בריכות נימים.

הודעות אסינכרוניות מנתקות זמינות ומחליקות עומסים. קבלו סמנטיקת לפחות פעם אחת: בנו צרכנים אידמפוטנטיים עם מפתחות דה-דופליקציה. תעדו ערבויות סדר — הרבה תורים מבטיחים מעט מאוד.

גילוי שירותים בסביבות דינמיות נוטים ל-DNS ב-Kubernetes או לרישומים כמו Consul חוצי אשכול. balancing בצד לקוח משפר מיקום אך מסבך ספריות — בחרו גישה אחת לכל מערכת אקולוגית.

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

טרנזקציות מבוזרות נדירות מתכנסות בצורה נקייה; העדיפו Sagas עם פעולות פיצוי, תבנית outbox לפרסום אמין, ו-event sourcing כשחייבים ביקורת. קבלו עקביות סופית במפורש ב-UX.

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

בדיקות חוזה מיישרות יצרנים וצרכנים בלי לאגד את כל סביבת ה-staging. Pact או תאימות סכמה ב-CI תופסים שינוי JSON או Protobuf שובר לפני הפריסה.

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

תצפית חייבת לתפור trace בין קפיצות שירות. תקננו כותרות תיאום, לוגים עם correlation ID ולוחות RED לכל שירות. בלי trace, דיבאג מיקרו-שירותים הופך לשיחת ועידה.

חוויית מפתח כוללת stack מקומי: compose, חוזים ודאטה זרע כדי שפיצ׳ר לא יידרש ל-stage מלא במחשב נייד.

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

חזרה למרכז הידע