Проекты · разборы систем

Проекты и кейсы

Два класса систем на одном фундаменте Go и gRPC: учётные платформы, где главное — жизненный цикл документа, и вычислительные движки, где главное — объяснимость расчёта.

  • Go · gRPC · GraphQL
  • PostgreSQL и MS SQL Server
  • Kafka · Elasticsearch
  • ERP-платформаМультиарендная ERP: 10+ доменных модулей, три монолита и GraphQL-шлюз, единый gRPC-контракт coreerp.v1.
  • ЛогистикаВосемь микросервисов за централизованным API-шлюзом; обработка ключевых процессов — 9 минут вместо 16+ часов.
  • РаспределениеДвижок распределения товара: три пайплайна разбивки и операторская панель из 11 разделов.
  • РольАрхитектура, контракты и ключевой код — Максим Диденко, технический архитектор и Senior Backend.

Кейсы

Три системы, три разные инженерные задачи

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

ERP · мультиарендность

Мультиарендная ERP на модульном монолите

Ядро документооборота: единая шапка с расширениями под тип, конечный автомат статусов, граф связей «на основании», помесячная сквозная нумерация. Транзакционный Outbox в Kafka, CQRS-поиск на Elasticsearch, шардирование арендаторов.

100+обратимых миграций на Goose

Разбор проекта →

Логистика · микросервисы

Автоматизация логистических операций

Восемь масштабируемых сервисов за одним API-шлюзом, MS SQL Server и версионированные миграции, логи через Vector в Elasticsearch, вход по LDAP и JWT. Операторский интерфейс — Nuxt 3 с Handsontable.

9 минутвместо 16+ часов обработки

Разбор проекта →

Ритейл · движок распределения

Распределение товара для розничной сети

Split, BackLogic и Blackbox: прямая логистика, вывоз излишков и жадное перераспределение между магазинами. Скорость продаж на EMA, потребность с сезонностью, стоп-причины по каждой паре «магазин — артикул».

11 разделовоператорская панель, журнал на 9 вкладок

Разбор проекта →
10+доменных модулей в одной кодовой базе
8микросервисов за централизованным API-шлюзом
3пайплайна разбивки: прямая, обратная, Blackbox
C4 L1–L4модель архитектуры и корпус ADR

До студии

Опыт до студии

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

  • Онкоцентр · СШАУчёт грантов и финансовых потоков, данные лабораторных исследований, регламентированный учёт препаратов. Все расчёты вынесены на уровень базы данных.
  • Крупный банкИнтеграционное решение в торговой системе Murex с преобразованием MxML → FIXML.
  • Игровой холдингDWH на MS SQL, PostgreSQL и ClickHouse, миграция ETL с SSIS на Apache Airflow, переход на PostgreSQL и затем на ClickHouse, PoC Arenadata Hyperwave и Visiology v3 — по итогам выбрали FineBI.
  • Интеграция данныхОтказоустойчивая интеграция пяти баз данных и полный цикл внедрения Airflow — от настройки до динамических DAG.
  • ОЦО холдингаОбщий центр обслуживания промышленного холдинга: руководство отделом из трёх человек, обучение коллег T-SQL.
  • РефакторингКодовые базы объёмом 30 000+ строк на React, Python и PHP — приведение к состоянию, в котором их можно развивать дальше.
  • ПубликацияСтатья на Habr «From Root CA to User Authorization in nginx+apache. Part 1», 2017 год — habr.com/ru/articles/325956 ↗

Оговорка

Чего в разборах нет и почему

Почему без названий

Мы не называем заказчиков — ни одного, независимо от того, подписан NDA или нет. В разборах есть архитектура, алгоритмы, схемы данных и принятые инженерные решения; нет названий компаний, их оборотов, объёмов и клиентской базы. Это же правило работает и в обратную сторону: ваш проект попадёт сюда как «учётная система для оптовой торговли», а не под своим именем — и только если вы разрешите его показывать вообще.

Перелинковка

Из каких услуг собраны эти проекты

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

Контакты

Расскажите про свою систему — разберём и сравним с этими

Опишите, что уже построено и где упирается. Ответим, на какой из трёх сценариев это похоже и что из наших решений применимо к вашему случаю. maincode — инженерная студия ИП Диденко М. С.