Коли розробники говорять про архітектуру, уявлення зазвичай зводиться до організації коду. Усі погоджуються, що порядок краще за хаос, що SOLID допомагає створювати незалежні компоненти, які легко замінювати, тестувати та розширювати. Усе це правда, але це лише половина реальної картини.
Є інший аспект архітектури, про який майже ніхто не говорить. І він не пов’язаний безпосередньо з чистими залежностями або структурою проєкту. Він пов’язаний зі швидкістю. З тим, як саме архітектура впливає на продуктивність команди й визначає, як швидко система здатна розвиватися.
Щоб побачити це, достатньо змінити ракурс. Уявімо, що програмний продукт — це бочка, яку команда наповнює функціями. Кожна реалізована фіча — це ніби нове відро води, яке ми вливаємо в систему. Здається логічним, що з часом ця бочка має наповнюватися дедалі більше.
Але архітектура — це не лише форма бочки. Це сукупність маленьких отворів, через які непомітно витікають і функції, і час, і продуктивність. Ці отвори не видно на діаграмах, вони не порушують SOLID, і код може виглядати акуратним. Проте саме вони щодня зменшують швидкість команди.
І саме про цю частину архітектури зазвичай не говорять.
Чому SOLID не рятує від втрати швидкості
Принципи SOLID допомагають організувати окремі частини коду. Але вони нічого не говорять про поведінку всієї системи. Можна чесно дотримуватися SRP, робити красиві дрібні компоненти, але при цьому мати проєкт, який рухається зі швидкістю густої смоли.
Проблема не в тому, що код нечистий. Проблема в тому, що поведінка, яка має бути спільною, розмазана по різних частинах.
Одна таблиця по-своєму фільтрує дані, інша по-іншому працює з пагінацією, третя використовує особистий спосіб обробки помилок. Формально все виглядає коректно, але архітектура отримує десятки маленьких отворів, через які системно витікає продуктивність.
Справжній


