
Struchkov Mark
Коротко обо мне
В настоящее время исполняю роли Solution Architect и Tech Lead, а до этого занимался backend разработкой на Java. Сейчас в зоне моей ответственности проектирование архитектуры и координация работы команды разработки из шести человек.
Веду технический блог, с аудиторией более 25 000 посетителей в месяц, а также публикую технические заметки, которые читают около 3 000 человек. Участвовал в запуске курса по Java-разработке от Яндекс.Практикума как первый наставник, что помогло значительно развить коммуникационные навыки и глубже понять процессы обучения в IT.
Для меня разработка — это больше, чем работа, это интеллектуальный вызов. Мне нравится разбивать сложные задачи на управляемые этапы, находить оптимальные решения и выстраивать техническую стратегию развития продукта.
💼 Опыт работы
CRM "НОТА МОДУС". Модуль "Контакт Центр"
- Архитектура: Микросервисы. Реактивный стек
- Сайт: https://modus.nota.tech
- Реестр отечественного ПО: №2021662387
Спроектировал архитектуру модуля контакт-центра и координировал работу команды бэкенд-разработчиков (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
Bug Tracking System
Архитектура проекта: Микросервисная
Система предназначена для контроля багов в продуктах группы компаний Т1, обеспечивая прозрачность и удобство управления дефектами на всех этапах их обработки.
Основной вклад заключался в разработке сервиса заявок, который стал ключевым компонентом системы. Разработанный сервис обеспечивает:
- Регистрацию новых задач с возможностью классификации и приоритизации.
- Назначение ответственных исполнителей и контроль их загрузки.
- Отслеживание статусов выполнения и автоматическое обновление информации.
Основной архитектурный вклад заключался во внедрении SDK-подхода: разработка специализированного модуля SDK внутри микросервиса, который интегрировался в другие сервисы для упрощения и унификации вызовов, что существенно оптимизировало взаимодействие между компонентами системы.
Технологии:
- Java 11
- Quarkus Reactive
- Kafka
- Hibernate
- Maven
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
Проект маркетплейса залогового имущества "KomissiON" для ВТБ
- Архитектура проекта: монолитная
- Сайт проекта: https://komission.vtb.ru
В компании НОТА я начал карьеру в роли Junior Java Developer, участвуя в разработке маркетплейса «KomissiON» для банка ВТБ. Платформа предназначена для реализации непрофильных активов банка (недвижимость, транспорт, промышленные объекты), полученных в результате невыплаты кредитов. Система автоматизирует процесс продажи, повышая эффективность монетизации таких активов.
Одной из ключевых задач, за которую я отвечал, стала разработка системы фильтрации на базе ElasticSearch. Я спроектировал и внедрил механизм гибкого поиска, позволяющий пользователям быстро находить активы по различным параметрам.
Технологии:
- Java 8
- Spring Boot
- Hibernate
- PostgreSQL
- ElasticSearch
- SOAP
В свободное от основной работы время я исполнял роль наставника на курсе Java в Яндекс.Практикуме. Эта деятельность позволила мне поделиться профессиональными знаниями и существенно развить мои коммуникационные навыки.
Основные достижения и обязанности:
- Формирование курса: Был одним из первых наставников и активно участвовал в разработке и улучшении программы курса, внося предложения по корректировке учебного материала.
- Поддержка студентов: Регулярно отвечал на технические вопросы студентов в Slack, помогая им преодолевать трудности и глубже понимать язык Java.
- Проведение Q&A сессий: Каждые две недели организовывал интерактивные сессии в Zoom, где студенты могли получить ответы на сложные вопросы и решить текущие проблемы.
- Создание обучающих материалов: Подготовил и записал несколько образовательных видео, включая продвинутые техники отладки в IntelliJ IDEA и реализацию связей @OneToMany и @ManyToOne в Java.
Во время стажировки в TINKOFF я участвовал в разработке системы для генерации финансовых отчётов, предназначенных для руководителей отделов. Мои ключевые задачи включали:
- Реализация системы авторизации: Внедрил JWT-авторизацию с использованием Spring Security и интеграцией с LDAP, что повысило безопасность и упростило процесс аутентификации пользователей.
- Динамическая генерация отчётов: Разработал функционал для динамического создания финансовых отчётов с помощью JasperReports, автоматизировав процесс подготовки документов и позволив руководству получать актуальные данные с необходимыми корректировками.
- Настройка доступа к базам данных: Конфигурировал доступ к двум разным базам данных, применяя 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
Персональный Telegram-bot, который позволяет гибко настроить уведомления из GitLab. Разработан с использованием предыдущего проекта — GodFather.
Статьи:
Технологии:
- Java 17
- Spring Boot
- PostgreSQL
- GitLab API
- Maven
Пока это самый популярный проект. Это предыдущий шаблон моего блога для генератора статических сайтов 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)