Struchkov Mark
Коротко обо мне
Мне 27 лет. С 13-летнего возраста я увлекался созданием сайтов на платформе uCoz и самостоятельно освоил HTML и CSS. Начиная с первого курса университета, я помогал студентам с лабораторными работами по программированию. Уже к концу первого курса организовал географически распределенную команду разработчиков, которые помогали студентам из разных вузов. Однако к третьему курсу я решил закончить этот проект и сосредоточиться на своем профессиональном развитии.
Мой основной язык программирования – Java. Я специализируюсь в области backend-разработки. C декабря 2021 года активно осваиваю и использую в работе Quarkus для написания микросервисов в реактивном стиле. Отдельно мне интересны задачи в сфере DevOps, такие как настройка CI/CD, оптимизация Docker Image, оптимизация работы nginx и создание домашней облачной экосистемы.
Текущее место работы – НОТА (Холдинг Т1), где я занимаю позицию «Архитектор» и «Техлид». Не смотря на небольшой стаж промышленной сразработки в 5 лет, я техлид команды, состоящей из 6 backend разработчиков. Моя команда разработала и поддерживает около 40 микросервисов, которые отвечают за функционирование модуля call-центра CRM системы НОТА Модус: внутренние чаты, внешние чаты (интеграции с Telegram, WhatsApp, Email), телефония.
Веду блог о разработке на Java, который посещают более 25 000 уникальных пользователей в месяц. Кроме основного блога с подробными статьями, есть второй с короткими заметками. В 2022 году выступил на конференции Podlodka Java Crew с небольшим докладом: Оптимальная упаковка Java приложения в Docker Image.
Стоял у истоков запуска курса Java-разработки в Яндекс.Практикум. Был один из первых четырех наставников на курсе. Проработал там весь 2022 год. Этот опыт позволил мне улучшить soft-skills. В роли наставника я помогал студентам находить ответы на сложные вопросы и регулярно проводил вебинары.
Разработка для меня — не просто профессия, но и хобби. Поэтому в свободное время я занимаюсь своими проектами, для которых развернул целую инфраструктуру: у меня есть свой Git на базе Gitea, СI/CD на базе Drone CI и личный Nexus.
💼 Опыт работы
НОТА МОДУС
- Архитектура: Микросервисы. Реактивный стек
- Сайт: https://modus.nota.tech
- Реестр отечественного ПО: №2021662387
Модульная CRM-система с приминением подходов low-code и BPM. Моя команда занимается разработкой и поддержкой модуля "Коммуникационный центр".
Наш модуль включает 40+ микросервисов и отвечает за:
-
Обработку обращений клиентов и исходящих коммуникаций:
- Обработка входящих сообщений от клиентов через: звонки, email, Telegram, WhatsApp, Viber.
- Обработка исходящих коммуникаций. Позволяют запланировать звонок клиенту, или первыми написать в мессенджере.
- Автоматическое назначение обращений и исходящих коммуникаций на операторов согласно гибким правилам распределения.
- Сохранение результатов общения с клиентом в единую историю коммуникаций.
-
Работу различных способов коммуникации сотрудников внутри CRM.
- Персональные и групповые чаты.
- Внутренние видео/аудио звонки и групповые видео/аудио конференции.
- Доставку уведомлений о событиях CRM.
- Рабочее место оператора, встроенный ассистент и доступ к базам знаний.
Интересные задачи, которые довелось решать:
-
Проработка архитектуры некоторых модулей CRM
- Архитектура всего модуля "Коммуникационный Центр" (40+ сервисов).
- Архитектура и разработка чатов CRM.
- Архитектура общей системы уведомлений CRM.
- Разработка механизма распределения обращений между операторами.
- Интеграция чатов с внешними провайдерами. Позволяет пользователям CRM внутри системы общаться с клиентами через внешние каналы связи: Telegram, Email, Whatsapp, Viber
- Разработка единого сервиса для взаимодействия с MinIO S3. Позволяет остальным сервисам сохранять и получать файлы. Отвечает за разграничение доступов и жизненый цикл ссылок.
- Разработка сервисов с использованием сборки в исполняемый файл.
- Разработка общих библиотек: библиотеки кэширования, авторизации и другие
- Проведение нагрузочного тестирования модуля, с использованием Jmeter.
- Проведение стресс тестирования модуля.
Прочие задачи:
- Проведении собеседований Java разработчиков в свою команду.
Особые успехи:
-
На базе моей OpenSource бибилотеки были разработаны все Telegram боты CRM:
- Бот для приема обращений от клиентов. Позволяет создать новое обращение и вести переписку с оператором.
- Бот для пользователей CRM. Позволяет получать уведомления от системы, а также искать и просматривать основную информацию.
- Бот для участников конференций. Позволяет участникам конференции подписаться на мероприятие, просматривать рассписание и получать автоматические уведомления о событиях мероприятия. Также позволяет задать вопрос спикеру.
- Моя команда занималась внедрением разработаного решения в Тенге Банк. Внедрение прошло успешно с соблюдением всех сроков.
Технологии:
- Java 17
- Quarkus Reactive
- Quarkus Native
- GraphQL
- Kafka
- Redis
- Protobuffers
- WebSockets
- Docker
- PostgreSQL
- Hibernate
- JOOQ
- Gradle
- Liquibase
- Jmeter
- Camunda
- Apache Camel
Bug Tracking System
Архитектура проекта: Микросервисная
Система для контроля багов в других продуктах группы компаний Т1.
На этом проекте помогал начать разработку. Основной моей задачей было разработать сервис заявок, который позволит: заводить задачи, назначать ответственных и так далее.
Технологии:
- Java 11
- Quarkus Reactive
- Kafka
- Hibernate
- Maven
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
Витрина KomissiON
- Архитектура проекта: монолитная
- Сайт проекта: https://komission.vtb.ru
Это маркетплейс залогового имущества ВТБ. Кто-то берет кредит, а в залог оставляет лодку, или дом, или завод. Потом кредит не выплачивает. Залоговое имущество отходит к ВТБ. Для банка это непрофильный актив. Его нужно реализовать и получить деньги. KomissiON это витрина таких активов.
Интересные задачи, которые довелось решать:
- Моей основной задачей была разработка системы фильтрации с использованием ElasticSearch.
Технологии:
- Java 8
- Spring Boot
- Hibernate
- PostgreSQL
- ElasticSearch
- SOAP
В свободное от основной работы время помогал студентам Яндекс.Практикума вкатываться в IT на курсе Java. Не столько ради денег, сколько ради прокачки софт-скилов.
Стоял у истоков появления курса Java, то есть был одним из первых наставников. Активно влиял на изменение курса и поиск неточностей.
Обязаности:
- Отвечать на технические вопросы студентов в Slack.
- Проводить каждые 2 недели Q&A сессии. На них мы со студентами в Zoom разбираемся со сложностями, с которыми они столкнулись.
-
Записал несколько лекций:
- Продвинута отлабка в Intellij Idea
- Реализация связей @OneToMany и @ManyToOne
Стажировка проходила на боевой задаче: необходимо было с нуля реализовать генерацию финансовых отчетов с корректировками для руководителей отделов "Тинькофф Центр Разработок".
О своем участии:
- Настроил 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
- Protobuffers
- MyBatis
- SOAP
- JSON
- JasperReports
Образование
-
Информатика и вычислительная техникаРязанский Государственный Радиотехнический Университет2014 - 2019
Языки
- Русский (Носитель)
- English (A2)