.NET Developer
Минск, БеларусьМиддл • Сеньор
Удаленная работа
Опыт работы более 5 лет
Опыт работы более 5 лет
Короткая ссылка: gkjb.ru/gdj0
О себе
На данный момент .NET разработчик.
Мои компетенции и опыт
Учавствовал в проектировании и разработке крупной B2B SaaS LMS-платформы в составе команды: 15+ микросервисов, 60+ фоновых сервисов, система обслуживает тысячи школ в multi-tenant режиме.
*Нагруженные микросервисы на C#. Kafka, gRPC*
- Использовал Kafka для асинхронного взаимодействия (настройка продюсера/консюмера).
- Реализовал паттерна Transactional Outbox + идемпотентная обработка событий для exactly-once гарантии доставки.
- Выбрал схему партиционирования по бизнес-ключу, обеспечил гарантию порядка событий в рамках одной сущности при горизонтальном масштабировании консьюмеров.
- Перевёл внутреннее взаимодействие с REST/JSON на gRPC, тогда латентность межсервисных вызовов снизилась на 30–40%, объём трафика - примерно вдвое.
- Ускорил обработку батчей за счёт параллелизации с ограничением конкурентности ( нужен доступ к резюме hAsync, SemaphoreSlim), время обработки батча в 5000 элементов сократилось с 40s до 6s.
- Заменил блокирующие lock на Interlocked/ReaderWriterLockSlim в конкурентных счётчиках, убрал контеншен на горячей структуре.
*Оптимизировал работу PostgreSQL*
- Через pg_repack настроил очистку bloat без даунтайма, это ускорило запросы на 30-40% и вернул 50-60% дискового пространства.
- Добавил include/partial index для часто запрашиваемых данных, запрос ускорился в 3-4 раза .
- Спроектировал партиционирование событийных таблиц по времени (range partitioning), ускорил диапазонные отчёты за счёт partition pruning и заменил тяжёлый DELETE архивных данных мгновенным DROP партиции.
- Настроил чтение запросов с реплик (read/write splitting), по итогу снял 40% нагрузки с мастера.
*ClickHouse и аналитика*
- Помогал разгрузить OLTP-базу, перенеся отчётную нагрузку в ClickHouse, поэтому p99 основного API стабилизировался под нагрузкой.
*Кеширование Redis, MemoryCache*
- Внедрил cache-aside кэширование read-heavy справочников в Redis с защитой от cache stampede, тогда нагрузка на БД снизилась на 70%.
- Реализовал стратегию инвалидации кэша через доменные события вместо TTL «наугад», тем самым устранил показ устаревших данных.
- Использовал Redis для распределённых блокировок в фоновых задачах с явным учётом ограничений подхода (TTL, fencing token), исключил параллельный запуск джоб в нескольких репликах.
*Softskills*
- Менторил middle и junior разработчиков: код-ревью, помощь в коде, план развития.
*AI*
- Использовал AI-инструменты в разработке (Claude Code)
Stack: .NET 9, C#, нужен доступ к резюме Core, React, EF Core 9, Kafka, Microservices, gRPC, PostgreSQL, ClickHouse, Redis, Elasticsearch, AWS, SignalR.
