Мы разрабатываем многофункциональное клиент-серверное приложение для взаимодействия с устройствами релейной защиты и автоматики (РЗА) по промышленным протоколам Modbus RTU, Modbus TCP, IEC MMS (61850).
Архитектура приложения модульная — каждый функциональный блок представлен отдельным модулем:
- оперативный контроль,
- уставки и настройки,
- программируемая логика,
- модуль мнемосхем (редактор и управление),
- и в будущем — модуль модели данных МЭК 61850 и другие.
Клиентская часть — SPA на React + Relay.js, серверная — .NET 8 + GraphQL (Hot Chocolate), коммуникация через MassTransit (in-memory) и gRPC с отдельным runtime, который отвечает за общение с физическими устройствами. Архитектура сервера построена по DDD, разделена на слои Domain / Application / Infrastructure / API. Проект оформлен как pnpm workspace + turborepo, CI/CD настроен.
Сейчас приложение реализовано как desktop-версия (Electron.js), в дальнейшем — переход к распределённой архитектуре с backend, размещённым в серверной подстанции, и runtime-модулями в шкафах устройств.
В связи с расширением сферы влияния и запуском новых проектов, приглашаем на работу
Middle+Backend Developer (.NET 8 / GraphQL / DDD)
Технологический стек:
Backend
- .NET 8, C#
- ASP.NET Core, gRPC, Hot Chocolate (GraphQL)
- MassTransit (in-memory)
- Entity Framework Core (SQLite)
- Dapper, LiteDB
- Serilog, OpenTelemetry
- DDD-архитектура, Clean Architecture
- gRPC взаимодействие с runtime
- Automapper / Riok.Mapperly
Frontend (для понимания взаимодействия)
- React 18, Relay.js, React Flow
- TypeScript, TailwindCSS, Vite, Electron.js
🧩 Задачи:
Разработка backend-части модуля мнемосхем:
- API для хранения, редактирования и визуализации мнемосхем подстанции;
- интеграция с клиентским редактором (React Flow);
- реализация GraphQL-резолверов для работы с элементами мнемосхем.
Расширение существующих модулей:
- уставки и настройки устройств;
- программируемая логика;
- оперативный контроль и т.д.
Интеграция с runtime-процессами:
- организация обмена данными через gRPC;
- маршрутизация сообщений, подписки, события, управление состоянием устройств.
Поддержка DDD-архитектуры и внутренних стандартов кодирования.
Участие в проектировании новых модулей, в том числе модели данных IEC и будущих подсистем приложения.
🧠 Требования:
- Уверенные знания C# и .NET (6–8);
- Опыт разработки REST / GraphQL API (HotChocolate будет плюсом);
- Опыт работы с Entity Framework Core и понимание ORM/SQL;
- Опыт построения многоуровневых приложений (Domain, Application, Infrastructure);
- Опыт интеграции gRPC или других RPC протоколов;
- Навык написания юнит- и интеграционных тестов;
- Опыт работы с message bus / шиной событий (желательно MassTransit);
- Понимание принципов DDD, CQRS, SOLID, Clean Architecture;
- Умение работать в команде, читать и разбираться в чужом коде.
Желательно (будет большим плюсом):
- Знание стандарта IEC 61850 и представление о протоколе MMS;
- Понимание принципов работы Modbus RTU / TCP;
- Опыт разработки ПО для АСУ ТП, РЗА, телемеханики, энергетики;
- Опыт работы с OpenTelemetry, Jaeger;
- Опыт настройки CI/CD, Docker;
- Опыт взаимодействия с frontend-разработчиками на React/Relay.js.
🧰 Будет преимуществом, если вы:
- Понимаете, как проектировать распределённые системы, где часть логики работает ближе к оборудованию;
- Имеете опыт написания или интеграции runtime-компонентов;
- Знакомы с концепциями модульности и плагиноподобной архитектуры;
- Разбираетесь в системах реального времени или SCADA.
🤝 Мы предлагаем:
- Работу в команде, где ценится инженерный подход и качество архитектуры;
- Возможность влиять на архитектуру модулей;
- Участие в разработке сложного промышленного ПО, востребованного в энергетике;
- Полноценное наставничество от Senior backend-разработчика;
- Гибкий график, удалёнка, адекватный code review;
- Официальное оформление, прозрачная система задач (Jira/GitLab);
- Оплата — по результатам собеседования, выше рынка для уровня middle+.