Datadog використовує Codex для перевірки коду на системному рівні
За допомогою Codex Datadog додає системний контекст у кожну перевірку коду, щоб запобігати інцидентам та захищати довіру клієнтів.
Datadog(відкривається у новому вікні) керують однією з найбільш широко використовуваних у світі платформ телеметрії, допомагаючи компаніям відстежувати, усувати проблеми та захищати складні розподілені системи. Коли щось іде не так, клієнти покладаються на швидке виявлення проблем з боку Datadog, що означає, що принципи надійності мають бути закладені задовго до того, як код потрапить у експлуатацію.
Для інженерних команд Datadog це робить перевірку коду важливим моментом. Справа не лише у виявленні помилок, а й у розумінні того, як зміни поширюються по взаємопов'язаних системах — області, де традиційний статичний аналіз та інструменти на основі правил часто виявляються недостатніми.
Аби впоратися з цим завданням, команда AI Development Experience (AI DevX) компанії Datadog звернулася до Codex, агента автоматизації програмування від OpenAI, який привносить у перевірку коду системні міркування та виявляє ризики, які люди не можуть швидко помітити в масштабі.
«Економія часу — це реально і важливо», — говорить Бред Картер, керівник команди AI DevX в Datadog. «Але запобігання інцидентам на нашому рівні набагато важливіше».
Ефективна перевірка коду в Datadog завжди значною мірою спиралася на старших інженерів — людей, які добре розуміють кодову базу, її історію та архітектурні компроміси, щоб виявляти системні ризики.
Однак такий глибокий контекст важко масштабувати, і ранні інструменти для перевірки коду на базі ШІ не вирішували цю проблему; багато хто з них функціонував як просунуті лінтери, відзначаючи поверхневі проблеми і упускаючи при цьому ширші системні нюанси. Інженери Datadog часто вважали їхні пропозиції надто поверхневими чи спотвореними, і просто ігнорували їх.
Компанія Datadog розпочала пілотне тестування Codex, агента програмування від OpenAI, інтегрувавши його у робочі процеси розробки в реальному часі. В одному з найбільших репозиторіїв компанії, що найактивніше використовується, кожен пулл-реквест автоматично перевірявся Codex. Інженери реагували на коментарі від Codex, ставлячи «палець вгору» або «палець вниз» і ділилися неформальними відгуками між командами. Багато хто зазначив, що відгуки Codex виглядали корисними, на відміну від попередніх інструментів, які давали помилкові або поверхневі пропозиції.
Щоб дізнатися, чи здатний ШІ-інструмент для перевірки коду на щось більше, ніж виявлення стилістичних помилок, Datadog створив стенд для відтворення інцидентів.
Замість використання гіпотетичних сценаріїв команда звернулася до минулих подій. Вони відтворили пулл-реквести, які свого часу призвели до інцидентів, запустили Codex для перевірки кожного з них, якби він був частиною огляду на той момент, а потім запитали інженерів, відповідальних за ці інциденти: чи зміг би коментар Codex тоді змінити ситуацію?
У більш ніж 10 випадках, що становить приблизно 22% від усіх інцидентів, вивчених Datadog, інженери підтвердили, що якби наданий Codex коментар був отриманий тоді, ситуацію можна було б виправити. Результат показав набагато більшу ефективність, ніж будь-який інший подібний інструмент.
Оскільки ці пулл-реквести вже пройшли перевірку коду, повторний тест показав, що Codex виявив ризики, які на той момент рецензенти не помітили, при цьому він доповнював людські судження, а не заміняв їх.
Аналіз Datadog показав, що Codex впевнено виявляв проблеми, які були очевидні під час розгляду лише безпосереднього diff коду, і не могли бути виявлені з застосуванням детермінованих правил.
Інженери описували коментарі Codex як щось більше, ніж «бот-шум»:
- Codex вказував на взаємодії з модулями, які не зазначалися в diff
- Було виявлено відсутність тестового покриття у сферах міжсервісної взаємодії
- Це підкреслило зміни в контракті API, які несли ризик для подальших процесів
«Для мене коментар Codex — це як порада від найрозумнішого інженера з усіх, із ким я коли-небудь працював, у якого ще й нескінченно багато часу на пошук багів. Він бачить зв'язки, які мій мозок не в змозі навіть одночасно утримати в пам'яті.»
Саме здатність пов'язувати відгуки за результатами перевірки з реальними показниками надійності виділила Codex в оцінці Datadog. На відміну від інструментів статичного аналізу, Codex зіставляє намір пулл-реквеста із внесеними змінами в код, аналізуючи всю кодову базу та залежності, щоб виконувати код та тести для перевірки поведінки.
«Це був перший інструмент, який дійсно враховував різницю між версіями у ширшому контексті програми», — говорить Картер. «Сказати, що ми були приємно здивовані — нічого не сказати.»
Багато розробників повністю переглянули свої принципи взаємодії з ШІ-інструментом для перевірки коду. «Я почав ставитися до коментарів Codex як до справжнього зворотного зв'язку при огляді коду», — ділиться Тед Векслер, старший інженер-програміст Datadog. «Тут уже не виникає бажання прогорнути чи проігнорувати: на його коментарі справді варто звертати увагу.»
Після цього компанія Datadog зайнялася масштабним запровадженням Codex у роботу команд розробників. Сьогодні більше 1 000 фахівців регулярно використовують цей інструмент.
Зворотний зв'язок переважно виникає природним чином, а не через формальні метрики в інструменті. Інженери публікують у Slack корисні інсайти, конструктивні коментарі та моменти, коли Codex допоміг їм по-новому поглянути на проблему.
Крім істотної економії часу, всі команди вказували на значніші трансформації робочих процесів.
«Codex змінив моє уявлення про те, якою має бути перевірка коду. Справа не в тому, щоб мавпувати наших найкращих фахівців-рецензентів. Ідеться про пошук критичних помилок та прикордонних випадків, які людям складно помітити під час перегляду окремих змін.»
Більш масштабний ефект для Datadog полягав у зміні визначення перевірки коду. Замість того, аби розглядати перевірку як контрольну точку для виявлення помилок або оптимізації часу циклу, команда тепер сприймає Codex як основну систему забезпечення надійності, партнера та помічника, який:
- Виявляє ризики, виходячи за межі того, що окремі рецензенти можуть утримувати в контексті
- Визначає міжмодульні та міжсервісні взаємодії
- Підвищує впевненість у роботі над великими проєктами
- Дозволяє рецензентам зосередитися на архітектурі та дизайні
Це збігається з ідеєю пріоритетів у розробці, яку просувають лідери компанії Datadog: надійність і довіра важливі не менше, а іноді й більше, ніж швидкість.
«Ми — платформа, на яку компанії покладаються, коли все інше виходить з ладу», — говорить Картер. «Запобігання інцидентам зміцнює довіру наших клієнтів до нас.»


