Архітектура для AI-коду

Архітектура для AI-коду

  • 20 жовтня
  • читати 7 хв
Владислав Лещенко
Владислав Лещенко React Developer, Викладач Комп'ютерної школи Hillel.

Ще кілька років тому вузьким місцем розробки було написання коду. Тепер усе навпаки: AI-асистент за хвилини видає сотні рядків, а людина фізично не встигає їх уважно прочитати.

З'являється нова проблема: код генерується швидше, ніж верифікується. Якщо не змінити підхід до архітектури, швидкість перетворюється на технічний борг, який накопичується непомітно, а потім боляче б'є.

Розберемо, що саме варто закласти в систему, щоб AI прискорював команду, а не підточував проєкт зсередини.

ЧОМУ «ПРОСТО УВАЖНІШЕ РЕВ'ЮИТИ» НЕ ПРАЦЮЄ

Класичний code review розрахований на людський темп: розробник пише PR на 100–300 рядків, колега дивиться його за пів години. З AI темп інший: PR зростають, їх більше, а код виглядає охайно й упевнено, навіть коли містить помилку.

Є ще кілька підступних особливостей AI-коду:

  • він правдоподібний: компілюється, має гарні назви змінних, але може порушувати бізнес-логіку;
  • він локально правильний, але не знає про неписані домовленості проєкту;
  • він охоче дублює логіку замість того, щоб перевикористати наявну;
  • він може підтягнути зайву залежність або вигадати неіснуючий API.

Висновок простий: перевірку не можна покладати лише на увагу людини. Її потрібно вбудувати в архітектуру й інструменти.

1. МАЛІ МЕЖІ: МОЖУЛЬНІСТЬ І ЧІТКІ КОНТРАКТИ

Чим менше «зона ураження» одного фрагмента коду, тим дешевше його перевірити. Тому архітектура для AI-коду починається з чітких меж між модулями.

Що це дає на практиці:

  • AI працює в межах одного модуля й не чіпає решту системи;
  • зміни легко ізолювати, перевірити й відкотити;
  • помилка в одному місці не розповзається по всьому проєкту.

Контракти між модулями мають бути явними: типи, інтерфейси, схеми API (OpenAPI, JSON Schema, Protobuf). Якщо контракт формалізований, його порушення помітить компілятор чи валідатор, а не вимотаний рев'юер о шостій вечора.

Правило: AI може вільно змінювати реалізацію, але не контракт без людського рішення.

2. ТЕСТИ ЯК СПЕЦИФІКАЦІЯ, А НЕ ФОРМАЛЬНІСТЬ

Коли код пишеться автоматично, тести стають головним способом сказати системі, що саме вона має робити. Це вже не додаток до коду, а його опис.

Що варто передбачити:

  • Тести пишуться першими або людиною. Якщо AI пише і код, і тести, він легко підлаштовує тести під власні помилки.
  • Пірамідальна структура. Багато швидких unit-тестів, достатньо інтеграційних, кілька наскрізних сценаріїв для критичних шляхів.
  • Тести на поведінку, а не на реалізацію. Тоді AI може переписувати внутрішність, і тести все одно залишаються корисними.
  • Property-based і snapshot-тести там, де складно перелічити всі випадки вручну.

Зручний орієнтир: якщо після змін, згенерованих AI, всі тести зелені, ви повинні мати достатньо підстав довіряти результату. Якщо такої довіри немає, проблема в тестах, а не в AI.

3. GUARDRAILS: АВТОМАТИЧНІ «ОГОРОЖІ» В CI

Усе, що можна перевірити машиною, не повинно віднімати час у людини. Тому CI-пайплайн для AI-коду має бути суворішим, ніж зазвичай:

  • Лінтери й форматери: єдиний стиль без дискусій.
  • Статична типізація: TypeScript у strict-режимі, mypy для Python тощо.
  • Статичний аналіз і SAST: пошук вразливостей і небезпечних патернів.
  • Перевірка залежностей: заборона нових бібліотек без погодження, аудит відомих вразливостей.
  • Архітектурні тести: автоматична перевірка правил на кшталт «модуль billing не імпортує auth».
  • Ліміти: на розмір PR, складність функцій, покриття тестами нового коду.

4. ПЕРЕДБАЧТЕ, ЩО ПОМИЛКА ПОТРАПИТЬ НА ПРОДАКШН

Навіть найкращі перевірки не гарантують ідеальності. Тому другий рівень захисту: зробити помилки дешевими й помітними.

  • Feature flags: нову функцію можна вимкнути без деплою.
  • Поступові релізи (canary, blue-green): зміна спершу йде на 1–5% користувачів.
  • Швидкий відкат: одна команда, перевірена наперед.
  • Спостережуваність: логи, метрики, трейси й алерти, які показують, що щось пішло не так, раніше за користувачів.
  • Ідемпотентність і безпечні міграції: щоб повторний запуск чи відкат не ламав дані.

Ідея в тому, щоб питання «чи впевнені ми, що код ідеальний?» змінилося на «чи зможемо ми швидко помітити й виправити помилку?».

5. ДАЙТЕ AI КОНТЕКСТ: ДОКУМЕНТУЙТЕ АРХІТЕКТУРУ ДЛЯ НЬОГО

AI не знає ваших домовленостей, якщо вони існують лише в головах команди. Він працюватиме значно передбачувано, коли правила записані.

Корисні артефакти:

  • Файл з інструкціями для агента (наприклад, AGENTS.md чи CLAUDE.md): структура проєкту, команди запуску тестів, стильові правила, заборони.
  • ADR (Architecture Decision Records): короткі записи про те, чому обрано саме таке рішення.
  • Специфікація перед кодом: опис задачі, обмежень і критеріїв готовності ще до генерації.
  • Приклади «еталонного» коду в репозиторії, на які AI може орієнтуватися.

Це подвійна користь: ви менше виправляєте AI і водночас документуєте систему для нових колег.

6. БЕЗПЕКА: AI-КОД НЕ МАЄ ОСОБЛИВИХ ПРИВІЛЕЇВ

Швидкий код легко стає небезпечним. Передбачте:

  • принцип мінімальних прав для сервісів і самих AI-агентів: доступ лише до потрібного;
  • секрети поза кодом: менеджери секретів, сканування репозиторіїв на випадкові ключі;
  • ізольоване середовище для запуску згенерованого коду й автономних агентів;
  • перевірку вхідних даних на межах системи, а не «десь усередині»;
  • ручне ревʼю критичних зон: автентифікація, платежі, робота з персональними даними.

7. ЩО В ПІДСУМКУ МАЄ ПЕРЕВІРЯТИ ЛЮДИНА

Коли рутину беруть на себе інструменти, увага людини звільняється для того, що машина робить гірше:

  1. Чи розв'язує код правильну задачу? Чи відповідає він бізнес-вимозі.
  2. Чи вписується він в архітектуру? Немає дублювання, зайвих абстракцій, порушення меж.
  3. Які ризики й крайні випадки? Що станеться при збої, великому навантаженні, некоректних даних.
  4. Чи зрозумілий він команді? Код, який ніхто не розуміє, стає боргом одразу після мерджу.

Корисне правило: не мерджте код, який ви не змогли б пояснити колезі.

Рекомендуємо курси по темі

ВИСНОВОК

AI не скасовує потребу в архітектурі. Навпаки, він робить її важливішою. Коли написання коду дешевшає, цінність переходить до правил, за якими цей код створюється й перевіряється: до меж, контрактів, тестів, автоматичних перевірок і вміння швидко виправляти помилки.

Команди, які виграють від AI, не ті, що генерують найбільше коду, а ті, що збудували систему, в якій швидкість не ціною надійності. Почніть із малого: додайте архітектурні правила в CI, обмежте розмір PR і запишіть угоди проєкту у файл для агента. Це вже дасть відчутний ефект.

Рекомендуємо публікації по темі