Дедлоки и блокировки в проде
Прихожу к причине в модели данных и границах транзакции, а не навешиваю retry сверху. В Sierra Interactive снял сотни ежедневных дедлоков на десятках шардированных SQL Server, где любой рестарт повреждал данные.
Разбираю транзакционные системы, которые уже в проде и уже болят: дедлоки, медленные запросы, легаси на C#/.NET. Снимаю причину, а не навешиваю retry.
Беру опытных специалистов и техлидов. Моя тема — аварии и деградация в работающем проде; у новичка такой задачи ещё нет, и ему я честно скажу, что сейчас бесполезен.
Прихожу к причине в модели данных и границах транзакции, а не навешиваю retry сверху. В Sierra Interactive снял сотни ежедневных дедлоков на десятках шардированных SQL Server, где любой рестарт повреждал данные.
Переписываю и показываю замеры до и после. Рабочий пример: ключевой запрос с ~20 минут до менее 0,5 секунды, связанный код уменьшился примерно втрое.
Отчёт с планом работ и ценой. Сюда же вынос бизнес-логики из T-SQL в C# и декомпозиция монолита — делал и то и другое на 100k+ строк T-SQL и на 40+ микросервисах.
Третий запрос — единственный, где 13 лет и роль Lead работают на цену, а не на почасовку: вы покупаете оценку, а не время.
Не кейсы наставничества, а задачи из собственной практики — чтобы было видно, с чем именно я имею дело и чем заканчивается.
13 лет в разработке, 6+ на уровне Senior/Lead и архитектора. Специализация — целостность данных под конкурентной записью, транзакционные ядра и вывод зрелых систем из состояния деградации без переписывания с нуля.
Пять лет вёл Sierra Interactive — CRM для агентств недвижимости в США: принял систему с нулевой целостностью данных и привёл её в рабочее состояние. Потом архитектура промышленной платформы в «Северсталь-инфоком»: декомпозиция распределённого монолита, DMZ-контур на RabbitMQ MQTT для SCADA-телеметрии, интеграции с SAP и QMS. До этого — телематика под нагрузкой в «ГЛОНАССсофт» и встраиваемое ПО в космическом приборостроении.
Шесть лет развиваю открытую эталонную OLTP-архитектуру для .NET: агрегаты как чистые функции над состоянием, Unit of Work без ORM-трекеров, вся мутация одной атомарной транзакцией. Фреймворк адаптирован в коммерческих проектах и служит мне опорой в менторстве — я показываю не абстрактные принципы, а работающий код. Менторил 10+ разработчиков в распределённых командах США, ОАЭ и Европы.
Посмотреть портфолиоОткрытый код. Эталонная OLTP-архитектура для .NET под лицензией MIT: 232 файла C#, 27 проектов, 10 вариантов entry point, документация на 213 КБ. Плюс публикации «AESD Lab C# coding conventions» и «AESD Lab Programming Best Practices» — можно посмотреть, как я думаю, ещё до консультации.
Транзакционно-центричная архитектура под лицензией MIT: 232 файла C#, 27 проектов, 10 вариантов entry point. Агрегаты как чистые функции над состоянием, Unit of Work без ORM-трекеров, вся мутация одной атомарной транзакцией — гонки read-before-write и дедлоки исключены на уровне дизайна, а не лечатся постфактум. Фреймворк адаптирован в коммерческих проектах и используется для менторства команд.
Промышленная цифровая платформа, кластер «Индустриальные процессы». Декомпозировал тяжёлый распределённый монолит на MassTransit Courier. За месяц отвязал 12+ сервисов от хардкода одной площадки — включились мультиплощадочные кластеры Kubernetes on-premises. Спроектировал DMZ-контур на RabbitMQ MQTT для приёма SCADA-телеметрии, вёл интеграции с SAP, KMS, QMS. Оформил 50+ архитектурных эпиков в BPMN/UML/C4, выстроил сквозную трассировку ELK/Jaeger/OpenTelemetry. Менторил разработчиков.
Sierra Interactive — CRM для агентств недвижимости в США. Принял систему с нулевой целостностью данных: устранил сотни ежедневных дедлоков на десятках шардированных SQL Server. Сократил ключевой запрос с ~20 минут до менее 0,5 секунды. Внедрил Azure Service Bus и Transactional Outbox, разбил длинные ACID-транзакции на саги. Реализовал Twilio A2P 10DLC на объёме 100M+ сообщений — одна из первых успешных реализаций среди клиентов Twilio. Менторил 10+ разработчиков: отказоустойчивость, SOLID, оптимизация SQL.
Enterprise-платформа управления автопарками: телематика, IoT, потоковая аналитика. Решил десятилетнюю проблему потери телематических событий под высокой нагрузкой. Спроектировал фреймворк и SDK потоковой аналитики с DSL, перевёл императивные алгоритмы в композируемые оконные функции. Внедрил CQRS и Event Sourcing на SignalR и RabbitMQ.
Backend учётной системы на C#/.NET: EF Code First, WCF, SSRS. Освоил и внедрял в команде Domain-Driven Design под руководством ментора. Разработал VSIX-плагин для Visual Studio, ускоряющий сборку источника данных для отчётов.
Космическое приборостроение: встраиваемое ПО для мониторинга транспорта на чистом C и RTOS ChibiOS, интеграция цифровых устройств по SPI, I2C, CAN, портирование между аппаратными платформами. SOLID и паттерны применял ещё здесь, при ограниченных ресурсах.