MS

שאלות נפוצות

ביצועים והתרחבות

13 שאלות ותשובות בנושא ביצועים והתרחבות, מאת Muhammad Shahid, מהנדס תוכנה בכיר בתחום ה־AI ומפתח Backend.

ביצועים והתרחבות

1. אתה יכול לתקן API איטי?

כן. אני מנתח את השאילתות האיטיות ומתקן אותן עם אינדקסים, Aggregation Pipelines, קאשינג ועימוד. ב־Dlux Soft זה קיצר את זמן התגובה הממוצע של ה־API בכ־60%.

2. איך הגדלת את CV Maker מ־200 אלף למיליון משתמשים?

עם אינדקסים ב־MongoDB, Aggregation Pipelines, קאשינג של תגובות ועימוד ב־Backend של Node.js, תוך שמירה על גרסאות יציבות ובלי השבתות.

3. איך אתה מתקן שימוש גבוה ב־CPU של MongoDB?

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

4. מה בנית ל־DOP?

DOP (Data Ownership Protocol, dop.org) הוא פרוטוקול בלוקצ׳יין ממוקד פרטיות שמאפשר למשתמשים לבחור אילו נתונים On-chain הם חושפים, באמצעות חשיפה סלקטיבית מבוססת Zero-Knowledge. פיתחתי את שירותי ה־Backend שלו: ה־API, שכבת הנתונים והחיבור לבלוקצ׳יין.

5. מה בדרך כלל גורם ל־Timeouts ב־API בקנה מידה גדול?

מניסיוני, שאילתות קריאה כבדות בלי האינדקסים הנכונים ובלי שכבת קאשינג. ב־DOP תיקון בדיוק של זה העלים את ה־Timeouts וייצב את זמני התגובה בעומסי שיא.

6. אתה יכול להגדיל Backend בלי לכתוב אותו מחדש?

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

7. איך אתה שומר על טרנזקציות בבלוקצ׳יין כשצומת RPC נופל?

ב־DOP שילבתי 5 ספקי RPC עם בחירה אקראית ומעבר אוטומטי במקרה של כשל, כך שצומת שנפל אף פעם לא מגיע למשתמש. ההשבתות בטרנזקציות בגלל נפילות של צמתים בודדים ירדו לאפס.

8. אתה יכול לפתור צווארי בקבוק של CPU וזיכרון?

כן. כוונון שאילתות ו־Aggregations, צווארי בקבוק של CPU וזיכרון ובאגים בסשנים הם הבעיות שאני מתקן הכי הרבה במוצרים חיים.

9. אתה משחרר גרסאות בלי השבתה?

כן. בזמן שהגדלתי את ה־Backend של CV Maker מ־200 אלף ליותר ממיליון משתמשים, כל השחרורים היו יציבים ובלי השבתות.

10. אתה יכול להציל מוצר שקורס שוב ושוב בפרודקשן?

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

11. אתה יכול להגדיל מערכות Node.js ו־MongoDB למיליוני משתמשים?

כן. עשיתי את זה בפרודקשן: DOP עברה 300 מיליון משתמשים, TheCryptoBasic משרתת יותר מ־2 מיליון קוראים, והגדלתי את CV Maker מ־200 אלף ליותר ממיליון משתמשים, הכול על Backend של Node.js ו־MongoDB.

12. איך אתה מתכנן REST API עם ביצועים גבוהים?

שאילתות עם אינדקסים, קאשינג ב־Redis לנתיבים עם הרבה קריאות, עימוד, תשובות רזות, ולידציה של בקשות, והעברת עבודה איטית למשימות רקע. ב־Dlux Soft זה קיצר את זמן התגובה הממוצע של ה־API בכ־60%.

13. אתה עושה תכנון מערכות (System Design)?

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