Struchkov Mark
Коротко обо мне
Моё знакомство с миром технологий началось в раннем возрасте. С 13 лет я увлекся разработкой сайтов на платформе uCoz, что привело к самостоятельному изучению HTML и CSS. Это хобби со временем переросло в страсть к технологиям и программированию. В университете я продолжил своё развитие в этом направлении, начав помогать однокурсникам с лабораторными работами по программированию. Уже к концу первого курса я нашел единомышленников и запустил сайт для помощи студентам из различных вузов, который включал интернет магазин с возможностью онлайн оплаты. Но к концу третьего курса я решил завершить этот проект, чтобы сосредоточиться на своём профессиональном и карьерном росте.
Моя основная специализация — это backend-разработка на Java и архитектура информационных систем. Освоение Quarkus с декабря 2021 года позволило мне разрабатывать микросервисы в реактивном стиле, значительно повышая производительность и эффективность систем. Кроме того, я проявляю интерес к области DevOps, осуществляя настройку CI/CD процессов, оптимизацию Docker-образов и настройку работы nginx, что дополняет мои навыки разработчика.
Свой карьерный путь я начал в Тинькофф в 2019 году. На текущем месте работы в компании НОТА (Холдинг Т1), я занимаю должности архитектора и TechLead/TeamLead, и руковожу командой из 6-и backend-разработчиков. Мы разработали и поддерживаем около 45 микросервисов, которые позволяют работать с коммуникациями в CRM системе "Нота Модус". Наш модуль позволяет организовать полноценный Контакт Центр: принимать входящие и осуществлять исходящие звонки, общаться с клиентами через месенджеры (Telegram, VK), распределять обращения согласно гибким правилам распределения, собирать и отображать оператору информацию о клиентах из различных систем, и многое другое.
Мой интерес к обмену знаниями и участию в профессиональном сообществе находит отражение в ведении блога о разработке на Java, который ежемесячно привлекает более 25 000 уникальных посетителей. Я также активно участвую в конференциях, включая выступление на Podlodka Java Crew в 2022 году. Моё участие в запуске курса Java-разработки в Яндекс.Практикуме и роль одного из первых наставников значительно улучшили мои коммуникативные навыки и позволили глубже понять процесс обучения и развития в IT.
Разработка для меня — это больше, чем работа, это часть моей жизни. Я не только применяю свои навыки в профессиональной деятельности, но и активно занимаюсь личными проектами. Для их реализации я создал собственную инфраструктуру, включающую Git на базе Gitea, CI/CD на базе Drone CI и Nexus. А у себя дома организовал экосистему облачных сервисов на базе Raspberry PI 4.
💼 Опыт работы
НОТА МОДУС
- Архитектура: Микросервисы. Реактивный стек
- Сайт: https://modus.nota.tech
- Реестр отечественного ПО: №2021662387
Модульная CRM-система с приминением подходов low-code и BPM. Моя команда занимается разработкой и поддержкой модуля "Коммуникационный центр".
Наш модуль включает 45+ микросервисов и отвечает за:
-
Обработку входящих обращений от клиентов и исходящих коммуникаций:
-
Омниканальную обработку входящих обращений от клиентов через различные каналы коммуникаций:
-
Телефония.
- Возможность операторов принимать звонки прямо в браузере через встроенный в CRM сервер телефонии или подключение к существующей системе.
- Супервайзеры могут в режиме реального времени подсказывать операторам, повышая качество обслуживания.
- Возможности транскрипции аудиозаписей.
- Email. Интеграция email с CRM позволяет операторам вести корреспонденцию, отправлять и получать файлы, при этом переписка автоматически сортируется в цепочки.
-
Мессенджеры (Telegram, VK, WhatsApp)
- Боты для предварительной обработки запросов.
- Функционал редактирования и удаления сообщений.
- Функционал прослушивания и транскрибации голосовых сообщений.
- Возможность обмена файлами с клиентами.
- Использование шаблонов с автоматическим заполнением данными из CRM для быстрых ответов.
-
Телефония.
-
Управление коммуникациями:
- Автоматическое распределение обращений среди операторов по заданным правилам.
- Планирование исходящих коммуникаций.
- Обратная связь от клиентов и супервайзеров для оценки работы операторов.
- Сохранение результатов взаимодействия с клиентом в единую историю коммуникаций. Включая аудио-записи звонков.
- Оператор может вернуть обращение в очередь или перевести его на другого оператора.
-
Аналитика и отчеты:
- Мониторинг и анализ ключевых показателей эффективности контакт-центра: FCR, ACW, ATA, AWT, CAR, CSAT, IVR exit rate, LCR, NPS, SL
- Сводные отчеты по результатам работы всех операторов.
-
Омниканальную обработку входящих обращений от клиентов через различные каналы коммуникаций:
-
Работу различных способов коммуникации сотрудников внутри CRM.
- Персональные и групповые чаты, внутренние видео/аудио звонки и конференции.
- Доставку уведомлений о событиях CRM.
-
Единое рабочее место оператора
- Контроль рабочего времени и смен.
- Настройка профессиональных навыков операторов.
- Интеграция данных о клиентах из различных систем для создания полной клиентской истории.
- Ассистент, которые выводит подсказки оператору из базы знаний.
- Визуальный конструктор для настройки интерфейса рабочего места оператора.
Интересные задачи, которые довелось решать:
-
Проектирование архитектуры системы
- Проектирование архитектуры ключевых модулей CRM, включая полноценную архитектуру "Коммуникационного Центра" с более чем 45 сервисами.
- Разработка архитектуры для внутренних чатов CRM и системы уведомлений.
- Создание архитектуры модуля работы с файлами в CRM.
- Разработка механизма распределения клиентских обращений между операторами с использованием настраиваемых правил.
- Создание сервисов чатов и их интеграция с внешними провайдерами, такими как Telegram, Email и WhatsApp.
- Разработка единого сервиса взаимодействия с файловым хранилищем MinIO S3, включая разграничение доступа к файлам.
- Разработка сервисов с использованием сборки в исполняемый файл.
- Разработка общих библиотек: библиотеки кэширования, авторизации и другие
Прочие задачи:
- Декомпозиция задач и распределение их на команду разработки, контроль за прогрессом и исполнением.
- Проведение собеседований с Java-разработчиками всех уровней – от Junior до Senior.
- Организация и проведение нагрузочного и стресс-тестирования с использованием Jmeter.
- Проведение code review ключевых разработок в модуле.
Особые успехи:
- Руководство проектом по внедрению разработанного решения в Тенге Банк, завершенного с соблюдением всех сроков..
-
На базе моей OpenSource бибилотеки были разработаны все боты CRM:
- Бот для приема и обработки обращений от клиентов через мессенджеры.
- Бот для пользователей CRM, обеспечивающий получение уведомлений и доступ к основной информации системы.
- Бот для участников конференций, позволяющий подписываться на события, просматривать расписание и получать уведомления о предстоящих мероприятиях, а также взаимодействовать со спикерами.
Технологии:
- 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.
В рамках этого проекта я принимал активное участие в запуске разработки. Моей ключевой задачей было создание сервиса заявок. Разработанный мной сервис позволяет не только регистрировать новые задачи, но и назначать ответственных исполнителей, обеспечивая организованное и систематизированное взаимодействие между участниками процесса. Это включает в себя управление приоритетами, отслеживание статусов выполнения и координацию рабочих процессов на всех этапах решения задач.
Технологии:
- Java 11
- Quarkus Reactive
- Kafka
- Hibernate
- Maven
CRM-система для Большого театра России
Архитектура: многомодульный монолит с отдельными сервисами авторизации и синхронизации
В рамках проекта, который мы успешно довели до логического завершения, я принимал активное участие в качестве Middle Developer и впервые испытал на себе роль тимлида.
Система, которую мы разработали, позволяет эффективно сегментировать клиентов с использованием гибких фильтров и запускать целевые email-рассылки. Также система поддерживает программу лояльности с начислением кешбэка и присвоением статусов.
Проект на текущем этапе функционирует стабильно и поддерживается другой командой разработчиков.
Интересные задачи, которые решал:
- Активное участие в разработке архитектуры системы.
- Разработка и внедрение OAuth 2.0 SSO сервиса на основе Spring с интеграцией внешнего LDAP для хранения пользовательских данных.
- Реализация системы контроля доступа по модели ABAC.
- Создание сервиса уведомлений с возможностью отправки через email и Telegram.
- Создавал системы фильтрации на базе ElasticSearch, Criteria API, JOOQ.
- Доработка и интеграция OpenSource плагина для существующей системы на Liferay для SSO между CRM и системой.
- Разрабатывал механизм хранения файлов на основе MinIO S3.
Задачи DevOps:
- Переносил многокомпонентный проект в Docker Compose.
- Настраивал Bitbucket Server, TeamCity и их интеграцию с нуля.
- Конфигурация Nexus Sonatype для корпоративных нужд.
- Настройка CI/CD процессов с использованием Gitlab CI для всех контуров разработки.
Технологии
- Java 8
- Java 17
- AWS S3
- Spring Boot
- Maven
- Hibarnate
- Docker
- Nginx
Проект маркетплейса залогового имущества "KomissiON" для ВТБ
- Архитектура проекта: монолитная
- Сайт проекта: https://komission.vtb.ru
KomissiON — это маркетплейс, созданный для реализации непрофильных активов банка ВТБ, таких как лодки, дома или промышленные объекты, которые перешли к банку в результате невыплаты кредитов. Эта платформа служит витриной, где банк может эффективно продавать такие активы, максимизируя возврат инвестиций.
Интересные задачи, которые довелось решать:
- Моей основной задачей в проекте была разработка системы фильтрации на базе ElasticSearch, которая позволяет пользователям легко искать активы по различным параметрам.
Технологии:
- Java 8
- Spring Boot
- Hibernate
- PostgreSQL
- ElasticSearch
- SOAP
В свободное время от основной работы я принимал активное участие в качестве наставника на курсе Java в Яндекс.Практикуме. Эта роль позволила мне не только поделиться профессиональными знаниями, но и значительно улучшить мои софт-скиллы.
Основные достижения и обязанности:
- Становление курса: Я был одним из первых наставников и активно участвовал в формировании программы курса, внося предложения по улучшению и корректировке учебного материала.
- Поддержка и обучение студентов: Регулярно отвечал на технические вопросы студентов в Slack, помогая им преодолевать трудности и углублять понимание Java.
- Организация и проведение Q&A сессий: Каждые две недели проводил интерактивные сессии через Zoom, где студенты могли получить ответы на сложные вопросы и разобраться в текущих проблемах.
- Разработка и запись лекций: Подготовил и записал несколько образовательных видео, включая продвинутые техники отладки в IntelliJ IDEA и реализацию связей @OneToMany и @ManyToOne в Java.
В рамках стажировки я работал над проектом по созданию системы для генерации финансовых отчетов, предназначенной для руководителей отделов.
О своем участии:
- Реализовал систему 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)