Розвиток веб-архітектур (шлях до SOA)
Я собираю информацию по развитию веб-проектов и эволюции веб-архитектур.
В часности, о переходе централизованных LAMP-решений на SOA.
Благодарю всем кто прочитает эту статью и добавит свой отзыв, особенно интересуют отзывы (как программистов, системных архитекторов, так и руководителей проектов) о мотивах и причинах, которые привели к эволюционному (или революционному) изменению архитектуры веб-проектов, смене языков разработки веб-приложений (например с php на java).
---
UPDATE: нашел в 2016 году этот топик... :))))
---
UPDATE: оновлення 2026 року. 18 років запису, це був 32 запис форуму на сайті. За це час багато чого змінилися в IT, еволюціонували архітектури, був сплеск мікросервісів, зараз набуваж популярності оркестрація ШІ-агентів.
Добре що ДОУ досі існує і містить чимало корисних публікацій і коментарів.
Ретроспектива: 18 років, від LAMP-моноліту до оркестрації ШІ-агентів (2008 → 2026)
Коли я писав цей топік у 2008 році, головне питання звучало приблизно так: «як розтягнути Drupal/WordPress/Magento на кілька серверів, не зламавши те, що вже працює». SOA тоді була новою модною парадигмою, ESB виглядали серйозно, а слово «хмара» ще писали в лапках. Цікаво подивитися, як цей шлях виглядає з 2026 року — і які з тодішніх відповідей виявилися правильними, а які стали «архітектурним смітником».
Куди реально пішла галузь
Проєкти на PHP/MySQL виходили з-під контролю на десятках тисяч користувачів. Стандартна реакція тих часів: винести кеш (memcached), розділити читання/запис (replication), додати reverse proxy (Varnish, потім Nginx перед Apache). SOA на практиці зводилася до SOAP-сервісів, ESB і «інтеграційного шлюзу», який у 80 % випадків ставав новим монолітом — просто на XML.
JSON+REST витіснили SOAP майже скрізь, окрім банків і телекому. Фронтенд відокремився від бекенду — спершу через jQuery+AJAX, потім через AngularJS і React. Розробники раптом помітили, що архітектура клієнта — це теж архітектура. Почали окремо обговорювати SPA, BFF (Backend-For-Frontend), API gateway.
Docker (2013), потім Kubernetes
Паралельно прийшов DevOps як обов’язкова частина архітектури: pipeline, IaC (Terraform, Ansible), GitOps. Архітектор без знань CI/CD у 2018 — це вже був дивний персонаж.
Kafka стала базою для подієво-орієнтованих систем. CQRS, Event Sourcing, DDD перестали бути академічними і потрапили у виробничі обговорення (див. сусідні теми форуму). Serverless (AWS Lambda, Azure Functions) розвантажив команди від інфраструктури там, де навантаження нерегулярне.
Багато компаній зрозуміли, що 200 мікросервісів — це не архітектура, а проблема. З’явилися терміни modular monolith і majestic monolith — повернення до моноліту, але вже з модулями, чіткими контрактами і вибором, що саме виносити в окремий сервіс. Service mesh (Istio, Linkerd) дозволили винести крос-функціональні турботи (mTLS, retry, traffic split) з коду в інфраструктуру. Platform engineering оформилося як окрема дисципліна: внутрішні платформи розробки, портали (Backstage), self-service.
Раптом виявилося, що великі мовні моделі — це не «ще один API». Це повноцінний компонент, який треба архітектурно вписувати: RAG (генерація з пошуковим підкріпленням), AI gateway, контроль контексту, evaluation pipelines, governance моделей. У
— векторні бази даних поряд із реляційними і графовими;
— окремий «охоронець контексту» між пошуком і моделлю;
— explicit knowledge graphs для трасування і пояснюваності;
— оркестрацію ШІ-агентів як окремий шар (часто на Temporal, NATS JetStream або власних координаторах);
evaluation і replay infrastructure для відтворюваності рішень моделі.
Що з обговорень 2008 року виявилося правдою
«Моноліт треба розрізати по швах бізнес-доменів, а не по таблицях БД» — банальність
«Інтеграційна шина — це теж моноліт» — підтвердилося. ESB майже зник, на його місці асинхронні брокери (Kafka, NATS) і API gateway.
«PHP не помре, але великі системи писатимуть на іншому» — Java, Go, Node.js, потім Rust і Kotlin зайняли свої ніші. PHP залишився, але для веб-публікацій і e-commerce.
Що виявилося хибним або наївним
«Достатньо розпиляти моноліт на сервіси — і буде масштабованість». Виявилось, що без observability, контрактного тестування і дисципліни деплою це лише розподілений моноліт із додатковою мережею між помилками.
«SOA вирішить інтеграцію через ESB». Ні. ESB перетворилися на bottleneck, і галузь пішла у бік decentralized integration: API + events + schema registry.
«Хмара зробить інфраструктуру дешевшою». Часто — зробила дорожчою, але швидшою. Економіку треба свідомо проєктувати (FinOps), інакше cloud bill з’їдає економію від швидкості.
«Чим більше мікросервісів, тим краще». Приблизно з
Що з
Узгодженість даних у розподілених системах. Saga, outbox pattern, eventual consistency — інструменти з’явилися, але кожен новий проєкт усе одно проходить це болюче місце наново.
Контракти між сервісами. OpenAPI, gRPC, AsyncAPI допомогли, але дисципліна команд по-справжньому не масштабується інструментами.
Документація як артефакт першого класу. Дзеркало 2008 і 2026: усі знають, що треба, мало хто робить. ШІ-асистенти трохи покращили ситуацію, але не зняли проблему.
Що я як архітектор узяв би з цього шляху сьогодні
Починайте з модульного моноліту, виносьте у сервіс лише те, що має іншу логіку масштабування, життєвого циклу або команду власника.
Контракт важливіший за технологію. JSON чи Protobuf, REST чи gRPC, Kafka чи NATS — це другорядно поряд із чітким, версіонованим контрактом.
Observability — частина архітектури, а не операційний додаток. Якщо tracing, logs і metrics не закладені в день перший, потім ви платите подвійно.
ШІ-компоненти — це окрема архітектурна дисципліна. Їх не можна вписувати «ще одним мікросервісом». Потрібні правила: версіонування промптів, пошуковий контекст, evaluation, governance, відтворюваність.
Доказовість важливіша за красивий інтерфейс. У регульованих доменах (auto, med, fin) система має не просто відповісти, а показати, чому вона так відповіла — з джерелами, версіями, припущеннями і слідом міркування. Це ниточка, яка тягнеться від експертних систем
Замість підсумку
Якщо у
Гарно, що ДОУ досі живий і що цей маленький топік 2008 року тепер — точка ретроспективи. 18 років — це достатньо, щоб мода на технології встигла обернутися кілька разів. Але інженерна дисципліна, як виявилося, мало змінилася: ті самі питання про контракти, межі, відповідальність і докази.
— Микола Федчик, оновлення 2026 року
4 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарівМікросервіси — це про масштабування команд, коли над монолітом працює більше20–25 людей, масштабувати команду не виходить. З додаванням людей швидкість розробки лише знижується.1–2 роки. Але дозволяють компанії бурхливо зростати від 20 до 1000 інженерів.
Коли проєкт правильно розрізаний на домени, кожний домен може розробляти своя окрема two-pizza team. Навіть коли є поганий контракт і відсутність дисципліни, це дуже болючі, але тимчасові проблеми, які вирішуються максимум за
Отже, так, масштабованість, але масштабованість компанії.
Хмара вирішує проблему швидкості, але з іншого боку. Колись у SaaS-компаніях була проблема: є команди, що розробляють ПО, а є Ops-команда що деплоїть і мейтейнить продакшн. Це було bottleneck із постійним перекладом провини між ними. Виникла ідея DevOps: а давайте розробники самі будуть запускати свої сервіси, але це практично неможливо без хмари чи платформи. Отже, ось вам AWS: запускайте, що хочете і коли хочете. Отже, кожна feature team почала вільно запускати інфраструктуру без прив’язки до Internal IT, і це також пришвидшило розробку та делівері.
Отже, так, пришвидшення, але пришвидшення виходу нових фіч і сервісів.
От як... цікава точка зору. А якщо згадати сервіси, а не мікросервіси? (ще десь бачив згадки про наносервіси).
Одне припускає інше, але не завжди цього вимагає.
Приклад
З таким висновком покриє 90% звичайних проєктів, незалежно від їх архітектури. Це вже проблема інженерного менеджменту.
Як бути, коли усе ж треба гратися з тим же Scale Cube? Тобто усе-таки масштабованість продукту.
Швидкість — це зрозуміло: це тому, що є масштабованість. Але ж цитата була про «зробить дешевою».
Класно бачити, що Микола оновлює топік :)
вау!
Дякую, ще трохи оновив його тим контентом, на який колись очікував.