Инжиниринг · архитектура · любые отрасли

Разработка систем любой сложности

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

Пришли за клиентами и продвижением? Вернуться в маркетинг

Направления

Что строим

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

Что это за системы

  • Личные кабинеты
  • Программы лояльности
  • Дилерские порталы
  • Внутренние платформы и админки
  • Биллинг и взаиморасчёты
  • Интеграционные шлюзы

Если вашей задачи в списке нет, опишите её словами. Разберём и скажем, берёмся или нет.

Из чего состоит такая система

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

01модель данных

Как устроены данные

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

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

Кто что видит и кто что менял

Как только в системе больше одного типа пользователя, главным вопросом становится «кто что видит». Филиалы, подрядчики, партнёры, руководители. У каждого своя часть данных. Рядом стоит вопрос «кто это изменил», без ответа на который разбор любого инцидента упирается в догадки.

  • Роли и доступы под реальную структуру компании
  • Журнал действий, в котором видно, кто и что менял
  • Вход по телефону, второй фактор, управление сессиями
03интеграции

С чем система обменивается

Система редко живёт одна. Рядом учёт, касса, телефония, платежи, отраслевое ПО и оборудование. Каждый сосед отвечает по-своему, падает по-своему и меняет формат без предупреждения. Поэтому обмен строим так, чтобы чужой сбой не ронял вашу систему.

  • 1С, платёжные шлюзы, телефония, мессенджеры
  • Отраслевые системы и оборудование, от МИС в клинике до складского учёта
  • Обмен по расписанию и по событию, с повтором при сбое
04нагрузка и отказоустойчивость

Что будет, когда пользователей станет больше

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

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

Кто меняет тарифы и правила

Бонусы, тарифы, скидки, лимиты, взаиморасчёты. Это та часть системы, которую бизнес меняет чаще всего, поэтому её выносим из кода в настройки. Иначе каждая акция превращается в релиз и в ожидание свободного разработчика.

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

Как система живёт после запуска

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

  • Мониторинг и реакция на сбой по регламенту
  • Резервные копии и проверенное восстановление
  • Исходный код, схемы и документация остаются у вас

Особый случай

Если система уже есть

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

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

  • Разработчик ушёл, и систему больше некому вести
  • Подрядчик бросил работу на середине
  • Любая правка ломает что-то соседнее
  • Остановить нельзя, на системе каждый день работает компания

Как заходим

Разбираемся до первой правки

Поднимаем копию, читаем код, описываем, как система работает сегодня. Пока этого нет, любая правка остаётся гаданием.

Говорим, что оставить и что переписать

Иногда починить существующее дешевле, чем писать заново, и мы это скажем.

Первым чиним то, что горит

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

Переписываем по частям

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

Чужие решения принимаем как условие задачи

Требования «сначала всё снести и написать заново» не будет. Заходим в то, что есть.

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

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

Рассказать про свою систему

Процесс

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

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

01

Разбор задачи

Смотрим, что уже работает, где ручной труд и где теряются деньги. На выходе описание системы и границы первого этапа.

02

Прототип и смета

Показываем интерфейс на кликабельном прототипе. Когда он согласован, называем срок и цену. До этого момента цифры были бы выдумкой.

03

Разработка

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

04

Запуск и передача

Переносим данные, обучаем сотрудников, остаёмся на связи. Исходный код и документация ваши.

Сотрудничество

Три формата работы

Какой подойдёт вам, поймём на первом разговоре.

Ежемесячно

Ретейнер

Платите за месяц работы

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

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

Цена известна заранее

Фиксированная сумма

Сумму фиксируем до старта

Задача описана, границы понятны. Называем сумму и срок до начала работы, дальше цена не меняется.

Подходит для отдельной доработки или понятного куска работы.

От идеи до запуска

Проект целиком

Считаем по этапам после разбора

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

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

Бюджет

300 000 ₽

средний чек на старте работы

Бывает дешевле, бывает дороже. Всё решает задача и то, сколько людей она займёт.

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

Технологии

На чём строим

Жёсткого набора нет, инструмент выбираем под задачу. Ниже то, чем команда уже владеет.

Языки

На чём пишется сама система.

  • TypeScript
  • JavaScript
  • Python
  • Go
  • PHP
  • SQL

Бэкенд и API

Логика, расчёты и обмен данными на стороне сервера.

  • Node.js
  • NestJS
  • Express
  • FastAPI
  • Django
  • Laravel
  • REST
  • GraphQL
  • WebSocket
  • gRPC

Фронтенд

То, что видит и трогает пользователь.

  • React
  • Next.js
  • Vue
  • Nuxt
  • Astro
  • Tailwind CSS
  • Vite

Данные и хранилища

Где лежат данные и как они не теряются.

  • PostgreSQL
  • MySQL
  • Redis
  • ClickHouse
  • MongoDB
  • Elasticsearch
  • S3

Очереди и фоновые задачи

Тяжёлая работа уходит из интерфейса в фон.

  • RabbitMQ
  • Kafka
  • Celery
  • BullMQ
  • cron

Инфраструктура и эксплуатация

Где система живёт, как обновляется и как за ней следят.

  • Docker
  • Kubernetes
  • nginx
  • CI/CD
  • Terraform
  • Prometheus
  • Grafana
  • Sentry

Команда

Кто ведёт разработку

Сергей Шибут — Технический партнёр

Сергей Шибут

Технический партнёр

@Xenik

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

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

Метод утёнка

У Сергея на столе живёт жёлтая уточка. Объясняешь ей задачу вслух, и на середине объяснения находится решение. Поэтому работа здесь начинается с разговора.

Что за плечами

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

Как показываем работу под NDA

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

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

Если нужно, подпишем такое же соглашение и с вами.

Контакты

Расскажите, что нужно построить

Опишите задачу своими словами. Разработку ведёт Сергей, он же выходит на созвон и считает сроки.

или
Написать в телеграм
Обсудить проект