Datadog სისტემურ დონეზე კოდის მიმოხილვისთვის Codex-ს იყენებს
Codex-ის მეშვეობით, Datadog სისტემის მასშტაბის კონტექსტს შეაქვს კოდის თითოეულ მიმოხილვაში, რათა თავიდან აიცილოს ინციდენტები და დაიცვას მომხმარებელთა ნდობა.
Datadog(იხსნება ახალ ფანჯარაში) მართავს მსოფლიოში ერთ-ერთ ყველაზე ფართოდ გამოყენებულ მონიტორინგის პლატფორმას, რომელიც კომპანიებს ეხმარება რთული განაწილებული სისტემების მონიტორინგში, პრობლემების გამოვლენაში, დიაგნოსტიკასა და აღმოფხვრაში, ასევე დაცვაში. როდესაც რაიმე შეცდომა ხდება, მომხმარებლები ეყრდნობიან Datadog-ს, რათა პრობლემები სწრაფად გამოავლინოს, რაც ნიშნავს, რომ საიმედოობა უნდა იყოს ჩაშენებული გაცილებით ადრე, ვიდრე კოდი პროდუქტიულ გარემოში მოხვდება.
Datadog-ის საინჟინრო გუნდებისთვის ეს კოდის განხილვას განსაკუთრებით საპასუხისმგებლო მომენტად აქცევს. საქმე მხოლოდ შეცდომების აღმოჩენაში კი არ არის, არამედ იმის გაგებაში, თუ როგორ ვრცელდება ცვლილებები ურთიერთდაკავშირებულ სისტემებში — სფეროში, სადაც ტრადიციული სტატიკური ანალიზი და წესებზე დაფუძნებული ინსტრუმენტები ხშირად არასაკმარისი აღმოჩნდება.
ამ გამოწვევასთან გასამკლავებლად, Datadog-ის AI Development Experience (AI DevX) გუნდმა მიმართა Codex-ს, OpenAI-ის კოდირების აგენტს, რომელსაც სისტემური დონის მსჯელობა კოდის რევიუში შემოაქვს და წარმოაჩენს რისკებს, რომლებსაც ადამიანები მასშტაბურად ადვილად ვერ ამჩნევენ.
„დროის დაზოგვა რეალურიც არის და მნიშვნელოვანიც,“ – ამბობს ბრედ კარტერი, რომელიც Datadog-ის AI DevX გუნდს ხელმძღვანელობს. „თუმცა ჩვენს მასშტაბებში ინციდენტების პრევენცია გაცილებით უფრო მნიშვნელოვანია“.
Datadog-ში ეფექტური კოდის მიმოხილვა ტრადიციულად დიდწილად ეყრდნობოდა უფროს ინჟინრებს — ადამიანებს, რომლებსაც საკმარისად კარგად ესმით კოდბაზა, მისი ისტორია და არქიტექტურული კომპრომისები, რათა სისტემური რისკის ამოცნობა შეძლონ.
თუმცა, ასეთი ღრმა კონტექსტის მასშტაბირება რთულია, ხოლო ხელოვნური ინტელექტის კოდის განხილვის ადრეულმა ინსტრუმენტებმა ეს პრობლემა ვერ გადაჭრა; ბევრი მათგანი მოწინავე ლინტერებივით იქცეოდა — ისინი ზედაპირულ ხარვეზებზე მიუთითებდნენ, მაგრამ სისტემის უფრო ფართო ნიუანსები მხედველობიდან რჩებოდათ. Datadog-ის ინჟინრები ხშირად თვლიდნენ, რომ რეკომენდაციები ზედმეტად ზედაპირული ან ზედმეტად ხმაურიანი იყო და მათ უგულებელყოფდნენ.
Datadog-მა OpenAI-ის კოდირების აგენტის, Codex-ის, პილოტირება დაიწყო და ის მოქმედი დეველოპმენტის სამუშაო პროცესებში ჩააშენა. კომპანიის ერთ-ერთ უდიდეს და ყველაზე ინტენსიურად გამოყენებულ რეპოზიტორიუმში Codex-მა ავტომატურად შეამოწმა ყველა pull request. ინჟინრები Codex-ის კომენტარებზე დადებით ან უარყოფით რეაქციებს გამოხატავდნენ და გუნდებს შორის არაფორმალურ უკუკავშირს ავრცელებდნენ. ბევრმა აღნიშნა, რომ Codex-ის უკუკავშირი წასაკითხად ღირებული იყო, წინა ინსტრუმენტებისგან განსხვავებით, რომლებიც არაზუსტ ან ზედაპირულ შემოთავაზებებს იძლეოდნენ.
იმის შესამოწმებლად, შეძლებდა თუ არა ხელოვნური ინტელექტის მხარდაჭერით განხორციელებული განხილვა იმაზე მეტს, ვიდრე უბრალოდ სტილისტურ ხარვეზებზე მითითებაა, Datadog-მა ინციდენტების ხელახლა გაშვების სატესტო გარემო შექმნა.
ჰიპოთეტური სცენარების გამოყენების ნაცვლად, გუნდი ისტორიულ ინციდენტებს დაუბრუნდა. მათ თავიდან აღადგინეს pull request-ები, რომლებმაც ინციდენტებში წვლილი შეიტანეს, თითოეულზე Codex გაუშვეს ისე, თითქოს ის თავდაპირველი განხილვის ნაწილი ყოფილიყო, შემდეგ კი იმ ინციდენტებზე პასუხისმგებელ ინჟინრებს ჰკითხეს, შეცვლიდა თუ არა რამეს Codex-ის გამოხმაურება.
შედეგი: Codex-მა აღმოაჩინა 10-ზე მეტი შემთხვევა, ანუ Datadog-ის მიერ შესწავლილი ინციდენტების დაახლოებით 22% , სადაც ინჟინრებმა დაადასტურეს, რომ Codex-ის მიერ მიწოდებული უკუკავშირი მნიშვნელოვან გავლენას მოახდენდა — იმაზე მეტს, ვიდრე ნებისმიერი სხვა შეფასებული ინსტრუმენტი.
რადგან ეს pull request-ს კოდის განხილვა უკვე გავლილი ჰქონდა, ხელახლა გათამაშების ტესტმა აჩვენა, რომ Codex-მა გამოავლინა ისეთი რისკები, რომლებიც განმხილველებმა იმ დროს ვერ შეამჩნიეს, რითაც მან ადამიანის შეფასება შეავსო და არა ჩაანაცვლა.
Datadog-ის ანალიზმა აჩვენა, რომ Codex თანმიმდევრულად აფიქსირებდა ისეთ პრობლემებს, რომლებიც მხოლოდ უშუალო diff-იდან აშკარა არ არის და დეტერმინისტული წესებით ვერ გამოვლინდება.
ინჟინრებმა Codex-ის კომენტარები აღწერეს, როგორც უფრო მეტი, ვიდრე „ბოტის ხმაური“:
- Codex-მა მიუთითა იმ მოდულებთან ურთიერთქმედებებზე, რომლებსაც diff-ში ცვლილება არ შეხებია
- მან გამოავლინა ტესტური დაფარვის ნაკლებობა სერვისთაშორისი დაკავშირებულობის სფეროებში
- მან გამოკვეთა API-ის კონტრაქტის ცვლილებები, რომლებიც რისკს უქმნიდა შემდგომ დამოკიდებულ სისტემებს
„ჩემთვის Codex-ის კომენტარი ჰგავს ყველაზე ჭკვიან ინჟინერს, რომელთანაც კი ოდესმე მიმუშავია და რომელსაც აქვს უსასრულო დრო ხარვეზების აღმოსაჩენად. ის ხედავს კავშირებს, რომლებსაც ჩემი ტვინი ერთდროულად ვერ იტევს.“
სწორედ მიმოხილვის უკუკავშირის რეალურ სამყაროს სანდოობის მეტრიკებთან დაკავშირების ამ შესაძლებლობამ საშუალება მისცა Codex-ს, გამორჩეულად გამოჩენილიყო Datadog-ის შეფასებაში. სტატიკური ანალიზის ინსტრუმენტებისგან განსხვავებით, Codex pull request-ის მიზანს ადარებს წარდგენილ კოდის ცვლილებებს და მთელი კოდური ბაზისა და დამოკიდებულებების გათვალისწინებით მსჯელობს, რათა გაუშვას კოდი და ტესტები და დაადასტუროს ქცევა.
„ეს იყო პირველი, რომელმაც რეალურად გაითვალისწინა ცვლილებები (diff) პროგრამის უფრო ფართო კონტექსტში“, — ამბობს კარტერი, „ეს უჩვეულო და ბევრის აღმომჩენი იყო.“
ბევრი ინჟინრისთვის ამ ცვლილებამ სრულიად შეცვალა მათი ურთიერთობა ხელოვნური ინტელექტის მიმოხილვასთან. „Codex-ის კომენტარებს ისე დავუწყე მოპყრობა, როგორც კოდის მიმოხილვის რეალურ გამოხმაურებას,“ — ამბობს თედ უექსლერი, Datadog-ის პროგრამული უზრუნველყოფის უფროსი ინჟინერი. „არა ისეთი რამ, რასაც ზედაპირულად გადავავლებდი თვალს ან უგულებელვყოფდი, არამედ რაღაც ისეთი, რაც ნამდვილად ყურადღების მიქცევად ღირს“.
შეფასების შემდეგ Datadog-მა უფრო ფართოდ დანერგა Codex თავის საინჟინრო გუნდებში. დღეს მას რეგულარულად 1 000-ზე მეტი ინჟინერი იყენებს.
უკუკავშირი მეტწილად ბუნებრივად იკვეთება და არა ინსტრუმენტში არსებული ფორმალური მეტრიკების მეშვეობით. ინჟინრები Slack-ში წერენ სასარგებლო მიგნებების, კონსტრუქციული კომენტარებისა და იმ მომენტების შესახებ, როცა Codex მათ პრობლემის სხვა კუთხით დანახვაში დაეხმარად.
მიუხედავად იმისა, რომ დროის დაზოგვა მნიშვნელოვანი იყო, გუნდები მუდმივად მიუთითებდნენ უფრო არსებით ცვლილებაზე იმაში, თუ როგორ სრულდებოდა სამუშაო.
"Codex-მა შემიცვალა წარმოდგენა იმაზე, თუ როგორი უნდა იყოს კოდის მიმოხილვა. მიზანი ჩვენი საუკეთესო ადამიანური შემფასებლების გამეორება არ არის. საქმე ეხება კრიტიკული ხარვეზებისა და ზღვრული შემთხვევების აღმოჩენას, რომელთა დანახვაც ადამიანებს უჭირთ, როცა ცვლილებებს იზოლირებულად განიხილავენ.“
Datadog-ისთვის უფრო ფართო გავლენა იყო ცვლილება იმაში, თუ როგორ განისაზღვრება თავად კოდის განხილვა. იმის ნაცვლად, რომ კოდის განხილვა განხილულ იქნას როგორც საკონტროლო პუნქტი შეცდომების დასაჭერად ან ციკლის დროის ოპტიმიზაციისთვის, გუნდი ახლა Codex-ს აღიქვამს საიმედოობის ძირითად სისტემად, რომელიც პარტნიორის როლს ასრულებს:
- იმ რისკების გამოვლენა, რომლებიც ცალკეული შემმოწმებლების მიერ კონტექსტში გათვალისწინების შესაძლებლობას სცდება
- მოდულებსა და სერვისებს შორის ურთიერთქმედების გამოყოფა
- მასშტაბური გამოშვების მიმართ ნდობის გაზრდა
- ადამიან რეცენზენტებს საშუალებას აძლევს, ყურადღება არქიტექტურასა და დიზაინზე გაამახვილონ
ეს ცვლილება შეესაბამება იმას, თუ როგორ აყალიბებენ Datadog-ის ლიდერები საინჟინრო პრიორიტეტებს, სადაც საიმედოობა და ნდობა ისეთივე მნიშვნელოვანია, როგორც სიჩქარე — თუ უფრო მნიშვნელოვანი არა.
„ჩვენ ვართ პლატფორმა, რომელსაც კომპანიები ეყრდნობიან, როცა ყველაფერი დანარჩენი მწყობრიდან გამოდის,“ — ამბობს კარტერი. „ინციდენტების თავიდან აცილება აძლიერებს ნდობას, რომელსაც ჩვენი მომხმარებლები ჩვენდამი იჩენენ.“


