
Struchkov Mark
Короткая автобиография
Мне 27 лет. С 13-летнего возраста я увлекался созданием сайтов на платформе uCoz и самостоятельно освоил HTML и CSS. Начиная с первого курса университета, я помогал студентам с лабораторными работами по программированию. Уже к концу первого курса организовал географически распределенную команду разработчиков, которые помогали студентам из разных вузов. Однако к третьему курсу я решил закончить этот проект и сосредоточиться на своем профессиональном развитии.
Мой основной язык программирования – Java. Я специализируюсь в области backend-разработки. C декабря 2021 года активно осваиваю и использую в работе Quarkus для написания микросервисов в реактивном стиле. Отдельно мне интересны задачи в сфере DevOps, такие как настройка CI/CD, оптимизация Docker Image, оптимизация работы nginx и создание домашней облачной экосистемы.
Текущее место работы – «Т1 Консалтинг» из группы компаний Т1, где я занимаю позицию «Архитектор». Не смотря на небольшой стаж промышленной сразработки в 5 лет, я техлид команды, состоящей из 6 backend разработчиков. Наша команда разработала и поддерживает около 40 микросервисов, которые отвечают за функционирование call-центра T1 CRM: внутренние чаты, звонки, email, интеграции с Telegram и WhatsApp.
Стоял у истоков запуска курса Java-разработки в Яндекс.Практикум. Был один из первых четырех наставников на курсе. Проработал там весь 2022 год. Этот опыт позволил мне улучшить мягкие soft-skills и умение доносить свою точку зрения до других. В роли наставника я помогал студентам находить ответы на сложные вопросы и регулярно проводил вебинары.
Разработка для меня — не просто профессия, но и хобби. Поэтому в свободное время я работаю над своими проектами, для которых развернул целую инфраструктуру: у меня есть свой Git на базе Gitea, СI/CD на базе Drone CI и личный Nexus.
Также я веду свой блог о разработке на Java, который посещают более 15000 уникальных пользователей в месяц. Кроме основного блога с детальными статьями, есть и второй с короткими заметками.
💼 Опыт работы
Архитектор / Техлид
T1 CRM
- Архитектура: Микросервисы. Реактивный стек
- Сайт: https://crm.t1-consulting.ru
- Реестр отечественного ПО: №2021662387
Модульная CRM-система с приминением подходов low-code и BPM. Моя команда занимается разработкой и поддержкой модуля коммуникаций
Наш модуль включает 40+ и отвечает за:
-
Обработку обращений клиентов и исходящих коммуникаций.
- Обработка входящих сообщений от клиентов через: звонки, email, Telegram, WhatsApp, Viber.
- Обработка исходящих коммуникаций. Позволяют запланировать звонок клиенту, или первыми написать в мессенджере.
- Автоматическое назначение обращений и исходящих коммуникаций на операторов согласно гибким правилам распределения.
- Сохранение результатов общения в единую историю коммуникаций с клиентом.
-
Работу разлисчных способов коммуникации сотрудников внутри CRM.
- Персональные и групповые чаты. Позволяют сотрудникам общаться между собой.
- Внутренние видео/аудио звонки и групповые видео/аудио конференции.
- Доставку уведомлений о событиях CRM
- Рабочее место оператора, встроенный ассистент и доступ к базам знаний
Я занимался проработкой архитектуры модуля коммуникационного центра:
- Декомпозиция. Определение микросервисов и требований к ним.
- Описание взаимодействий между сервисами.
- Выделение общих библиотек: библиотеки кэширования, авторизации и другие
Выполненные мной задачи разработки:
- Разработка внутренних чатов. Позволяет пользователям CRM общаться между собой, а также создавать групповые чаты.
- Разработка внешних чатов. Позволяет пользователям CRM внутри системы общаться с клиентами через внешние каналы связи: Telegram, Email, Whatsapp, Viber
- Разработка единого сервиса для взаимодействия с MinIO S3. Позволяет остальным сервисам сохранять и получать файлы. Отвечает за разграничение доступов и жизненый цикл ссылок.
- Разработка коммуникационного центра - сервисов операторов и обращений от клиентов, которые поступают из внешних каналов.
-
На базе моей OpenSource бибилотеки команда разработала несколько Telegram ботов.
- Telegram бот для приема обращений от клиентов заказчика. Позволяет создать новое обращение и вести переписку с оператором.
- Telegram бот для пользователей CRM. Позволяет получать уведомления от системы, а также искать и просматривать основную информацию.
- Telegram бот для участников конференций. Позволяет участникам конференции подписаться на мероприятие, просматривать рассписание и получать автоматические уведомления о событиях мероприятия. Также позволяет задать вопрос спикеру.
Интересные задачи, которые понравилось решать:
- Проработка архитектуры и разработка чатов CRM.
- Проработка и разработка решения по распределению обращений.
- Проведение нагрузочного и стресс тестирования коммуникационного центра.
- Разработка сервиса с приминением сборки в исполняемый файл.
Прочие задачи:
- Участие в проведении собеседований Java разработчиков
Технологии:
- Java 17
- Quarkus Reactive
- Quarkus Native
- GraphQL
- Kafka
- Redis
- Protobuffers
- WebSockets
- Docker
- PostgreSQL
- Hibernate
- JOOQ
- Gradle
- Liquibase
Senior Java Developer
Bug Tracking System
Архитектура проекта: Микросервисная
Система для контроля багов в других продуктах группы компаний Т1.
На этом проекте помогал начать разработку. Основной моей задачей было разработать сервис заявок, который позволит: заводить задачи, назначать ответственных и так далее.
Технологии:
- Java 11
- Quarkus Reactive
- Kafka
- Hibernate
- Maven
Middle Java Developer
CRM-система для Большого еатра России
Архитектура: многомодульный монолит с отдельными сервисами авторизации и синхронизации
Система позволяет сегментировать клиентов на основе различных гибких фильтров. По сегментированным клиентам можно запускать email рассылки. Дополнительно CRM позволяет реализовать программу лояльности c начислением кешбэка и присвоением различных достижения.
На этот проект я попал уже в должности Middle. Проект мы довели до логического завершения. Стабильно работает без вмешательства команды разработки, на данном этапе находится на поддержке другой команды разработки. На этом проекте я впервые примерил на себе должность тимлида.
Интересные задачи, которые решал:
- Активно участвовал в проработке архитектуры системы.
- Единолично разрабатывал OAuth 2.0 SSO сервис на основе Spring. В качестве хранилища пользователей интегрировался с внешним LDAP.
- Внедрял собственную OpenSource библиотеку, реализующую контроль доступа по типу ABAC.
- Разрабатывал сервис уведомлений пользователей на разные события в системе. Внешние уведомления по email и/или Telegram.
- Создавал системы фильтрации при помощи ElasticSearch, Criteria API, JOOQ.
- Для SSO между CRM и существующей системой на Lifray дорабатывал OpenSource плагин для Liferay.
- Разрабатывал механизм хранения файлов на основе MinIO S3.
-
DevOps:
- Переносил многокомпонентный проект в Docker Compose.
- Настраивал Bitbucket Server, TeamCity и их интеграцию с нуля.
- Настраивал Nexus Sonatype для корпоративных нужд.
- Настраивал непрерывную интеграцию для всех контуров при помощи Gitlab CI.
Технологии
- Java 8
- Java 17
- AWS S3
- Spring Boot
- Maven
- Hibarnate
- Docker
- Nginx
Junior Java Developer
Витрина KomissiON
- Архитектура проекта: монолитная
- Сайт проекта: https://komission.vtb.ru
Это маркетплейс залогового имущества ВТБ. Кто-то берет кредит, а в залог оставляет лодку, или дом, или завод. Потом кредит не выплачивает. Залоговое имущество отходит к ВТБ. Для банка это непрофильный актив. Его нужно реализовать и получить деньги. KomissiON это витрина таких активов.
Интересные задачи, которые довелось решать:
- Моей основной задачей была разработка системы фильтрации с использованием ElasticSearch.
Технологии:
- Java 8
- Spring Boot
- Hibernate
- PostgreSQL
- ElasticSearch
- SOAP
Наставник на курсе Java
В свободное от основной работы время помогал студентам Яндекс.Практикума вкатываться в IT на курсе Java. Не столько ради денег, сколько ради прокачки софт-скилов.
Стоял у истоков появления курса Java, то есть был одним из первых наставников. Активно влиял на изменение курса и поиск неточностей.
Обязаности:
- Отвечать на технические вопросы студентов в Slack.
- Проводить каждые 2 недели Q&A сессии. На них мы со студентами в Zoom разбираемся со сложностями, с которыми они столкнулись.
-
Записывал несколько полноценных лекций:
- Продвинута отлабка в Intellij Idea
- Реализация связей @OneToMany и @ManyToOne
Java Developer (Стажер)
Стажировка проходила на боевой задаче: необходимо было с нуля реализовать генерацию финансовых отчетов с корректировками для руководителей отделов "Тинькофф Центр Разработок".
О своем участии:
- Настроил 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
🔔 GitLab Notify Helper | GitHub
Персональный Telegram-bot, который позволяет гибко настроить уведомления из GitLab. Разработан с использованием предыдущего проекта — GodFather.
Статьи:
Технологии:
- Java 17
- Spring Boot
- PostgreSQL
- GitLab API
- Maven
🖊 uBlogger | GitHub
Пока это самый популярный проект. Это предыдущий шаблон моего блога для генератора статических сайтов 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
Прочее
- WebRTC
- Git
- Protobuffers
- MyBatis
- SOAP
- JSON
- JasperReports
Образование
-
Информатика и вычислительная техникаРязанский Государственный Радиотехнический Университет2014 - 2019
Языки
- Русский (Носитель)
- English (A2)