Архитектура веб приложений

Мы пришли к достаточно неплохой архитектуре веба. Не из-за моды, а из-за ограничений.

Архитектура редко появляется из «лучших практик». Чаще — из боли, масштабирования и попыток упростить систему, а не усложнить её.

В какой-то момент мы поняли: текущий подход к вебу перестал быть управляемым.

Слишком много связей, слишком долгий путь от кода до пользователя, слишком высокая цена изменений.

Решения, к которым мы пришли, выглядят радикально.

На практике — они просто честные.

Микрофронты как границы ответственности

Мы отказались от идеи «одного фронта».

Микрофронты для нас — не про технологии, а про управление.

Каждый микрофронт: — имеет чёткую зону ответственности — живёт в своём репозитории — релизится независимо — развивается в своём темпе

Это позволило фронтенд-командам перестать ждать друг друга и вернуло предсказуемость изменений.

Отказ от контейнеров на фронте

Контейнеры добавляли сложность, но почти не давали ценности именно для веба. Несли накладные расходы на ресурсы.

Мы убрали контейнеризацию фронта полностью. Артефакты сборки — это просто статика.

HTML, JS, CSS складываются в S3 и отдаются через CDN.

В результате: — быстрее пайплайны — проще инфраструктура — меньше точек отказа — прозрачный деплой

Для фронта этого оказалось более чем достаточно.

От GitFlow к Trunk-Based Development

Classic GitFlow перестал эффективно работать при частых релизах.

Слишком много веток, ожиданий, черепиков и конфликтов.

Мы перешли к Trunk-Based Development: — короткоживущие ветки — частые мерджи — минимальный разрыв между кодом и продом

Это снизило когнитивную нагрузку и сделало релизы рутинной операцией.

Тестовые среды из пайплайна

Самое интересное началось дальше.

Мы перестали держать постоянные тестовые окружения.

Вместо этого тестовая среда генерируется прямо из CI/CD.

Из пайплайна: — собирается фронт — деплоится в S3 — через cookies создаётся изолированная версия для тестирования

Каждый PR может иметь свою среду. Без конфликтов, без ожиданий, без «у меня не открывается».

Что это дало в итоге

Архитектура стала: — проще — дешевле — предсказуемее

Мы сократили путь от идеи до пользователя и убрали из системы лишнее напряжение.

Вывод Хорошая архитектура — это не сложная архитектура.

Это архитектура, которая не мешает работать.

Микрофронты, отказ от контейнеров, TBD и динамические среды — не серебряные пули.

Но в нашем контексте это оказался самый прямой путь к управляемому вебу.

Мой канал - https://t.me/manager_dot_exe