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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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

[מעבר שקף]

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