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

Заказной веб-сервис или веб-приложение — это система с бизнес-логикой, доступная по сети: пользователи входят в браузере под своей ролью, работают с данными, а результат попадает в учёт и в смежные системы. Слово «веб-сервис» понимают и как программный интерфейс: им занимается страница про API и бэкенд, а здесь речь о системах с ролями и правилами. Это не сайт, который рассказывает о компании. Мы разрабатываем порталы и кабинеты, внутренние сервисы, сервисы приёма заявок и экраны контроля обмена между системами. Начинаем с одного рабочего сценария, а не со списка из сорока функций. Исходники и сервер остаются у вас.

Обследование — 200 000 ₽, 2–3 неделиПортал или кабинет — от 250 000 ₽Исходный код в вашем репозитории с первого коммита

С чем приходят

Когда задача — веб-сервис, а не сайт

Процесс живёт в таблицах и почте

Заявки, согласования и учёт ведутся в общих файлах и письмах. Нужна система с ролями, статусами и историей, где видно, кто что сделал.

Клиентам и партнёрам нужен доступ к данным

Остатки, статусы заказов, документы и сверки сейчас выдаёт менеджер по телефону. Эти вопросы должен закрывать кабинет.

Заявки приходят из разных мест

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

Системы не разговаривают друг с другом

Между 1С, CRM, складом и сайтом данные переносят руками. Нужен сервис с экраном для сотрудников: что ушло, что не прошло и почему, с кнопкой повтора. Сам обмен между системами разобран на странице про API и бэкенд.

Готовый сервис не подходит по условиям

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

Самописный сервис остался без хозяина

Автор ушёл, документации и сборки нет, любая правка страшна. Сервис нужно привести в порядок или переписать по частям.

Типы сервисов

Какие бывают веб-сервисы и где они ломаются

Типов шесть, у каждого свой состав и своя типовая беда. Платформам для многих организаций посвящена отдельная страница про SaaS.

Тип сервиса
Для кого
Что внутри
Где ломается
Тип сервисаПортал или личный кабинетклиент, партнёр, поставщик
Для когоВнешние пользователи вашей компании: им нужно самим находить остатки, статусы и документы
Что внутриВход и роли, данные из 1С или CRM, заказы, обращения, документы, уведомления
Где ломаетсяКабинет показывает наружу внутренний беспорядок: неверный остаток или дубль клиента видит не менеджер, а сам клиент
Тип сервисаВнутренний сервисреестры и согласования
Для когоСотрудники в таблицах и переписке: реестры и согласования без клиентов и договоров. Учёт клиентов, объектов и договоров — страница про CRM
Что внутриСправочники, статусы, роли, журнал изменений, отчёты и выгрузки
Где ломаетсяПроцесс описали со слов, исключения всплыли после запуска, и люди вернулись в таблицы
Тип сервисаСервис приёма заявокединая очередь
Для когоПодразделения, которые принимают обращения из нескольких каналов
Что внутриЕдиная очередь, правила распределения, сроки, напоминания, статусы и история
Где ломаетсяНет владельца очереди: заявки висят без срока, а правила распределения знает один человек
Тип сервисаЭкран контроля обменадля сотрудников
Для когоКомпании, где обмен между системами уже идёт, а сотрудники не видят его состояния
Что внутриЖурнал попыток, список недоставленного, кнопка повтора, права по ролям
Где ломаетсяСотрудники не видят, что не прошло, и узнают о сбое от клиента
Тип сервисаВитрина данныхсводка из источников
Для когоТе, кому нужна общая картина из нескольких систем без ручной сводки
Что внутриВыгрузка из источников, расчёт показателей, расшифровка до строки, права по подразделениям
Где ломаетсяОдин показатель считается по-разному в разных отчётах, и доверия к цифрам нет
Тип сервисаПлатформа для многих организацийSaaS
Для когоКомпании, у которых свой продукт для многих клиентов со своими данными и тарифами
Что внутриОрганизации, роли, разделение данных клиентов, тарифы, API
Где ломаетсяСервис писали как внутренний, а потом его решили давать другим компаниям: разделение данных организаций приходится вшивать в готовую схему
Выбор

Веб-сервис или готовое решение: что подходит когда

Мы не будем писать сервис, если задачу закрывает настройка готового. Четыре варианта в таблице, три проверки ниже. Общий разбор — в статье про коробочное ПО и заказную разработку.

Вариант
Когда подходит
Что ограничивает
Что проверить до решения
ВариантГотовый сервис по подпискебыстрый старт
Когда подходитПроцесс типовой, данные можно держать у производителя, интеграции стандартные
Что ограничиваетПроцесс подстраивается под сервис, правила и данные живут не у вас, цена растёт вместе с числом пользователей
Что проверить до решенияМожно ли выгрузить все данные в открытом формате и сколько это стоит
ВариантКонструктор приложений без программированияформы, реестры, согласования
Когда подходитПравил немного, роли простые, обмен с 1С не нужен
Что ограничиваетСложные роли и нестандартная логика упираются в платформу, а перенос на другую платформу может означать переписывание
Что проверить до решенияТри самых сложных сценария на подготовленных вами образцах данных, а не на слайдах
ВариантКоробочная система с настройкойучёт, документооборот
Когда подходитДля вашей отрасли есть готовый продукт, доработок немного
Что ограничиваетЧем больше доработок, тем тяжелее обновляться: вы платите и за коробку, и за разработку
Что проверить до решенияОбъём доработок и их цену рядом с ценой нового сервиса
ВариантСвой веб-сервиспроцесс отличает вас
Когда подходитНужен закрытый контур, много ролей и интеграций, готовое приходится ломать
Что ограничиваетНужны владелец сервиса со стороны заказчика и бюджет на сопровождение
Что проверить до решенияСтоимость владения за три года рядом с доработанным готовым
Проверки

Три проверки до решения

Бывает, что подходит связка: типовое остаётся в готовых системах, суть бизнеса пишется отдельным сервисом и подключается по API. Для учёта клиентов и сделок этот выбор разобран на странице про разработку CRM.

  1. Пройдите три самых сложных сценария в пробном доступе к готовому продукту на подготовленных вами образцах данных, а не по слайдам.
  2. Спросите, как выгрузить все данные в открытом формате и сколько это стоит. Если выгрузка недоступна или платная, вы привязаны к поставщику.
  3. Посчитайте расходы на три года с учётом роста числа пользователей. Метод описан в статье про стоимость владения.
Решения в начале

Что решаем до первой строки кода

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

Роли и права

Кто что видит и что может менять. Права проверяются на сервере для каждой операции и каждого объекта, а не скрытой кнопкой в интерфейсе. Таблицу ролей составляют так, чтобы её можно было проверить: из-под каждой роли пробуют открыть чужое. Пример такой таблицы есть на странице про порталы и кабинеты.

Источник истины

Где живут данные: в самом сервисе или в 1С и CRM, а сервис лишь показывает их и принимает действия? От ответа зависит всё: от схемы базы до того, что видит пользователь при сбое смежной системы. По каждому объекту записываем, кто главный при расхождении.

Состояния и история

Объекты проходят статусы: черновик, на согласовании, в работе, закрыто. Заранее записываем, кто может переводить объект между статусами и что при этом происходит. Каждое изменение остаётся в журнале с автором и временем.

Сбой смежной системы

1С обновляется, у партнёра сменился сертификат, сеть пропала. Сервис не должен терять заявки: сообщение откладывается в очередь, повторяется с растущей паузой, а ответственному уходит оповещение. Повтор не должен создавать дубль: у каждой операции есть ключ, по которому принимающая сторона узнаёт уже обработанное. Если смежная система так не умеет, расхождения ловит сверка. Как строится такая серверная часть, описано на странице про разработку API и бэкенда.

Где работает и где хранятся данные

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

Первая версия

Что входит в первую версию, а что откладываем

Первая версия (MVP, в тарифах «Пилот, тяжёлый») — сервис, в котором первые пользователи решают свою главную задачу на реальных данных, под своей ролью и с журналом действий. Не прототип с нарисованными экранами и не набор всего понемногу.

Что входит

  • Вход и роли. Минимальный набор ролей и приглашение пользователей без обращения к разработчику.
  • Один главный сценарий от входа до результата: заявка принята и назначена, заказ оформлен, документ согласован.
  • Данные из одного источника и один обмен с учётной системой, которая нужна для сценария.
  • Журнал действий и экран для администратора: пользователи, блокировка, последние ошибки.
  • Резервная копия по расписанию и оповещение о недоступности. Проверка восстановления относится к выводу в эксплуатацию.

Что откладываем сознательно

  • Редактор ролей для администратора: пока роли задаём мы по таблице из обследования.
  • Остальные обмены с другими системами.
  • Уведомления во всех каналах: начинаем с почты.

Решение записывается в список «входит / откладываем», который подписывают до начала работ: на приёмке по нему сверяют, что сделано, и не спорят о том, что обещали. Как оформить такой список в документе, описано в статье про техническое задание.

Что делаем

Из чего состоит работа и сколько она стоит

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

Обследование задачи

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

200 000 ₽ · 2–3 недели

Обследование с несколькими системами

Если сервис связан с 1С, CRM, сайтом и складом: схема обменов и матрица источников истины по каждому объекту.

350 000 ₽ · 3–4 недели

Лёгкий пилот: один сценарий

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

150 000 – 400 000 ₽ · 2–8 недель

Портал, кабинет или витрина данных: нижняя ступень

Простой кабинет с одной ролью или витрина данных поверх готовых данных, которые открывают реальным пользователям. Кабинет партнёра с индивидуальными ценами и сверкой стоит больше.

от 250 000 ₽ · витрина от 3 недель, кабинет от 4

Первая версия сервиса (тяжёлый пилот)

Роли, главный сценарий, обмен с учётной системой, журнал, администрирование, протокол испытаний. Это MVP, а не система в ежедневной эксплуатации: проверка восстановления из копии, нагрузочные испытания и полный мониторинг идут в выводе в эксплуатацию.

400 000 – 1 200 000 ₽ · 2–3 месяца

Вывод в эксплуатацию

Рабочая система в ежедневной эксплуатации: опытная эксплуатация, нагрузочные испытания на данных сопоставимого объёма (обезличенных или сгенерированных), резервные копии с проверкой восстановления, полный мониторинг, обучение, передача исходников и инструкций.

от 1 500 000 ₽ этапами по 300 000 – 700 000 ₽

Сопровождение

Мониторинг, обращения пользователей и разбор инцидентов. Плановые доработки входят в пакеты от 60 000 ₽ в месяц. Три пакета часов, ставка сверх пакета — 5 000 ₽ в час.

от 20 000 ₽ в месяц
Процесс

Как идёт работа

Недели 1–4 — Обследование

Разбираем процесс на примерах из вашей работы, считаем пользователей и объёмы данных, фиксируем роли, источники истины, интеграции и состав первой версии. На выходе документ, с которым можно идти в тендер и сравнивать предложения, в том числе не наши.

Первые недели — Основа

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

Дальше — Главный сценарий и обмены

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

Приёмка первой версии

Первые пользователи проходят сценарий на реальных данных в вашем контуре, мы смотрим журнал и обращения, правим по реальным случаям. Приёмка идёт по протоколу испытаний, согласованному до начала работ.

Дальше — вывод в эксплуатацию или остановка

Опытная эксплуатация, нагрузочные испытания и расширение функций идут этапами с отдельной приёмкой. Либо передаём исходники и инструкции вашей команде. Сопровождение у нас или у вас: решаете вы.

Цена

Что двигает цену веб-сервиса внутри вилки

Роли и права

Две роли и один тип пользователя — это одно. Внешние пользователи, вложенные подразделения и доступ к отдельным объектам — другое, и проверок там больше.

Число и состояние интеграций

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

Требования контура

Закрытый периметр, отечественная операционная система, вход через корпоративный каталог и журнал по требованию меняют и разработку, и приёмку.

Состав первой версии

Цену двигает не число экранов, а число правил и исключений.

Контроль

Что остаётся у вас и чего мы не делаем

Остаётся у вас

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

Мы этого не делаем

  • Не делаем сайты-визитки и корпоративные сайты: нужна система с данными и ролями, а не страница о компании.
  • Не собираем интернет-магазины на конструкторах и готовых движках. С магазином работаем на стороне обмена с 1С.
  • Не занимаемся продвижением сайтов и рекламой, не готовим макеты для рекламы и полиграфии.
  • Мобильные приложения для магазинов приложений в эту услугу не входят: интерфейс адаптивный и открывается в браузере телефона.
  • Не берём внедрение системы на всё предприятие целиком: делаем один контур и расширяем этапами.
  • Не берём работы дешевле 150 000 ₽, не дежурим круглосуточно и не обещаем процент доступности: в сопровождении записываем время реакции и часы пакета.
  • Лицензии ФСТЭК у нас нет, аттестацию объектов не проводим.
Инструменты

На чём собираем

Серверная часть и данные
  • Python: Django или FastAPI, при необходимости Go
  • PostgreSQL
  • Redis или совместимое хранилище для кэша; очередь в PostgreSQL или RabbitMQ, выбираем на обследовании
  • S3-совместимое хранилище (своё или у хостера) для файлов
Интерфейс, вход и развёртывание
  • React или Vue, TypeScript
  • Keycloak, вход через LDAP и Active Directory, двухфакторный вход
  • Docker, Nginx, GitLab CI
  • Prometheus и Grafana для мониторинга
Материалы

Материалы по теме

Статья

Личный кабинет для партнёров: что в него включать

Что обязательно, а что украшение, как строится ролевая модель и откуда берутся данные.

  • Индивидуальные цены
  • Роли и права
  • Откуда данные
Читать →
Статья

Коробочное ПО или заказная разработка

Когда брать готовое, когда писать своё и почему доработанная коробка хуже обоих вариантов.

  • Критерии выбора
  • Худший вариант
  • Гибрид
Читать →
Статья

Проектирование API для интеграций

Версии, формат ошибок, повторы запросов и вебхуки: на что смотреть, когда сервис обменивается с другими системами.

  • Идемпотентность
  • Версии
  • Чек-лист приёмки
Читать →
Статья

Как составить техническое задание

Что обязательно записать, чтобы два подрядчика назвали похожую цену, а на приёмке не спорили.

  • Границы и роли
  • Данные
  • Критерии приёмки
Читать →
Заявка

Разберём вашу задачу на веб-сервис

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

Спасибо, заявка отправлена. Ответим в течение рабочего дня.

Не удалось отправить. Напишите в телеграм или позвоните.

Вопросы

Частые вопросы: разработка веб-сервисов

Сколько стоит разработка веб-сервиса?

Нижняя ступень порталов и кабинетов — от 250 000 ₽: витрина данных или простой кабинет с одной ролью, как на странице про порталы и кабинеты. Лёгкий пилот от 150 000 ₽ — один сценарий, а не готовый портал. Первая версия сервиса (MVP) — «Пилот, тяжёлый» по тарифам: 400 000–1 200 000 ₽ и 2–3 месяца. Если задача в вилку не помещается, скажем об этом до начала работ и предложим урезать состав первой версии. Вывод в эксплуатацию начинается от 1 500 000 ₽ этапами по 300 000–700 000 ₽. Цену обследования называем сразу и фиксируем в договоре: 200 000 ₽ за один-два процесса и 350 000 ₽, если сервис связан с несколькими системами. Цену следующих ступеней называем по его итогам.

Чем веб-сервис или веб-приложение отличается от сайта?

Сайт в первую очередь рассказывает: каталог, описание, новости. Веб-сервис в первую очередь работает с данными и правилами: у пользователей есть роли, они вводят и меняют данные, а результат уходит в учёт и другие системы. Граница нечёткая, поэтому смотрим не на технологию, а на то, есть ли роли, правила и обмен с учётными системами.

Когда достаточно готового решения и своё писать не нужно?

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

Можно ли начать с одного сценария?

Можно. Самый короткий путь — лёгкий пилот одного сценария за 150 000–400 000 ₽ и 2–8 недель: небольшая группа пользователей и ваши данные; это проверка, а не открытый пользователям кабинет. Если сценарий себя оправдал, первая версия добавляет роли, обмен с учётной системой, журнал и администрирование.

Подключите сервис к нашей 1С?

Да, если в вашей версии и конфигурации 1С есть подходящий интерфейс и его можно опубликовать в вашем контуре: это выясняется в начале обследования. Для 1С используем HTTP-сервисы или стандартный интерфейс OData, для CRM и сайта их API. В первую версию входит один обмен, нужный главному сценарию. Данные идут через очередь, поэтому при недоступной 1С заявки не теряются, а ждут. Если у системы нет ни программного интерфейса, ни выгрузки, обходной путь называем в отчёте обследования.

Где будет работать сервис?

Вы выбираете площадку: свои серверы или хостер по вашему договору. Хостинг сами мы не оказываем. Сервис поднимается по инструкции, поэтому перенос на другую площадку не требует нас.

Кому принадлежит код и что будет, если вы пропадёте?

Исходный код лежит в вашем репозитории с первого коммита. Результат работ (исходный код, конфигурации, документация) передаётся вам по акту; порядок передачи прав записывается в договоре; открытые компоненты остаются под своими лицензиями, их список входит в документацию. Развёртывание описано инструкцией, и на приёмке ваш администратор проверяет, что стенд поднимается без нас. Документации достаточно, чтобы передать проект другому подрядчику.

Можно ли взять наш самописный сервис и привести его в порядок?

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

Что с поддержкой после запуска?

Сопровождение берём ежемесячно: 20 000, 60 000 или 120 000 ₽ в месяц в зависимости от пакета часов (до 4, 12 или 25 часов), сверх пакета 5 000 ₽ в час по согласованию до начала. Плановые доработки входят с пакета на 60 000 ₽.

Вы работаете только в Ростове-на-Дону?

Мы в Ростове-на-Дону, работаем с заказчиками по всей России: удалённо и в вашем контуре. Доступ к системам и обследование согласуем на старте с вашей службой безопасности.