Разработка бизнес-приложений: этапы, требования, архитектура и выбор платформы

Разработка бизнес-приложений: этапы, требования, архитектура и выбор платформы Полезное

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

Ниже — этапы разработки, требования, выбор платформы и архитектуры, интеграции и защита данных.

Три понятия, которые часто путают

Понятие Что это Пример
Клиентское (B2C) приложение компании Сервис для внешних покупателей Приложение интернет-магазина или доставки
Внутреннее бизнес-приложение Инструмент для сотрудников под конкретный процесс Приложение курьера, терминал кладовщика, портал заявок
Корпоративная система (ERP, CRM, WMS) Крупная учетная платформа, часто покупная и настраиваемая 1С, CRM, система управления складом

Ниже под бизнес-приложением понимаются первые две категории: обе связаны с корпоративными системами.

Этапы разработки бизнес-приложения

Этапы ниже — типовая последовательность, а не жесткий водопад. В гибких процессах (Scrum, Kanban) они повторяются короткими итерациями: аналитика, разработка и тестирование идут параллельно для разных функций.

  1. Постановка цели и границ. Какой процесс автоматизируем, кто пользователи, какая метрика покажет успех: время обработки заказа, число ошибок ввода, доля заявок онлайн.
  2. Сбор и описание требований. Бизнес-аналитик интервьюирует пользователей, описывает сценарии и правила, фиксирует нефункциональные требования.
  3. Проектирование. Выбор платформы клиента, архитектуры, модели данных, схемы интеграций; прототипы интерфейса.
  4. MVP. Минимальная версия, закрывающая главный сценарий для части пользователей. Она проверяет гипотезы до того, как вложены основные ресурсы.
  5. Разработка и тестирование. Автотесты на бизнес-правила, интеграционные тесты с внешними системами, приемка пользователями.
  6. Внедрение. Миграция данных из старых систем, обучение сотрудников, постепенный переход (пилотный отдел, затем все).
  7. Эксплуатация и развитие. Мониторинг, поддержка, обновления зависимостей, доработки по обратной связи.

Типовая ошибка — пропустить шаг 1 и начать с выбора технологий. Тогда стек подбирается под представления команды, а не под процесс, и переделки начинаются уже после внедрения.

Требования: функциональные и нефункциональные

Функциональные требования описывают, что система делает: «менеджер создает заказ», «при остатке ниже порога отправляется заявка поставщику». Нефункциональные — в каких условиях и с каким качеством: сколько пользователей одновременно, какое время отклика допустимо, где хранятся данные, как долго можно простаивать.

Минимум вопросов о нефункциональных требованиях:

  • Нагрузка: сколько пользователей и операций в пиковый час, а не в среднем.
  • Доступность: что происходит при простое на час, есть ли работа ночью и в выходные.
  • Офлайн-режим: работает ли курьер или кладовщик без связи, как потом синхронизируются данные.
  • Данные: есть ли персональные данные, сколько лет хранить историю, кто имеет право видеть какие записи.
  • Интеграции: с какими системами обмен, в реальном времени или пакетом раз в сутки.

Веб, мобильное или десктоп: как выбрать платформу

Ориентир для выбора — где и как работает пользователь, а не мода. Упрощенная сводка ниже работает для типовых случаев; при особых требованиях (оборудование, безопасность, офлайн) ее нужно проверять прототипом.

Вариант Когда подходит Ограничения
Веб-приложение Офисная работа, много ролей, частые обновления, не нужен доступ к устройству Зависит от сети; ограниченный доступ к оборудованию
PWA (прогрессивное веб-приложение) Нужна установка на экран и кеш, но без публикации в магазине Возможности на iOS ограничены сильнее, чем на Android
Нативное мобильное (Swift, Kotlin) Камера, сканер, геолокация, фоновые задачи, работа без сети, максимум отзывчивости Две кодовые базы под iOS и Android
Кроссплатформенное мобильное (Flutter, React Native, Kotlin Multiplatform) Одна команда на обе ОС, типовой интерфейс форм и списков Специфичные функции ОС иногда требуют нативного кода
Десктоп (.NET, Electron и др.) Рабочее место с периферией: кассы, принтеры этикеток, сложные таблицы Установка и обновление на каждом компьютере

Частая ошибка из старых обзоров — называть C++ языком кроссплатформенной мобильной разработки. На C++ можно писать общую логику для обеих ОС, но интерфейс бизнес-приложений сегодня обычно делают на Flutter (язык Dart), React Native (JavaScript/TypeScript) или Kotlin Multiplatform.

Архитектура: с чего начать

Для большинства новых бизнес-приложений разумный старт — модульный монолит: одно развертываемое приложение, внутри которого домены (заказы, склад, клиенты) разделены четкими границами модулей. Это не абсолютное правило, а начальная точка, которую удобно пересматривать.

Подход Сильная сторона Когда оправдан
Монолит Простая разработка, отладка и развертывание Небольшая команда, один процесс
Модульный монолит Простота монолита плюс границы доменов Большинство стартов бизнес-приложений
Микросервисы Независимые релизы и масштабирование частей Несколько команд, разная нагрузка на части, зрелый DevOps

Микросервисы решают организационную задачу — независимую работу нескольких команд. Цена — распределенные транзакции, сетевые сбои, наблюдаемость и эксплуатация. Если в проекте одна команда, эти издержки обычно превышают выгоду.

Отдельное решение — покупать или писать. Учет, бухгалтерию и типовую CRM чаще выгоднее взять готовыми и доработать, а писать свое там, где процесс компании уникален и дает ей преимущество.

Интеграции: где чаще всего ломается

Бизнес-приложение почти всегда обменивается данными с учетной системой, оплатой, службой доставки, почтой. Основные способы:

  • Синхронный API (REST, gRPC) — запрос и немедленный ответ, например проверка остатка.
  • Webhooks — внешняя система сама сообщает о событии: оплата прошла, статус доставки изменился.
  • Очереди сообщений (Kafka, RabbitMQ) — асинхронная передача событий между системами с буферизацией при сбоях.

Главное правило для интеграций: сеть ненадежна, поэтому запросы будут повторяться. Операции, меняющие данные (создание заказа, списание), делают идемпотентными — повторный запрос с тем же ключом не создает дубль. Плюс тайм-ауты, повторы с растущей паузой и журнал обмена, по которому можно найти, где потерялось сообщение.

Безопасность данных

Бизнес-приложение работает с деньгами, персональными данными и коммерческой тайной, поэтому защиту закладывают на этапе проектирования, а не перед релизом. Базовый набор мер (не исчерпывающий — полный перечень зависит от отрасли и требований регулятора):

  • Аутентификация через корпоративный вход (SSO по OpenID Connect или SAML) и второй фактор для ролей с доступом к деньгам и персональным данным.
  • Авторизация на сервере: права проверяются на бэкенде при каждой операции, скрытая кнопка в интерфейсе защитой не является.
  • Минимум прав: роль видит только нужные ей записи, сервисные учетные записи — только нужные операции.
  • Шифрование при передаче (TLS) и хранении чувствительных данных; ключи и пароли — в хранилище секретов, не в коде.
  • Журнал действий (кто и когда изменил заказ, цену, права) и обновление зависимостей с проверкой на типовые уязвимости (ориентир — OWASP Top 10 и ASVS).
  • Резервные копии с проверкой восстановления — копия, которую ни разу не восстанавливали, может оказаться непригодной.

Если приложение обрабатывает персональные данные граждан России, действуют требования закона 152-ФЗ, в том числе о хранении и обработке данных. Конкретные обязанности зависят от состава данных и роли компании, их стоит согласовывать с юристом до проектирования хранилища.

Если проект буксует: симптомы и что делать

  • Пользователи не переходят на новую систему — вероятно, упущен реальный сценарий работы. Вернуться к интервью и наблюдению за работой, а не добавлять функции.
  • Каждое изменение ломает что-то в другом месте — нет границ модулей и автотестов на бизнес-правила. Начать с тестов на ключевые сценарии, затем выделять модули.
  • Данные расходятся с учетной системой — нет идемпотентности или сверки. Добавить ключи идемпотентности, журнал обмена и регулярную сверку.

Выводы

  • Бизнес-приложение отличает связь с процессами и данными компании, а не платформа.
  • Разработка начинается с цели, метрики и требований, включая нефункциональные: нагрузку, офлайн, хранение данных и интеграции.
  • Платформу выбирают по месту и способу работы пользователя; кроссплатформенность снижает дублирование, но не отменяет нативный код для функций устройства.
  • Модульный монолит — разумный старт для большинства проектов; микросервисы оправданы при нескольких командах и зрелой эксплуатации.
  • Интеграции проектируют с расчетом на сбои (идемпотентность, повторы, журнал), а защиту данных закладывают до релиза.

Где применяется / связь с практикой

Освойте тему на практике

Решения из этой статьи — границы модулей, выбор между монолитом и микросервисами, схема интеграций, требования к безопасности — принимает архитектор программного обеспечения. Если хочется научиться обосновывать такие решения на реальных проектах, посмотрите курс «Архитектор программного обеспечения». Отдельные темы проектирования и разработки разбирают на бесплатных открытых уроках Otus.

FAQ

Сколько стоит разработка бизнес-приложения?
Универсальной цены нет: она зависит от числа сценариев, платформ, интеграций и требований к безопасности. Реалистичную оценку дают после описания требований и прототипа, а не по названию проекта.

Можно ли начать с конструктора без кода?
Да, low-code-платформы подходят для внутренних форм и простых согласований. Ограничения проявляются на сложной логике, нагрузке и нестандартных интеграциях — это стоит проверить на пилотном процессе.

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)