5 סטטיסטיקות מפתיעות שמוכיחות שלוגים הם לא מספיק טובים

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

laptop

מאת טלי סורוקר

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

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

בואו נסתכל על המספרים.

1. 20% מהשגיאות לא מגיעות ללוג בפרודקשן

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

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

אם ניקח את הממצאים המוצגים כאן צעד אחד קדימה, נוכל לחלק את הפעולות הללו ל-3 קטגוריות עיקריות:

  1. תיעוד של מה שקרה על ידי כתיבה ללוגים, או על ידי הדפסת המידע.
  2. זריקה מחודשת של השגיאה, כך שאחת המתודות שנמצאות בסטאק (Stack) שלנו ידעו איך לטפל בה.
  3. כלום. התעלמות מהשגיאה מבלי לדעת מדוע היא התרחשה מלכתחילה. מהממצאים הללו נראה שפעולה זאת היא פופולארית כמעט כמו כתיבה ללוגים, כך שאין ספק שיש כאן בעיה.

לפני שאנחנו מתחילים לפרט מה הן הבעיות הקיימות בלוגים, בואו נסתכל על המספרים המוצגים כאן לפנינו. 3,067,863 הם Empty Blocks המופיעים, כאמור, ב-16 מיליון Catch Blocks. או במילים אחרות, כ-20% מהשגיאות לא מופיעות בלוגים בכלל. לא המקום הכי טוב להתחיל בו, אם אתם שואלים אותנו.

2. ⅔ מהצהרות הלוגים לא עובדות בפרודקשן

במחקר אחר המבוסס על פרוייקטים וספריות ג’אווה בגיטהאב, נוכל לראות את ההתפלגות של ההצהרות הנשלחות ללוג. לדוגמה, INFO ו-DEBUG מהוות 57.8% מסך כל ההצהרות הנשלחות ללוגים, ובדרך כלל אנחנו נוטים להסיר הצהרות אלה בפרודקשן. גם TRACE נופלת לאותה הקטגוריה, והיא מהווה 5.2% מסך ההצהרות הנשלחות ללוג.

התפלגות ההצהרות הממוצעת בלוג.

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

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

3. למעלה מ-50% מההצהרות שנכתבות ללוגים לא מכילות מידע על מצב המשתנה בזמן השגיאה

בואו נדבר על המידע שאנחנו כן יכולים להשיג מהלוגים שלנו.

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

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

אם נסתכל שוב על המספרים, נראה שיותר מ-50% מההצהרות הנשלחות ללוגים לא כוללות אף משתנה, וכ-95% אחוזים מההצהרות כוללות, בסך הכל, 2 משתנים.

מספר המשתנים הממוצע בכל הצהרה בלוג

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

4. מפתחים מבזבזים 25% מהזמן שלהם על פתרון בעיות

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

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

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

5. כמה אנחנו משלמים על שימוש לא נכון בלוגים?

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

כלומר, החברה משלמת ל-30 מפתחים במשרה מלאה שיעבירו את היום שלהם במציאת ופתרון בעיות. בהתחשב בכמות המפתחים המדוברת, הוותק שלהם בחברה וההוצאות הנלוות, המשמעות היא שהחברה מוציאה כ-6 מיליון דולר בשנה על דיבאגינג (!).

מדובר על מתמטיקה פשוטה. אם 20 מפתחים משקיעים 25% מהזמן שלהם על פתרון בעיות, המשמעות היא שאנחנו משלמים ל-5 מפתחים במשרה מלאה לבצע עבודה ידנית של חיפוש וניטור בעיות שעלולות לפגוע במשתמשים. או במילים אחרות, עשרות אלפי שקלים שמושקעים אך ורק בניסיון למצוא ולתקן בעיות באפליקציה.

בשורה התחתונה

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

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

הכתבה פורסמה לראשונה באנגלית ב-The OverOps Blog

כתב אורח

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

הגב

1 תגובה על "5 סטטיסטיקות מפתיעות שמוכיחות שלוגים הם לא מספיק טובים"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

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

סידור לפי:   חדש | ישן | הכי מדורגים
Tomer
Guest

Just reduce your “try/catch” amount and everything will be ok , and if you decide to put your code inside try/catch block, just do it in smallest code snippet you can!

wpDiscuz

תגיות לכתבה: