Datadog korzysta z Codex do przeglądu kodu na poziomie systemu
Codex zapewnia firmie Datadog kontekst obejmujący cały system podczas każdego przeglądu kodu, aby zapobiegać incydentom i chronić zaufanie klientów.
Datadog(otwiera nowe okno) obsługuje jedną z najczęściej używanych platform obserwowalności na świecie, która ułatwia firmom monitorowanie, rozwiązywanie problemów i zabezpieczanie złożonych systemów rozproszonych. W przypadku awarii klienci mogą polegać na rozwiązaniach Datadog, które szybko wykrywają problemy, co oznacza, że funkcje zapewniania niezawodności muszą być zaimplementowane na długo zanim kod trafi do produkcji.
Dla zespołów inżynierów Datadog sprawia to, że przegląd kodu nabiera szczególnego znaczenia. Nie chodzi tylko o wykrywanie błędów, ale o zrozumienie, w jaki sposób zmiany wpływają na powiązane ze sobą systemy – jest to obszar, w którym tradycyjne narzędzia do analizy statycznej i oparte na regułach często są niewystarczające.
Aby sprostać temu wyzwaniu, zespół firmy Datadog ds. rozwoju sztucznej inteligencji (AI DevX) skorzystał z narzędzia Codex – agenta kodowania firmy OpenAI, który wnosi rozumowanie na poziomie systemu do przeglądu kodu oraz wykrywa zagrożenia, których ludzie nie są w stanie dostrzec przy dużej skali.
„Oszczędność czasu jest realna i znacząca” – mówi Brad Carter, kierownik zespołu AI DevX firmy Datadog. „Jednak zapobieganie incydentom jest znacznie ważniejsze przy naszej skali”.
Skuteczny przegląd kodu w firmie Datadog tradycyjnie opierał się w dużej mierze na starszych inżynierach – osobach, które rozumieją bazę kodu, jej historię i kompromisy architektoniczne na tyle dobrze, aby dostrzec ryzyko systemowe.
Jednak tego rodzaju głęboki kontekst jest trudny do skalowania, a wczesne narzędzia do przeglądu kodu AI nie rozwiązywały tego problemu; wiele z nich funkcjonowało jak zaawansowane lintery, sygnalizując powierzchowne problemy, pomijając przy tym bardziej złożone niuanse systemowe. Inżynierowie Datadog często uważali, że sugestie są zbyt powierzchowne lub zawierają zbyt wiele szumu oraz ignorowali je.
Firma Datadog rozpoczęła fazę pilotażową Codex, agenta kodującego od OpenAI, wdrażając go do rzeczywistych procesów programistycznych. W jednym z największych i najczęściej używanych repozytoriów firmy każde żądanie pull request było automatycznie sprawdzane przez Codex. Inżynierowie reagowali na komentarze dodawane przez Codex, wybierając kciuk w górę lub w dół i przekazując nieformalne opinie w obrębie zespołów. Wielu zauważyło, że opinie Codex były warte przeczytania, w przeciwieństwie do poprzednich narzędzi, które generowały niejasne lub powierzchowne sugestie.
Aby sprawdzić, czy przegląd wspomagany przez sztuczną inteligencję może wykraczać poza wskazywanie problemów stylistycznych, firma Datadog stworzyła narzędzie do odtwarzania incydentów.
Zamiast posługiwać się hipotetycznymi scenariuszami, zespół powrócił do zdarzeń z przeszłości. Zrekonstruowali oni żądania pull request, które przyczyniły się do wystąpienia incydentów, uruchomili Codex dla każdego z nich, tak jakby były one częścią pierwotnej recenzji, a następnie zapytali inżynierów odpowiedzialnych za te incydenty, czy informacje zwrotne z Codex wpłynęłyby na wynik.
Wynik: Codex wykrył ponad 10 przypadków, czyli około 22% incydentów zbadanych przez Datadog, w których inżynierowie potwierdzili, że informacje zwrotne dostarczone przez Codex byłyby istotne – to więcej niż w przypadku jakiegokolwiek innego ocenianego narzędzia.
Ponieważ te żądania pull request przeszły już przegląd kodu, test powtórkowy wykazał, że Codex ujawnił zagrożenia, których recenzenci wówczas nie dostrzegli, uzupełniając ludzką ocenę, lecz nie zastępując jej.
Analiza przeprowadzona przez Datadog wykazała, że Codex konsekwentnie sygnalizował problemy, które nie są oczywiste na podstawie samego bezpośredniego porównania i nie mogą zostać wykryte przez reguły deterministyczne.
Inżynierowie opisali komentarze Codex jako coś więcej niż „szum bota”:
- Codex wskazał interakcje z modułami, które nie zostały uwzględnione w porównaniu wersji.
- Zidentyfikował braki w zakresie pokrycia testowego w obszarach powiązania między usługami
- Zwrócił uwagę na zmiany w kontraktach API, które niosły ryzyko dla systemów na dalszych etapach
„Dla mnie komentarze generowane przez Codex sprawiają wrażenie, jakby zostały napisane przez najzdolniejszego inżyniera, z jakim kiedykolwiek pracowałem, i który ma nieskończoną ilość czasu na wyszukiwanie błędów. Widzi powiązania, których mój mózg nie jest w stanie ogarnąć jednym spojrzeniem”.
To właśnie możliwość powiązania wyników recenzji z rzeczywistą niezawodnością sprawiła, że Codex wyróżnił się w ocenie Datadog. W przeciwieństwie do narzędzi do analizy statycznej Codex porównuje intencje żądania pull request z przesłanymi zmianami kodu, rozumowaniem dotyczącym całego kodu źródłowego i zależnościami w celu wykonania kodu oraz testami w celu sprawdzenia działania.
„Był to pierwsze rozwiązanie, które faktycznie wydawało się uwzględniać różnice w szerszym kontekście programu” – mówi Carter. „To było nowatorskie i niezwykle pouczające”.
Dla wielu inżynierów ta zmiana całkowicie zmieniła podejście do przeglądu AI. „Zacząłem traktować komentarze Codex jak prawdziwe opinie dotyczące przeglądu kodu” – mówi Ted Wexler, starszy inżynier oprogramowania firmy Datadog. „Nie jest to coś, co można pominąć lub zignorować, ale coś, na co warto zwrócić uwagę”.
Po przeprowadzeniu oceny firma Datadog wdrożyła Codex na szerszą skalę wśród swoich inżynierów. Dziś ponad 1 000 inżynierów używa go regularnie.
Informacje zwrotne pojawiają się głównie w sposób naturalny, a nie poprzez formalne wskaźniki w narzędziach. Inżynierowie publikują w serwisie Slack przydatne spostrzeżenia, konstruktywne komentarze i sytuacje, w których Codex pomógł im spojrzeć na problem z innej perspektywy.
Chociaż oszczędność czasu jest znacząca, zespoły konsekwentnie wskazywały na bardziej znaczącą zmianę w sposobie wykonywania pracy.
„Codex zmienił moje zdanie na temat tego, czym powinien być przegląd kodu. Nie chodzi o to, żeby naśladować naszych najlepszych recenzentów. Chodzi o wykrywanie krytycznych błędów i skrajnych przypadków, które ludziom trudno dostrzec podczas sprawdzania zmian bez szerszego kontekstu”.
Szerszym skutkiem dla firmy Datadog była zmiana w samym definiowaniu przeglądu kodu. Zamiast traktować przegląd jako punkt kontrolny służący do wykrywania błędów lub optymalizacji czasu cyklu zespół postrzega teraz Codex jako podstawowy system zapewniający niezawodność, który pełni rolę partnera:
- Ryzyko wykraczające poza to, co poszczególni recenzenci mogą rozpatrywać w ramach kontekstu
- Podkreślanie interakcji między modułami i usługami
- Większa pewność przy wdrożeniach na dużą skalę
- Recenzenci mogą skupić się na architekturze i projekcie
Ta zmiana jest zgodna z podejściem kierownictwa firmy Datadog do ustalania priorytetów inżynieryjnych, gdzie niezawodność i zaufanie są równie ważne jak szybkość działania, a nawet ważniejsze.
„Jesteśmy platformą, na której firmy mogą polegać, gdy wszystko inne zawodzi” – mówi Carter. „Zapobieganie incydentom zwiększa zaufanie, jakim obdarzają nas klienci”.


