Struchkov Mark

Solution Architect

Коротко обо мне

В настоящее время исполняю роли Solution Architect и Tech Lead, а до этого занимался backend разработкой на Java. Сейчас в зоне моей ответственности проектирование архитектуры и координация работы команды разработки из шести человек.

Веду технический блог, с аудиторией более 25 000 посетителей в месяц, а также публикую технические заметки, которые читают около 3 000 человек. Участвовал в запуске курса по Java-разработке от Яндекс.Практикума как первый наставник, что помогло значительно развить коммуникационные навыки и глубже понять процессы обучения в IT.

Для меня разработка — это больше, чем работа, это интеллектуальный вызов. Мне нравится разбивать сложные задачи на управляемые этапы, находить оптимальные решения и выстраивать техническую стратегию развития продукта.

💼 Опыт работы

Solution Architect / TechLead

Март 2022 — По настоящее время

CRM "НОТА МОДУС". Модуль "Контакт Центр"

Спроектировал архитектуру модуля контакт-центра и координировал работу команды бэкенд-разработчиков (6 человек). Модуль позволяет:

  • Обрабатывать входящие обращения и исходящие коммуникации
    • Гибкие правила распределения омниканальной очереди, автоматический подбор оператора.
    • Передача обращений, возврат в очередь, подключение супервизора.
    • Оценка работы оператора клиентом и супервайзером.
  • Телефония: Входящие и исходящие звонки из CRM, IVR-меню, CTI-панель, интеграция с любой АТС, массовые обзвоны, транскрибация аудио.
  • Чаты: Внутренние (персональные и групповые) и клиентские переписки (Telegram, VK, email и др.) с поддержкой ботов для автоматизированного взаимодействия.
  • Учет времени: Автоматический контроль рабочего времени, планирование смен.
  • История коммуникаций: Сохранение всей истории взаимодействий с клиентом.
  • Единое окно оператора: позволяет в одном месте просматривать информацию из различных систем.
  • AI-интеграция: Поддержка операторов и возможность замены на AI-оператора.

Скриншот модуля коммуникаций

Главные достижения в роли Solution Architect:

  • Проектирование микросервисной архитектуры модуля из более чем 50 микросервисов с учетом масштабируемости и отказоустойчивости:
    • Все сервисы горизонтально масштабируются (stateless).
    • Взаимодействие между сервисами преимущественно асинхронное (Kafka) или используется gRPC.
    • Обеспечена обратная совместимость за счет версионирования gRPC и Kafka событий.
  • Успешно и в срок внедрили разработанное решение заказчику из финансового сектора. Система позволила заказчику
    • Уменьшить среднее время ожидания звонка в 2.8 раза.
    • Увеличить количество обработанных голосовых обращений на 84%.
    • Снизить количество пропущенных звонков в 4 раза.
    • Оптимизировать среднее время обработки звонков оператором, снизив его на 42 секунды.
  • Часто выступал в роли главного архитектора всей системы, прорабатывал интеграцию с IT-ландшафтами заказчиков, учитывая их особенности инфраструктуры.
  • Внедрил архитектурный комитет – регулярный форум для архитекторов и разработчиков всех команд, где обсуждались ключевые технические решения и развитие всей CRM.

Основные достижения и задачи в роли TechLead:

  • Единолично разработал первые версий ключевых сервисов: распределение обращений, чаты, вложения и т.д.
  • Проводил технический анализ, превращая мутные бизнес-требования в четкие технические решения.
  • Разработал сервис взаимодействия с файловым хранилищем MinIO S3, включая разграничение доступа к файлам.
  • Разработал многие системные библиотеки: кэширование, фильтрация, авторизация и другие

Основные достижения и задачи в роли TeamLead:

  • Проводил собеседования и сформировал команду из шести высококвалифицированных backend-разработчиков.
  • Декомпозировал задачи и распределял их на команду разработки, контролировал прогресс исполнения.
  • Проводил one-to-one встречи с разработчиками, выявлял их профессиональные интересы и зоны роста, что позволило предотвратить выгорание и исключить текучку — все разработчики проработали более года.
  • Организовал техтолки раз в 2 недели, где разработчики обсуждали состояние сервисов, за которые они несли ответственность, что повышало уровень владения системой.

Технологии:

  • Java 17
  • Quarkus Reactive
  • Quarkus Native
  • GraphQL
  • Kafka
  • Redis
  • gRPC
  • WebSockets
  • Docker
  • PostgreSQL
  • Hibernate
  • JOOQ
  • Gradle
  • Liquibase
  • Jmeter
  • Camunda
  • Apache Camel
  • WebRTC
  • SIP

Senior Java Developer

Октябрь 2021 — Март 2022 (6 месяцев)

Bug Tracking System

Архитектура проекта: Микросервисная

Система предназначена для контроля багов в продуктах группы компаний Т1, обеспечивая прозрачность и удобство управления дефектами на всех этапах их обработки.

Основной вклад заключался в разработке сервиса заявок, который стал ключевым компонентом системы. Разработанный сервис обеспечивает:

  • Регистрацию новых задач с возможностью классификации и приоритизации.
  • Назначение ответственных исполнителей и контроль их загрузки.
  • Отслеживание статусов выполнения и автоматическое обновление информации.

Основной архитектурный вклад заключался во внедрении SDK-подхода: разработка специализированного модуля SDK внутри микросервиса, который интегрировался в другие сервисы для упрощения и унификации вызовов, что существенно оптимизировало взаимодействие между компонентами системы.

Технологии:

  • Java 11
  • Quarkus Reactive
  • Kafka
  • Hibernate
  • Maven

Middle Java Developer / TechLead

Февраль 2020 — Октябрь 2021 (1 год и 9 месяцев)

CRM-система для Большого театра России

Архитектура: многомодульный монолит с отдельными сервисами авторизации и синхронизации.

В рамках этого проекта я активно участвовал в качестве Middle Developer и впервые исполнил роль TechLead. Была разработана система, которая позволяет эффективно сегментировать клиентов с использованием гибких фильтров и запускать целевые email-рассылки.

Проект успешно завершен и стабильно функционирует; сейчас его поддерживает другая команда разработчиков.

Ключевые задачи и достижения:

  • Архитектура: Активно участвовал в проектировании архитектуры системы.
  • OAuth 2.0 и SSO: Разработал и внедрил сервис единого входа на основе OAuth 2.0 с использованием Spring, интегрировав внешний LDAP для хранения пользовательских данных.
  • Система контроля доступа: Реализовал систему контроля доступа по модели Attribute-Based Access Control (ABAC).
  • Сервис уведомлений: Создал сервис уведомлений с возможностью отправки сообщений через email и Telegram.
  • Системы фильтрации: Разработал системы фильтрации на базе ElasticSearch, Criteria API и JOOQ.
  • Интеграция с Liferay: Доработал и интегрировал open-source плагин для существующей системы на Liferay для обеспечения SSO между CRM и системой.
  • Хранение файлов: Разработал механизм хранения файлов на основе MinIO S3.

DevOps задачи:

  • Docker Compose: Перенес многокомпонентный проект в Docker Compose для упрощения развертывания.
  • CI/CD настройки: Настроил Bitbucket Server и TeamCity с нуля, обеспечив их интеграцию.
  • Nexus Sonatype: Конфигурировал Nexus Sonatype для корпоративных нужд по управлению зависимостями.
  • GitLab CI: Настроил процессы CI/CD с использованием GitLab CI для всех этапов разработки.

Технологии

  • Java 8
  • Java 17
  • AWS S3
  • Spring Boot
  • Maven
  • Hibarnate
  • Docker
  • Nginx

Junior Java Developer

Июнь 2019 — Февраль 2020 (9 месяцев)

Проект маркетплейса залогового имущества "KomissiON" для ВТБ

В компании НОТА я начал карьеру в роли Junior Java Developer, участвуя в разработке маркетплейса «KomissiON» для банка ВТБ. Платформа предназначена для реализации непрофильных активов банка (недвижимость, транспорт, промышленные объекты), полученных в результате невыплаты кредитов. Система автоматизирует процесс продажи, повышая эффективность монетизации таких активов.

Одной из ключевых задач, за которую я отвечал, стала разработка системы фильтрации на базе ElasticSearch. Я спроектировал и внедрил механизм гибкого поиска, позволяющий пользователям быстро находить активы по различным параметрам.

Технологии:

  • Java 8
  • Spring Boot
  • Hibernate
  • PostgreSQL
  • ElasticSearch
  • SOAP

Менторская деятельность на курсе Java

Ноябрь 2021 — Декабрь 2022

В свободное от основной работы время я исполнял роль наставника на курсе Java в Яндекс.Практикуме. Эта деятельность позволила мне поделиться профессиональными знаниями и существенно развить мои коммуникационные навыки.

Основные достижения и обязанности:

  • Формирование курса: Был одним из первых наставников и активно участвовал в разработке и улучшении программы курса, внося предложения по корректировке учебного материала.
  • Поддержка студентов: Регулярно отвечал на технические вопросы студентов в Slack, помогая им преодолевать трудности и глубже понимать язык Java.
  • Проведение Q&A сессий: Каждые две недели организовывал интерактивные сессии в Zoom, где студенты могли получить ответы на сложные вопросы и решить текущие проблемы.
  • Создание обучающих материалов: Подготовил и записал несколько образовательных видео, включая продвинутые техники отладки в IntelliJ IDEA и реализацию связей @OneToMany и @ManyToOne в Java.

Java Developer (Стажёр)

Февраль 2019 — Апрель 2019 (3 месяца)

Во время стажировки в TINKOFF я участвовал в разработке системы для генерации финансовых отчётов, предназначенных для руководителей отделов. Мои ключевые задачи включали:

  1. Реализация системы авторизации: Внедрил JWT-авторизацию с использованием Spring Security и интеграцией с LDAP, что повысило безопасность и упростило процесс аутентификации пользователей.
  2. Динамическая генерация отчётов: Разработал функционал для динамического создания финансовых отчётов с помощью JasperReports, автоматизировав процесс подготовки документов и позволив руководству получать актуальные данные с необходимыми корректировками.
  3. Настройка доступа к базам данных: Конфигурировал доступ к двум разным базам данных, применяя Hibernate для одной и MyBatis для другой, что обеспечило эффективное взаимодействие с различными источниками данных.

Технологии:

  • Java 8
  • Spring Boot
  • Hibernate
  • MyBatis
  • Maven
  • PostgreSQL
  • Git
  • JasperReports

💩 Pet Projects

У меня довольно много публичных и непубличных пет-проектов, многие из которых автоматически деплоются в Maven Central. В какой-то момент стало интересно поднять под свой зоопарк проектов инфраструктуру для CI/CD, так у меня появился собственный Git на базе Gitea, СI/CD на базе Drone CI и Nexus.

🤖 GodFather | GitHub

Все мессенджеры по сути имеют одинаковую структуру: сообщения, пользователи, вложения, боты, клавиатуры и так далее. GodFather это набор библиотек, которые абстрогируют общие сущности мессенджеров, и на основе этой обобщенной доменной модели позволяет создавать чат-ботов без привязки к конкретному мессенджеру.

Так же на основе этих обобщенных библиотек собираются библиотеки для реализации чат-ботов под конкретный мессенджер, которые расширяют общие сущности, чтобы можно было использовать функционал доступных только в данном месенджере.

Особенностью этого проекта является то, что существует по две версии каждого модуля под обычный SpringBoot и под Quarkus Reactive.

Этот проект был темой моего дипломного проекта в университете, и я до сих пор продолжаю работу над ним. Данный проект использовался для реализации Telegram-ботов на основной работе.

Статьи:

Технологии:

  • Java 17
  • Spring Boot
  • Quarkus Reactive
  • Maven

🔔 GitLab Notify Helper | GitHub

🌟75🌟

Персональный Telegram-bot, который позволяет гибко настроить уведомления из GitLab. Разработан с использованием предыдущего проекта — GodFather.

Статьи:

Технологии:

  • Java 17
  • Spring Boot
  • PostgreSQL
  • GitLab API
  • Maven

🖊 uBlogger | GitHub

🌟250🌟

Пока это самый популярный проект. Это предыдущий шаблон моего блога для генератора статических сайтов Hugo.

Технологии:

  • Hugo
  • HTML
  • CSS
  • JavaScript

🌴 Haiti Framework | GitHub

Никто из нас не любит писать типичный-тривиальный код. Это мой набор прикладных библиотек, в которые я собираю интересные и полезные решения, которые потом могу использовать в других проектах.

Технологии:

  • Java 17
  • Spring

Навыки

Languages

  • Java 8 - 17
  • Go
  • Python

Frameworks

  • Spring Boot
  • Quarkus Reactive

Обмен данными

  • REST
  • Redis
  • GraphQL
  • WebSockets
  • Kafka
  • gRPC

Сборщики

  • Maven
  • Gradle

Database

  • Hibernate
  • PostgreSQL
  • Liquibase
  • AWS S3
  • Elasticsearch
  • MongoDB
  • JOOQ

DevOps

  • Docker & Compose
  • Nginx
  • Gitlab CI
  • Drone CI
  • Linux

Прочее

  • Jmeter
  • Git
  • MyBatis
  • SOAP
  • JasperReports
  • OAuth2
  • SSO

Образование

  • Информатика и вычислительная техника
    Рязанский Государственный Радиотехнический Университет
    2014 - 2019

Языки

  • Русский (Носитель)
  • English (A2)