Скидка на вакансию
Скидка на первую вакансию
Акция до 22 декабря
Александр Санков (sankovlex), 32 года, Россия, Санкт-ПетербургАлександр Санков (sankovlex), 32 года, Россия, Санкт-Петербург

Александр Санков

Бэкенд разработчикСтарший (Senior)
Рассмотрю предложения

Контакты

Войти
Возраст: 32 года
Опыт работы: 9 лет и 6 месяцев
Регистрация: 22.08.2023
Последний визит: 12 месяцев назад
Гражданство:
Местоположение: Россия, Санкт-Петербург
Дополнительно: готов к переезду и к удаленной работе
Знание языков:

Обо мне

Привет! В .NET разработке уже более 8 лет. Работал в промышленной, юридической области, в логистике и грузоперевозках, в e-com. Имею большой опыт "разработки для разработки".  И вот за это всё время успел "раскачать"...

Технические навыки (hard skills)

Опыт в .NET и языке программирования C#

  • CLR, FCL, CTS, CLS, сборка, система типов, типы данных, система исключений, основные алгоритмы GC, многопоточность
  • dotnet CLI для непрерывной интеграции, непрерывной поставки и контейнеризации
  • базовые конструкции языка, TPL, Linq
  • фичи языка: async usings, async streams, async enumerables, pattern matching, strings interpolation/raw literal, "элвис" нотацию, stackalloc, out и ref нотацию, null ref types, records, spans и т.д.
  • выявлении взаимных и обратимых блокировок, высокого потребления процессорного времени через dotnet trace,  анализе GC и чрезмерного потребления памяти через dotnet dump
  • разработка под MSBuild (встраивание собственных трагетов для автоматизации кодогенерации)
  • разработка banchmarks (своевременная опитимизация hotpath, обнаружение утечек памяти и чрезмерного потребления CPU алгоритмов)

Опыт в архитектуре

  • моделирование объектов и структур на основе принципов ООП
  • проектирование типов на основе всех принципов SOLID
  • проектирование крупномасштабных архитектур исходя из базовых принципов DDD
  • реализация архитектуры CQRS для поддержания принципов DDD
  • реализация архитектуры Event Sourcing для поддержания принципов DDD (Outbox, Inbox, etc)
  • реализация основных паттернов проектирования (порождающие, структурные, поведенческие)
  • использования архитектурных принципов KISS, YAGNI, DRY, WET, TELL-DON'T-ASK
  • реализации архитектуры REST/RESTful API с использованием фреймворка ASP .NET Core
  • реализации протокола SOAP с использованием фреймворка WCF и протокола RPC с использованием фреймворка gRPC
  • sustainability алгоритмов

Знания техник рефакторинга

  • составление и перемещение: extract/inline/move method/class/temp var/delegate
  • обобщение абстракции: pullUp/pushDown - method/field/ctor, extract interface/collapse hierarchy
  • мелкие: rename method, add parameter, remove parameter, parametrize method и т.д.
  • крупномасштабные: процедурное программирование -> ООП программирование, отделение domain от view

Знания систем контроля версий

  • алгоритмы ветвления системы контроля версий Git
  • пути слияния merge commit/rebase
  • воркфлоу работы с GitLab (Merge Requests, Repositories, Review, Descussions)
  • воркфлоу работы с GitHub/BitBucket (Pull Requests, Projects, Organizations)
  • принципы GitFlow
  • реализация сложных задач (перемещение истории между репозиториями, намеренное изменение истории и т.д.)

Опыт в виртуализации и контейнеризации

  • .NET Docker образы для автоматизации сборки, тестирования, деплоя
  • виртуальные машины Hyper-V, VMWare
  • Docker Compose для деплоя в Docker Swarm
  • Kubernates и шаблонизация Helm Chart

Опыт в тестировании

  • разработка сложных алгоритмов через TDD
  • реализация юнит, интеграционных, функциональных тестов с использованием библиотек NUnit, XUnit, Moq, WebApplicationFactory, Shouldly, FluentAssertions
  • реализация нагрузочных тестов и анализа производительности с помощью Gatling + Scala + Grafana, Яндекс.Танк

Опыт работы с СУБД и хранилищами

  • использование и анализ планов запроса и основных физических и логических операторов
  • оптимизация времени выполнения SQL запросов
  • внедрение секционированных таблиц (partition tables), автоматизация смещения
  • проектирование структур баз данных, нормализация и денормализация
  • реализации хранимых процедур, функций, триггеров и пользовательских типов
  • использование ORM библиотек EntityFramework/Core, NHibernate, Dapper
  • работа с MS SQL и PostgreSQL

Опыт работы с кешированием или постоянным хранением в памяти

  • distributed cache с помощью Redis
  • key ring на основе Redis
  • масштабируемый SignalR Hub с использованием Redis (pub/sub)
  • алгоритмы на основе типов данных в Sentinel Redis: string, hash, list, set, sorted set
  • клиентское шардирование Redis (без Sentinel)

Опыт в полнотекстовом поиске ElasticSearch

  • проектирование структур данных и индексации
  • сложные поисковые запросы, агрегации, метрики

Опыт использования протокола передачи сообщений

  • интеграционная шина между микросервисами с использованием транспорта RabbitMQ и Apache Kafka
  • масштабирование и партиционирование Apache Kafka
  • паттерны сага, хранилище событий, Transactional Outbox/Inbox

Опыт работы с сетевым взаимодействием

  • протокол SOAP с использованием WCF
  • архитектура REST/RESTful с использованием ASP.NET
  • протокол RPC с использованием gRPC
  • клиентская балансировка для http/grpc на http транспорте
  • обратный прокси и балансировка нагрузки HaProxy или IIS ARR

Опыт работы с observability и stability

  • реализация трассировок http/grpc/sql запросов, mq produce/consume, redis operations
  • реализация метрик histogram http/grpc/sql запросов, mq produce/consume delay, message size, redis miss cache и многое другое
  • разработка под OpenTelemetry и ActivitySource
  • написание агрегаций для Thanos и Prometheus
  • написание запросов для дашбордов мониторинга Grafana
  • реализация вотчеров для алертинга ошибок на Scala
  • разработка в ELK стеке

Опыт работы с непрерывной интеграцией и поставкой

  • разработка .NET пайплайна сборки, тестирования, деплоя, канареечного деплоя
  • TeamCity для автоматизации сборки, тестирования и деплоя
  • GitLab CI автоматизация сборки, тестов, деплоя
  • Travic-CI/GitHub Actions в GitHub для автоматизации сборки, тестирования и деплоя
  • библиотека Nuke для автоматизации сборки, тестирования и деплоя на C#
  • Amazon, Azure, Herocu и автоматизацией сборки, тестирования и деплоя

Опыт разработки библиотек

  • Rate Limiter основанный на Token Bucket Algorithm
  • Circuit breaker основанный на Netflix Hystrix
  • Distributed Cache для шардированного Redis
  • Apache Kafka авторизация, метрики, трассировки, schema-registry (кодогенерация) для .NET
  • Рантайм смена уровня логирования в Serilog (общий уровень, пространства имен, запрос)
  • Leader Election на ETCD
  • Тулинг для генерации кода gRPC, генерации кода Kafka schema-registry, генерация runtime конфигурации по C# коду
  • Фреймворк для интеграционного тестирования

Навыки коммуникации (soft skills)

  • опыт работы по методологии Scrum/Kunban
  • опыт работы тимлидом в команде из 10 человек
  • опыт работы в качестве feature owner во многих бизнес задачах
  • хакатоны в качестве лида команды
  • публичное выступление "Как построить архитектуру на основе команд и запросов"
  • преподаватель на двух потоках middle студентов (Route256)
  • английский язык на уровне B1
  • техника десятипальцевого слепого набора
  • пул реквесты в опенсурс grpc,json transcoding и т.д
  • увлечён спортом

Навыки

.NET
C#
ASP.NET
SQL
Redis
Kubernetes
Apache Kafka
RabbitMQ

Опыт работы

  • Команда разработки ведущего e-com в России
    МоскваБолее 5000 сотрудников
    Старший разработчик информационных систем
    Август 2021 — По настоящее время (3 года и 5 месяцев)

    Обязанности

    • Разработка фреймворка абстрагирующего инфраструктуру для .NET разработки в команде Ozon Платформа (.NET Platform)

    Достижения

    • Разработал собственный ETCD клиент (в замен open source dotnet_etcd) с корректной клиентской балансировкой, трассировками, метриками, работающий на osx_arm64 (m1/m2).
    • Реализовал паттер Leader Election, основанный на инфраструктуре ETCD. Разработал абстракции для задач запускаемых в единственном экземпляре, работающих в thread safe режиме.
    • Реализовал Rate Limiter, основанный на Token Bucket Algorithm, с возможностью конфигурации в runtime.
    • Реализовал Circuit Breaker основанный на алгоритме Netflix Hystrix использующий алгоритм sliding window, учитывающий блокировки потоков, с возможностью конфигурации в runtime.
    • Реализовал Distibuted Cache на инфраструктуре шардированного Redis поддерживающий клиентскую балансировку с трассировками и метриками.
    • Реализовал фреймворк интеграционного тестирования поддерживающий инфраструктуру в Docker локально и в GitLab Services в CI/CD.
    • Добавил возможности конфигурации Serilog в runtime, а именно, изменение общего уровня логирования, уровня для пространства имен, уровня на запрос.
    • Реализовал платформенный .NET тулинг (dotnet tool):
      • генерация кода по proto файлам (gRPC);
      • вендоринг proto зависимостей (gRPC);
      • генерация кода и вендоринг типизированных protobuf сообщений для Kafka;
      • плагин генерации кода для protoc на C#;
      • генерация yaml конфигурации для ETCD по C# коду (RealtimeConfig);
      • форматирование C# кода по общему registry editorconfig.
    • Разработал библиотеку для использования Kafka с авторизацией, метриками, трассировками, логированием.
    • Добавил функциональность работы со schema-registry в Kafka, позволяющий использовать типизированные protobuf сообщения, учитывающие обратную совместимость.
    • Участвовал в качестве преподавателя на двух потоках обучения middle специалистов Route256
  • Мы создаем инновационные ИТ-решения для работы на логистическом рынке
    Санкт-ПетербургОт 100 до 1000 сотрудников
    Ведущий программист 2 категории
    Октябрь 2020 — Август 2021 (11 месяцев)

    Обязанности

    Достижения

    • Получил опыт fullstack разработки. Back-end на .NET, front-end на React
    • Формализовал бизнес процессы, спроектировал по MDD и выполнил рефакторинг 5ти больших сервисов "Заказы" и "Торги"
    • Увеличил stability по средствам внедрения и реализации observability на основе метрик, трассировок и логирования
    • Разработал общий сервис конвертации валют для всех команд
    • Разработал сервис приглашений в заказ
    • Разработал BFF сервис перед поиском грузов
    • Разработал отслеживание грузов через gps датчики в сервисах "Заказы"
    • Учавствовал в 2х внутренних хакатонах
  • Наделяем юристов силой технологий. Создаем решения, которые помогают работать в удовольствие.
    СамараОт 100 до 1000 сотрудников
    Старший инженер-программист
    Апрель 2017 — Октябрь 2020 (3 года и 7 месяцев)

    Обязанности

    • Сопровождение высоконагруженного прикладного интерфейса (Casebook API v2)
    • Разработка высоконагруженного прикладного интерфейса (Casebook API v3) на основе микросервисной архитектуры
    • Сопровождение и рефакторинг системы поставки больших данных (до 1Tb ежедневно)

    Достижения

    • Разработал ~ 10 из 25 микросервисов для системы Casebook API v3
    • Разработал сервис ограничения темпа запросов. Повысил время отклика на 10%, стабилизировал нагрузку на сервис.
    • Разработал сервер аутентификации (OIDC). Реализовал Single Sign-On для множества микросервисов.
    • Разработал систему биллинга, основанную на DDD и проектировании по модели. Автоматизировал управление договорными обязанностями пользователей.
    • Внедрил секционирование таблиц (Partition tables). Увеличил быстродействие базы данных объемом более 6Tb, как минимум в 12 раз.
    • Реализовал фреймворк и выполнил рефакторинг системы поставки больших данных (до 1Tb ежедневно). Уменьшил ежедневное количество ошибок на ~ 50% и увеличил скорость работы на ~ 30%.
    • Проводил нагрузочное тестирование 2 микросервисов для формирования SLA, плана HTTP запросов от пользователей и выявления "узких" мест.
    • Реализовал 5 вотчеров для алертинга кол-ва ошибок HTTP запросов в микросервисах, отсутствия событий в отслеживании информации и кол-ва поврежденных или неотправленных файлов.
    • Реализовал 4 Grafana Boards для микросервисов и фоновых служб. Увеличил время реакции на ошибки и нестабильность служб.
  • Частная практика, работа без зачисления в штат
    Веб-разработчикWeb-разработчик
    Сентябрь 2016 — Апрель 2017 (8 месяцев)

    Обязанности

    • Проектирование и разработка back-end сервиса для логистических операций и грузоперевозок

    Достижения

    • Разработал RESTfull API сервис с нагрузкой около 300 пользователей
    • Получил опыт работы на фриланс
  • Комплект-Сервис, ООО
    Самара
    Инженер-программист
    Июль 2015 — Сентябрь 2016 (1 год и 3 месяца)

    Обязанности

    • Разработка системы автоматизации внутренних маркетинговых процессов (продажа, закупка, логистика, склад, документооборот)
    • Разработка, внедрение и сопровождение системы поиска контрагентов (парсинг организаций, оценка рентабельности, внутренняя коммуникация)
    • Разработка web-приложения для обеспечения сборки комплектов трубопроводной арматуры и интернет продаж

    Достижения

    • Внедрил и презентовал полностью собственный проект
    • Получил опыт fullstack разработки
    • Разработал архитектуру спроектированную по модели
    • Получил опыт работы в сложной предметной области

Высшее образование

  • ОГУ

    Оренбургский государственный университет
    Оренбург996 выпускников
    Математический (МФ)
    Сентябрь 2010 — Июль 2015 (4 года и 10 месяцев)

    Математическое обеспечение и администрирование информационных систем. Математик-программист.