Exabit Logo

Разработка веб-приложения: как понять, что вам реально нужно и не переплатить за архитектуру

30 марта 2025 · 4 мин чтения ·
Разработка веб-приложения: как понять, что вам реально нужно и не переплатить за архитектуру

Ко мне регулярно приходят с запросом «нужен сайт с кабинетом». Через пару встреч в проекте уже появляются роли, статусы, история действий, обмен с 1С или amoCRM, API и очередь уведомлений. Смета в этот момент вырастает с 900 тыс. ₽ до 2,8-3,5 млн ₽, и причина обычно не в ставке команды.

Проблема в другом: бизнес называл проект сайтом, а по факту описывал внутренний сервис. Если заранее отделить полезную сложность от лишней, экономия получается не косметическая, а на месяцы и миллионы.

Граница проходит по процессу, а не по дизайну

Внешне корпоративный сайт и кабинет клиента могут выглядеть почти одинаково. Но сайт показывает контент, а приложение управляет процессом. Эта простая разница обычно и меняет бюджет в 3-6 раз.

Если в проекте есть страницы, формы, CMS и новости, он все еще ближе к сайту. Когда появляются роли, согласования, история, документы, ограничения по правам и обмен с внешними системами, начинается уже другой класс работ.

У нас был проект для дистрибутора оборудования. Клиент называл его «кабинетом для партнеров». После разбора выяснилось, что у дилеров разные цены, у менеджеров разные лимиты, заказы проходят согласование, прайсы приходят из ERP, а изменения нужно логировать. Снаружи это выглядело как аккуратный кабинет. Внутри - полноценное веб-приложение.

Авторизация уже делает проект приложением?
Нет. Один логин без состояний и сценариев почти ничего не меняет. Я обычно формулирую вопрос так: система просто открывает закрытую страницу или действительно ведет пользователя по бизнес-процессу?

Деньги сгорают в логике, данных и интеграциях

На старте чаще обсуждают дизайн и верстку, потому что это видно. По деньгам картина обычно другая: в рабочем B2B-кабинете визуальная часть часто занимает 20-30% трудозатрат, а остальное уходит в правила, данные и обмены.

Часть проекта Что внутри Риск для бюджета
Верстка страницы, адаптивность, UI-компоненты низкий
Frontend формы, таблицы, фильтры, состояния, работа с API средний
Backend роли, бизнес-правила, журналирование, очереди высокий
БД и интеграции связи данных, индексы, CRM, ERP, внешние сервисы очень высокий

На одном кабинете для сервисной компании клиент видел всего «пять экранов». После декомпозиции получилось 5 ролей, 12 сценариев, 3 интеграции, генерация PDF и история изменений. Стек был спокойный: Laravel 11, PostgreSQL 16, Vue 3. Визуально проект остался компактным, но бэкенд и БД забрали около 75% всех часов.

Сайт: страницы -> формы -> CMS
Веб-приложение: роли -> сценарии -> API -> база данных -> интеграции -> аудит действий

Короткий discovery обычно дешевле спешки

Мы тоже пробовали стартовать сразу в разработку. У меня был проект, где я согласовал MVP без нормальной схемы статусов и связей документов, и через 7 недель пришлось переделывать половину таблиц в PostgreSQL. Клиент потерял время, мы потеряли темп. Это был обычный рабочий просчет, но дорогой.

Поэтому на проектах от 2 млн ₽ я почти всегда закладываю 1-2 недели на разбор задачи. За это время обычно успеваем пройти четыре вещи:

  • цель первого релиза и что в нем считается полезным результатом
  • роли и 5-10 ключевых сценариев
  • сущности данных и список интеграций
  • прототип и границы версии, которую реально можно запустить

После такого этапа обычно исчезает до 25-30% функций, которые звучали убедительно, но не влияли на старт. В прошлом году в логистическом сервисе мы сократили первый релиз с 5 месяцев до 3,5 месяцев и сняли примерно 22% бюджета только потому, что убрали вторую цепочку согласования, конструктор отчетов и аналитику на вырост.

Хорошая оценка похожа на инженерный документ: у нее есть границы первой версии, допущения и список того, что пока не входит.

Стек должен окупаться, а не впечатлять

Я спокойно отношусь к модным архитектурам, пока они действительно нужны бизнесу. Для кабинета с документами, ролями и интеграциями чаще выигрывает прагматичный стек: Laravel 11 или Node.js 20 + NestJS, PostgreSQL 16, иногда Redis 7, если есть очереди и нагрузка. Цифры обычно говорят просто: чем больше слоев без прямой пользы для релиза, тем дороже каждое изменение.

Мы делали аудит стартапа, который начал с отдельного auth-сервиса, нескольких микросервисов и тяжелого фронтенда. На схеме все выглядело аккуратно. На практике правка одного бизнес-правила проходила через несколько репозиториев, MVP задержался на 11 недель, а поддержка выходила дороже на 15-40%, чем у более прямой архитектуры.

Интеграции я всегда считаю отдельной строкой риска. Если у внешнего API слабая документация или нестабильные методы, одна такая связка легко добавляет к смете 10-20%. Формально это выглядит как «подключить по API», но по факту здесь нужен запас на неизвестность.

Стоимость считают по сценариям, а не по экранам

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

На цену сильнее всего влияют не экраны, а вот что:

  • число ролей и исключений в сценариях
  • количество внешних систем и качество их API
  • сложность модели данных и требования к безопасности
  • объем QA перед запуском и цена ошибки после релиза

Если хотите получить смету, которой можно доверять, пришлите подрядчику не формулировку «нужен кабинет», а короткий набор: цель, роли, сценарии, интеграции и критерий первого запуска. Я много раз видел дорогие проекты, которые начинались с бедного брифа. Самый дешевый способ сэкономить на разработке - еще до сметы честно описать, где у вас контент, а где уже бизнес-процесс.

Нужна помощь с реализацией?

Расскажите о задаче - предложим решение и дадим оценку сроков.