Архитектура ПО в эпоху AI
Ключевые тезисы
- Архитектура — это набор полезных ограничений, которые уменьшают трудозатраты на создание и поддержку системы.
- Цель архитектуры — помочь бизнесу быстрее доставлять фичи и повышать стабильность, а не просто сделать код читаемым.
- Искусственный интеллект является потребителем, а не создателем архитектуры, поэтому роль архитектора остаётся за человеком.
- Ключевой навык архитектора — мышление на уровне абстракций, а не реализаций.
- Простые и понятные архитектурные решения выживают на дистанции.
Основное содержание
Что такое архитектура ПО?
Общепринятого определения не существует. Автор предлагает практическое определение:
Архитектура — это набор решений, которые ограничивают способы разработки системы, чтобы она сохраняла нужные свойства.
Архитектура — это полезные ограничения. Например, запрет на написание всего кода в одном файле даёт взамен читабельность, простоту навигации и меньше конфликтов при командной работе.
Цель архитектуры
Главная цель, по Роберту Мартину («Чистая архитектура»):
Цель архитектуры ПО — уменьшить человеческие трудозатраты на создание и сопровождение системы.
Это означает, что архитектура нужна для того, чтобы бизнес быстрее получал новые фичи с меньшим количеством багов. Принятие архитектурных решений — зона ответственности разработки.
Метрика качества решения: Уменьшит ли новое ограничение трудозатраты на создание или поддержку фич? Если нет — это правило ради правила.
AI и архитектура
ИИ (в виде код-генераторов) сам по себе не развивает архитектуру проекта, а лишь потребляет её. Он опирается на:
- Существующую кодовую базу (что может perpetuровать легаси).
- Правила и скилы (skills), описанные разработчиками в MD-файлах.
Вывод: Потребность в чётко описанной архитектуре растёт, чтобы проект не превратился в «помойку». За архитектуру по-прежнему отвечает человек. На рынке появляется новая роль — Agentic AI Developer, где разработчик выступает как «босс», принимающий решения, а ИИ — как ассистент, выполняющий рутину.
Мышление абстракциями
Ключ к архитектурному мышлению — думать на уровне абстракций, а не реализаций (имплементаций).
Абстрактное мышление — это способность выйти за рамки текущих деталей и сконцентрироваться на исследовании идеи или задачи.
Пример: Интеграция системы логирования
- Обычный подход: Прямая интеграция конкретного инструмента (например, Sentry) по всему коду.
- Архитектурный подход (с абстракцией): Создание общего модуля
loggerс собственным интерфейсом, который внутри использует Sentry (или любой другой инструмент).
Преимущества подхода с абстракцией
- Независимость от инструмента: Код зависит от вашего интерфейса, а не от конкретной библиотеки.
- Гибкость при изменениях: Смена инструмента (миграция с Sentry на Coralogix) или изменение его конфигурации происходят в одном месте (в адаптере внутри модуля
logger), а не в тысячах файлов. - Безопасность раскатки: Введение фича-флагов, параллельный запуск двух логгеров для безопасной миграции упрощается до изменений внутри одной абстракции.
Этот подход — применение принципа инверсии зависимостей (D из SOLID): код должен зависеть от интерфейсов, а не от реализаций.
Проектирование абстракции
Энергия должна уходить в проектирование интерфейса:
- Как будет называться абстракция?
- Что будут импортировать другие модули (объект, функция)?
- Какие будут методы/параметры?
- Пример интерфейса логгера: Объект
loggerс методами.error(),.warn(),.info(). Использование объекта в параметрах даёт гибкость и сохраняет обратную совместимость.
Выводы
- Архитектура — это торговля: мы вводим ограничения, чтобы получить выгоду в виде снижения трудозатрат.
- В эпоху AI важность продуманной, документированной архитектуры только возрастает.
- Развитие архитектурного мышления начинается с перехода от мышления реализациями к мышлению абстракциями.
- Простые и легко объяснимые архитектурные решения (Simple Architecture) являются наиболее жизнеспособными.
- Опыт (как собственный через «боль» миграций, так и чужой через книги и курсы) — ключевой способ развития навыка архитектора.