זה עובד על המכשיר שלי". כולנו אומרים את זה.אבל האם תסריט הבש שלך עובד כאשר API של צד שלישי לוקח 15 שניות כדי להגיב?האם השירות האחורי שלך מתמודד בקלות עם עלייה פתאומית של שגיאות 503 מספק תשלום? כתיבת שרת הזיוף המלא רק כדי לבדוק את ההיגיון של retry פשוט בסקריפט הוא לעתים קרובות overkill. . Chaos Engineering directly in the terminal אנחנו נשתמש ו-Chaos Proxy מבוסס ענן כדי להזריק כישלונות לבקשות רשת אמיתיות מבלי לשנות שורה אחת של קוד היישום שלך. curl הבעיה: Localhost הוא מושלם מדי כאשר מתפתחים באופן מקומי, עיכוב הרשת הוא כמעט אפס. APIs או עובד (200 OK) או שהם לא (קשר נדחה). השרת כבר עסוק. 5 אחוזים מהבקשות נמוכות. אתה פגע בגבול הריבית. High Latency Intermittent Failures Throttling סימולציה של זה בטרמינל בדרך כלל כרוך מורכב חוקים או כלים מקומיים כגון תנועה: יש דרך פשוטה יותר. iptables tc תגית: Cloud Chaos Proxy במקום להגדיר את מערכת ההפעלה שלך, אנו מעבירים בקשות ספציפיות באמצעות פרוקיס שמפר את התנועה על פי הכללים שאנו מגדירים. אני הולך להשתמש chaos-proxy.debuggo.app עבור זה, אבל הרעיון חל על כל פרוקס מתוכנת. מדריך וידאו (1:27) הנה התהליך של 90 שניות: https://www.youtube.com/watch?v=x_S-guPwPEk&embedable=true Step-by-Step Tutorial 1 הגדרת הכישלון ראשית, אנחנו צריכים להגיד ל- proxy מה לשבור. מטרה: httpbin.org (או תחום ה-API שלך) עיכוב: 7 שניות (עיכוב סימולציה) שיעור כשלון: 1 (100% מהבקשות ייכשלו) קוד שגיאה: 503 שירות לא זמין. Trust the Certificate (ההגדרה "One-Time" Setup) מאחר שאנחנו מעצבים את התנועה HTTPS, אנחנו צריכים לסמוך על תעודת CA של ה- proxy. להוריד את מתוך Dashboard mitmproxy-ca-cert.pem הוסף אותו ל- Keychain Access -> System והגדיר את "Always Trust". MacOS: העתק ל /usr/local/share/ca-certificates/ ולעדכן. Linux: תגית: The Magic Command עכשיו אנחנו משתמשים עם The דגל פרוקסי curl -x curl -v -x http://user:pass@chaos-proxy.debuggo.app:13979 https://httpbin.org/get להבין את התוצאה כאשר אתה מפעיל את הפקודה הזו מספר פעמים: תסריט A (הכאוס): תבחין בטרמינל "התמוטט" במשך 7 שניות (העיכוב שלנו). < HTTP/1.1 500 Internal Server Error < content-length: 56 < content-type: text/plain ... Debuggo Chaos Injection: 500 Error 50% האחרים של הזמן, הבקשה עוברת אל השרת האמיתי: Scenario B (Success) < HTTP/1.1 200 OK ... { "args": {}, "headers": { ... } } Real World Use Cases בדיקת צינורות CI: ודא כי תסריטים ההפצה שלך לא להתמוטט אם תלות היא איטית. Cron Jobs: להבטיח את סינכרון הנתונים שלך לילה חוזרים כראוי על כישלון. בדיקת בריאות מהירה: לפני לחיצה על קוד, בדוק כיצד לקוח ה-API מתמודד עם שגיאה 503. מסקנה אינך זקוק לתשתית כבדה כדי לבדוק את התנגדות הרשת.התקנה פשוטה של פרוקיס מאפשרת לך להזריק כאוס לכל לקוח HTTP – בין אם זה , , או את התסריטים שלך Python / Node.js. curl wget Happy Break!