
Struchkov Mark
Короткая автобиография
Мне 26 лет. С 13 лет увлекался созданием сайтов на uCoz, методом тыка изучил HTML и CSS. На первом курсе стал помогать студентам с лабораторными по программированию. Уже к концу первого курса организовал распределенную команду разработчиков, и мы помогали студентам из разных вузов.
Мой основной язык программирования – Java. Развиваюсь в основном в направлении backend разработки и DevOps: могу написать свой SSO сервер с использованием Oauth2, библиотеку для реализации ABAC, сервис для хранения файлов с использованием MinIO S3 и много чего еще. C декабря 2021 года активно осваиваю и использую в работе Quarkus для написания микросервисов в реактивном стиле.
Фронтом не занимаюсь и не планирую, но могу немного в HTML и CSS для души. Также мне нравятся задачи связанные с DevOps. Могу: настроить полный CI/CD, оптимально упаковать приложение в Docker Image, и написать DockerCompose, оптимизировать работу nginx, или настроить собственную домашню экосистему облачных сервисов.
Сейчас работаю в «Т1 Консалтинг» из группы компаний Т1 на позиции «Архитектор». Не смотря на небольшой стаж промышленной сразработки в 4 года, я техлид команды из 7 бэкендеров (3 сеньора, 1 мидл, 3 джуна). Наша команда разработала и поддерживает около 20 микросервисов, которые отвечают за различные коммуникации CRM: чаты, звонки, email, работа call-центра.
Помимо основной работы год был наставником в Яндекс.Практикум на курсе Java. Не денег ради, а для прокачки софт-скилов и навыков объяснения своего видения разработки другим. В качестве наставника помогал "студентам" находить ответы, если гугл подвел. Раз в две недели проводил вебинары, где мы разбирались в различных темах в Java.
Я из тех, для кого разрботка это не только работа. но и любимое хобби. Поэтому в свободное время занимаюсь своими пет-проектами, для которых развернул целую инфраструктуру: у меня есть свой Git на базе Gitea, СI/CD на базе Drone CI и Nexus.
По настроению пишу статьи в свой блог о разработке на Java. Который посещают более 15000 уникальных пользователей в месяц. Это основной блог с большими статьями, а есть еще второй блог с небольшими заметками..
💼 Опыт работы
Архитектор / Техлид
T1 CRM
- Архитектура: Микросервисы на реактивном стеке
- Реестр отечественного ПО: №2021662387
- Сайт: https://crm.t1-consulting.ru
Это CRM-система в классическом её виде: лиды, воронки, сделки. Моя команда занимается модулем коммуникаций, который включает в себя как call-центр для обработки обращений от клиентов из разных каналов связи, так и внутренние аудио/видео звонки, групповые видео-звонки, внутренние чаты. Мы разработали и поддерживаем 20+ микросервисов.
Также на основе моей OpenSource бибилотеки моя команда разрабатывала несколько Telegram ботов.
Интересные задачи, которые решал:
- Разработка внутренних чатов. Позволяет пользователям CRM общаться между собой, а также создавать групповые чаты.
- Разработка внешних чатов. Позволяет пользователям CRM внутри системы общаться с клиентами по Telegram, Email, Whatsapp, Viber
- Разработка единого сервиса для взаимодействия с MinIO S3. Позволяет другим сервисам сохранять файлы. Отвечает за разграничение доступов и жизненый цикл ссылок.
- Разработка коммуникационного центра - сервисов операторов и обращений от клиентов, которые поступают из внешних каналов.
-
Разработка нескольких Telegram ботов:
- Telegram бот для пользователей CRM. Позволяет получать уведомления от системы, а также искать и просматривать основную информацию.
- Telegram бот для участников конференций. Позволяет участникам конференции подписаться на мероприятие, просматривать рассписание и получать автоматические уведомления о событиях мероприятия. Также позволяет задать вопрос спикеру.
-
Проработка архитектуры модуля коммуникаций:
- Определение сервисов и протоколов взаимодействия
- Определение библиотек для шаринга между сервисами
- Проработка схем GraphQL для взаимодествия
Технологии:
- Java 17
- Quarkus Reactive
- Quarkus Native
- GraphQL
- Kafka
- Redis
- Protobuffers
- WebSockets
- Docker
- PostgreSQL
- Hibernate
- JOOQ
- Gradle
- Liquibase
Senior Java Developer
Bug Tracking System
Архитектура проекта: Микросервисная
Система для контроля багов в других продуктах компании.
На этом проекте помогал начать разработку. Моей задачей было разработать сервис тикетов, который позволит: заводить задачи, назначать ответственных и так далее.
Технологии:
- Java 11
- Quarkus Reactive
- Kafka
- Hibernate
- Maven
Middle Java Developer
Маркетинговая CRM-система
Архитектура: многомодульный монолит с отдельным сервисом авторизации
Система позволяет сегментировать клиентов на основе различных сложных фильтров. После чего проводить email рассылки через внешнего провайдера ExpertSender. Дополнительно 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
💩 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
Backend
-
REST
-
GraphQL
-
WebSockets
-
Kafka
-
Maven
-
Gradle
DevOps
-
Docker
-
Nginx
-
Gitlab CI
-
Drone CI
-
Linux
Database
-
Hibernate
-
PostgreSQL
-
Liquibase
-
AWS S3
-
Elasticsearch
-
MongoDB
-
JOOQ
Прочее
- WebRTC
- Git
- Redis
- Protobuffers
- MyBatis
- SOAP
- JSON
Образование
-
Информатика и вычислительная техникаРязанский Государственный Радиотехнический Университет2014 - 2019
Языки
- Русский (Носитель)
- English (A2)
Интересы
- Большой теннис
- Сериалы