← Назад к портфолио EN

Модернизация платформы RiverLogic VCO

RiverLogic Inc. — Senior Developer / AI Architect · Март 2014 – по настоящее время

RiverLogic разрабатывает ПО для Value Chain Optimization (VCO) — крупномасштабные модели линейного программирования, которые помогают корпоративным клиентам планировать производство, логистику и цепочки поставок. Уже больше десяти лет я вместе с командой веду архитектурное развитие этой платформы: от двухзвенного on-premise монолита — к событийно-ориентированной платформе микросервисов на Azure, а в последнее время — к инструментам корпоративного ИИ поверх неё.

30%
меньше обращений в саппорт после миграции BLL
15%
ниже потребление ресурсов после перехода на .NET 8
10+
лет архитектурного развития платформы

Архитектурная эволюция

Платформа начиналась как 2-звенная система с бизнес-логикой в хранимых процедурах MSSQL T-SQL — сложно тестировать, рискованно менять. Я руководил переносом слоя бизнес-логики (BLL) на сервер приложений .NET C#, перестроив систему в полноценную 3-звенную архитектуру без простоя при переключении. Помимо снижения обращений в саппорт на 30%, это заметно повысило безопасность и стабильность системы и добавило совместимость с PostgreSQL наряду с существующей поддержкой MSSQL — открыв путь к cloud-native развёртыванию.

От Windows к Linux, от .NET Framework к .NET 8

Когда бизнес-логика переехала на C#, следующим шагом стала переносимость в облако: миграция кодовой базы с .NET Framework на .NET 8 для полной кроссплатформенности (Linux) и повсеместное внедрение async/await. Это снизило потребление ресурсов примерно на 15% и убрало последнюю зависимость сервера приложений от Windows.

Событийно-ориентированные микросервисы на Azure

On-premise монолит был декомпозирован на высоконагруженные микросервисы на Azure Kubernetes Service и Container Apps. Сервисы взаимодействуют через REST для синхронных вызовов и через Azure Event Grid / Queues — для асинхронного месседжинга, а Saga, CQRS и паттерн Outbox поддерживают консистентность данных между сервисами, которые больше не разделяют одну транзакцию БД. Реализация нативна для Azure, но сам паттерн — событийно-ориентированный, с асинхронным месседжингом и eventual consistency — напрямую переносится на эквивалентные serverless-примитивы других облаков (включая AWS Lambda, EventBridge, SQS/SNS).

Клиент и ИИ-ассистент Web UI / вызовы плагина Semantic Kernel ASP.NET 8 REST HATEOAS API Gateway OpenAPI-совместимый, версионируемый контракт Микросервисы на AKS / Container Apps BLL · AI / RAG · другие доменные сервисы Azure Event Grid / Queues — EDA Асинхронный месседжинг · Saga · CQRS · Outbox PostgreSQL + MSSQL + noSQL Azure Tables Хранилища данных для каждого сервиса Миграция с: 2-звенного on-prem монолита, бизнес-логика в хранимых процедурах MSSQL T-SQL

Текущая архитектура платформы, сверху вниз — и то, что она заменила, внизу.

Интеграция корпоративного ИИ

Позже эта архитектура стала основой для ИИ-ассистента RiverLogic. Вместе с командой я реализовал retrieval-augmented generation (RAG) с векторным поиском по эмбеддингам и предоставил основной функционал VCO этому ассистенту через OpenAPI-совместимый REST HATEOAS API, обёрнутый в плагин Microsoft Semantic Kernel — это позволяет ассистенту вызывать реальные возможности платформы, а не просто рассказывать о них. В части моделирования вместе с командой провёл R&D по дообучению LLM через LoRA (Python, PyTorch, Transformers) для адаптации open-source моделей под специализированные корпоративные задачи, а также отдельно спроектировал прототип графовой нейросети для предварительной оценки разрешимости LP-задач — подробнее в описании GCNN-прототипа.

Инженерная культура

Архитектурные решения работают только тогда, когда команда может безопасно на них строить. Я практиковал DDD, SOLID и паттерны GoF, выстроил полные наборы юнит- и интеграционных тестов (xUnit, NSubstitute) по TDD, чтобы релизы оставались без простоя по мере роста распределённости системы. Также внедрил в команде agentic AI-воркфлоу на основе Claude Code, сократив рутинное написание кода и повысив общую скорость разработки, и веду пайплайны сборки/деплоя команды через Azure DevOps.

Основной production-код здесь защищён строгими корпоративными NDA и является собственностью компании, поэтому не выложен публично на GitHub — готов подробно разобрать архитектуру или конкретные решения по запросу.

Также по запросу могу предоставить письменную рекомендацию от RiverLogic.