Дисклеймер
Если вам больше по душе более “стандартное” оформление резюме, то альтернативные его варианты можно найти в следующих местах:
Контактные данные
- ФИО: Яблоков Максим Вадимович
- дата рождения: 28.12.1992
- возраст: years, months
- номер телефона: +7 (953) 513-24-86
- e-mail: StateItPrimitive@gmail.com
- социальные сети:
- telegram: StateItPrimitive
- vk: user_stateitprimitive
Опыт работы
Стаж профессиональной деятельности: years, months.
Эксперт по разработке (Цифровые каналы / Альфа-Банк)
Эксперт по разработке в “Дирекции разработки онлайн каналов юридических лиц” в рамках АО “Альфа-Банка”.
Период работы: 02.2022 - текущее время
Подробнее
Занимаюсь проектированием и разработкой части платформенных сервисов в рамках нашей дирекции:
- сервис асинхронного обмена файловым трафиком клиентов с банком (secure-file-transfer):
- создание с нуля сервиса сочетающего REST API в виде task с S3 API (в виде signed s3 upload/download url) для работы с файлами в S3-like хранилище;
- бесшовный скрытый анализ входящего в банковский DMZ S3-like хранилище файлового трафика на наличие вирусов и иных 0-day угроз (посредством интеграции с файловой песочницей);
- бесшовный скрытый анализ исходящего из банка в DMZ S3-like хранилище файлового трафика на наличие утечек данных ( DLP анализ);
- поддержка подписания исходящих из банка файлов / проверка подписи входящих в банк файлов (подкрепленной или открепленной ЭЦП);
- поддержка шифрования исходящих из банка файлов / дешифрование входящих в банк файлов (алгоритмами симметричного шифрования);
- сервис гарантированной асинхронной доставки REST запросов:
- создание с нуля сервиса, который “гарантировано” доставляет REST запросы до получателя;
- “гарантированность” заключается в том, что вы делегируете ему запрос (в ответ получаете 202 Accepted), а он в n попыток пытается его доставить до получателя;
- между попытками используется конфигурируемый интервал времени (например: 30s, 5m, 30m, 1h, 24h, 72h);
- отложенность доставки сообщений реализована за счет scheduler’а, реализованного поверх kafka topic’ов (с использованием доработанного механизма retry topic’ов у spring kafka);
- “успешность” доставки сообщений определяется конфигурируемыми параметрами (отсутствием ошибок установления соединения, white/black list’ом http status’ов ответов и прочими параметрами);
- портал разработчика (https://developers.alfabank.ru/):
- создание с нуля backend’а для портала разработчика;
- с использованием S3-like хранилища для хранения файлов: картинок и видео;
- с использованием git repositories + markdoc для хранения исходников текста (рендерингом markdoc в html занимался соседний около-frontend сервис на node.js);
- позднее наша команда поделилась на две и этот продукт был отдан второй части нашей команды;
- api-gateway:
- развитие (совместно с парой других разработчиков) решения, построенного поверх spring cloud gateway, отвечающего за обработку всего входящего в банк и исходящего из него REST трафика (т.е. точка взаимодействия с внешним миром, которая для внутренних взаимодействий не используется);
- проектирование и разработка нового механизма rate-limit’ов;
- асинхронная синхронизация маршрутов между инстансами сервиса;
- реализация различных механизмов: защита от дублирующихся маршрутов (с точки зрения предикатов), защита от невалидных маршрутов (не позволяет такие сохранить в БД, тем самым сломав работу всех инстансов шлюза), детектирование матчинга одного запроса нескольким маршрутам (по их предикатам) и так далее.
- внедрение open-banking (https://openbankingrussia.ru/) в банк:
- участие в интеграции с другими финтех-компаниями посредством open-banking API (предоставление API с нашей стороны и интеграция с API других компаний);
- позднее наша команда поделилась на две и этот продукт был отдан второй части нашей команды;
- ряд бизнес сервисов:
- по большей части, это middle api по типу агрегации и remapping’а контрактов master back систем (т.е. тут все как у всех, ничего особенного).
Архитектор файловых сервисов (Platform V / СберТех)
Solution архитектор направления File Exchange в рамках Platform V (единой технологической платформы пятого поколения в рамках АО “СберТех”).
Занял позицию в рамках перехода команды в отдел новой технологической платформы банка Platform V, созданной на базе слияния крупнейших доминирующих систем банка: ЕФС и ППРБ.
Период работы: 02.2021 - 02.2022
Подробнее
Занимался проектированием и разработкой платформенных файловых сервисов, в частности:
- шлюз для работы с S3 хранилищами:
- “прозрачный” относительно протокола s3 шлюз для работы с S3-compatbile хранилищами;
- инкапсулирующий работу с replica-set’ом из множества s3 кластеров;
- соблюдающий конфиденциальность данных посредством предоставления поддержки server-side шифрования (при размещении объекта) и дешифрования (при получении объекта);
- соблюдающий целостность данных посредством предоставления поддержки server-side наложения ЭЦП (при размещении объекта) и проверки ЭЦП (при получении объекта);
- сервиса обмена файловым трафиком (синхронно / асинхронно);
- сервиса проверки файлового трафика:
- посредством сигнатурного (т.е. проверки его сигнатуры согласно известным антивирусным базам);
- посредством поведенческого анализа (т.е. открытия файла в соответствующем приложении, связанным с его MIME-типом, в рамках виртуальной системы с последующим анализом поведения системы - базируется на нахождении отклонения поведения ОС от ожидаемого);
- сервис интеграции со средствами антивирусной проверки (malware analysis):
- синхронный сервис - сигнатурная проверка (за счет сравнения сигнатуры файла с известной базой тел вирусов);
- асинхронный сервис - поведенческий анализ (за счет файловой песочницы, которая в виртуальной среде стартует образ ОС, определяет MIME-тип файла, после чего открывает его в ассоциированной с данным типом программе, а затем следит за отклонением от модельного поведения системы);
- сервис интеграции со средствами предотвращения утечки данных (DLP - Data Leak Protection):
- анализ выдаваемого трафика на отсутствие несанкционированных утечек данных (категории конфиденциальности К-2 и выше).
- веб крипто сервиса (для удобства выполнения потокового шифрования/дешифрования, наложения/проверки ЭЦП, расчета digest (значения hash) или MAC);
При построении утилитных сервисов делается упор на слабую связность. Например, посредством построения асинхронной схемы межсервисного взаимодействия в стиле choreography.
В качестве основного стека технологий хотелось бы отметить следующее (относительно предыдущих проектов):
- Object Storage (DSS / СХД): Ceph / MinIO (по интерфейсу S3 API);
- Application Server: Netty;
- Framework: Spring WebFlux;
- Service Interaction Style: Choreography;
- Message Broker: Confluent Kafka.
Архитектор файловых сервисов (ЕФС / СберТех)
Архитектор файловых сервисов в рамках АС ЕФС.
Период работы: 07.2019 - 02.2021
Подробнее
Выполнял роль архитектора технологического сервиса передачи файлов, а также отвечал за направления развития, связанные с передачей файлов в рамках единой платформы Platform V, которая является объединением технологических ядер платформ ЕФС, ППРБ и Synapse.
Основным родом деятельности (помимо описанной в предыдущей должности в рамках роли разработчика) являлось:
- проработка и описание/документация архитектуры в разрезе функциональности передачи файлового трафика:
- целевой вариант в рамках единой платформы Platfrom V, которое должно иметь две вариации:
- ориентируясь на использование в разрезе банковской инфраструктуры с учетом интегрируемости между собой АС ( автоматизированных систем);
- ориентируясь на использование в разрезе SberCloud;
- ряд решений в рамках переходного периода на время объединения трех платформ (ЕФС, ППРБ и Synapse) в единую Platfrom V.
- целевой вариант в рамках единой платформы Platfrom V, которое должно иметь две вариации:
В рамках стека технологий для целевого решения осуществляется переход на следующий:
- DSS (СХД):
Ceph
(по интерфейсуS3
):- с “прозрачным” шифрованием/дешифрованием содержимого файлов категории конфиденциальности К-1 и К-2;
- с “прозрачным” наложением/проверкой ЭЦП на содержимое файлов категории целостности И-1 и И-1;
- KMS:
Vault
- используется в качестве хранилища “master key” в рамках шифрования по принципу “2 tier key architecture” (Amazon S3 SSE like);
- format:
REST
(over JSON) /gRPC
(over protobuf); - routing:
Istio
(envoy redirect + файловый sidecar); - Anti Virus Protection:
- синхронный сервис - сигнатурная проверка (за счет сравнения сигнатуры файла с известной базой тел вирусов);
- асинхронный сервис - поведенческий анализ (за счет файловой песочницы, которая в виртуальной среде стартует образ ОС, определяет MIME-тип файла, после чего открывает его в ассоциированной с данным типом программе, а затем следит за отклонением от модельного поведения системы);
- Data Leak Protection (DLP): анализ выдаваемого трафика на отсутствие несанкционированных утечек данных (категории К2 и выше).
Список основных фреймворков/продуктов, с которыми имею промышленный опыт работы в рамках вышеописанной роли:
- Platform:
Java 11
(OpenJDK); - IoC container:
Spring
5.1.11; - DB: H2 (в develop),
Oracle 18c
(в release) + Kafka Tables; - DB migration tool:
Liquibase
; - DB replication tool:
OGG
;- самописный вариант поверх Kafka Topics (свои костыли всегда ближе к телу);
- Scheduler:
Quartz
2.3.2; - Build tools:
Maven
3.6.3; - VCS:
Git
; - Logger:
Logback
1.2.3 + SLFJ; - Application Server:
SpringBoot
2.1.10; - WS/RS:
jax-rs
+jackson
(в качестве инструмента сериализации/десериализации); - Message Broker:
Confluent Kafka
;- JMS:
ActiveMQ
(в develop) иIBM WebSphere MQ
(в release),JAXB
(для сериализации/десериализации) иspring jms
(для взаимодействия с mq-менеджерами);
- KMS (небольшой опыт):
Vault
/Conjur
; - DSS (СХД):
Ceph
(по интерфейсуS3
) - в рамках начала вывода в эксплуатацию целевой инфраструктуры;NAS
(по интерфейсуNFS
) - в рамках эксплуатации существующей инфраструктуры;
- Load balancing:
- целевой вариант:
k&s
+Istio
; - текущий вариант: многослойная балансировка:
- HLB (например,
Alteon
) в качестве первого слоя; - балансировщики прикладного уровня (базирующиеся на open source nginx, а написанные полностью с нуля), выполняющие функции service discovery и балансировки по сервиса;
- HLB (например,
- целевой вариант:
- Testing:
TestNG
+Mockito
.
Разработчик Java Senior (ЕФС / СберТех)
В рамках “СберТеха” перешел в отдел только зародившейся АС ЕФС (автоматизированной системы “Единая Фронтальная Система”) , позиционировавшей себя в роли единого backend для множества уже существовавших на тот момент функционально схожих, но никак не переиспользовавших во многом идентичные модули друг друга систем:
- “Сбербанк Онлайн” (СБОЛ) в рамках сегмента УКО ФЛ;
- “Сбербанк Бизнес Онлайн” (СББОЛ) в рамках сегмента УКО ЮЛ;
- “АС Филиал” в рамках сегмента “Сотрудники”.
Период работы: 03.2018 - 07.2019
Подробнее
Являлся основным разработчиком в рамках одной из команд, занимающейся разработкой модулей ядра АС ЕФС.
Основным родом деятельности являлась разработка функциональной подсистемы (ряда самодостаточных модулей / (микро) сервисов), предоставляющей конечным потребителям (разработчикам прикладных сервисов, т.е. сервисов непосредственно связанных с конкретными бизнес задачами) удобный (как с точки зрения функциональности, так и с точки зрения UX) API, который инкапсулирует в себе особенности передачи файлового трафика, свойственные инфраструктуре банка:
- наличие нескольких сегментов сети:
- Sigma - внешний/открытый сегмент сети, имеющий выход в сеть Internet (посредством NAT типа full cone);
- Tau - внешний сегмент сети, имеющий выход в сеть Internet (посредством VPN канала);
- Alpha - внутренний/закрытый сегмент сети, имеющий выход в сегмент сети Sigma (посредством сетевого шлюза безопасности прикладного уровня, SOWA), а также имеющий множество сетевых зон (например, PCI DSS);
- наличие ряда АС (автоматизированных систем), специально выделенных для работы с файлами и выполняющий ровно одну
узкоспециализированную функцию в рамках данного направления:
- АС ТФС - система, отвечающая за передачу трафика между СХД (например, NAS) различных сегментов сети;
- АС УД / ДП - системы, являющиеся реализациями концепции ECM-систем, т.е. системы предназначенные для долгосрочного хранение enterprise content’а (файлов, имеющий business value) в рамках своего СХД (например, IBM FileNet);
- АС ИРД - система, предназначенная для распознавания текста из файлов;
- наличие СХД (систем хранения данных) определенного типа (например, NAS), который в определенный момент может смениться в зависимости от решений и потребностей банка.
В связи с тем, что более детальное описание рода деятельности может нарушить NDA (вышеописанные аспекты, так или иначе, были упомянуты на публичных выступлениях руководством Сбербанка, поэтому не являются нарушением NDA), поэтому могу привести лишь список основных фреймворков/продуктов, с которыми имею промышленный опыт работы в рамках вышеописанной роли:
- Platform:
Java 7
; - IoC container:
Spring
4.2.4; - DB: H2 (в develop);
Oracle 11g
(в release); - DB migration tool:
Liquibase
; - DB replication tool:
OGG
; - Scheduler:
Quartz
2.2.1; - Build tools:
Maven
2.5; - VCS:
Git
; - Logger:
Logback
1.2.3 +SLFJ
; - Application Server:
Jetty
(в develop) иIBM WebSphere Application Server
(в release); - WS/RS:
jax-rs
+jackson
(для сериализации / десериализации); - DSS (СХД):
NAS
(по интерфейсуNFS
); - Message Broker:
- JMS:
ActiveMQ
(в develop) иIBM WebSphere MQ
(в release), JAXB (для сериализации/десериализации) и spring jms (для взаимодействия с mq-менеджерами);
- JMS:
- Load balancing: многослойная балансировка
Alteon
(по ЦОД) ->Nginx
(по сервисам внутри ЦОД); - Testing:
TestNG
+Mockito
.
Разработчик Java (Сбербанк Онлайн / СберТех)
Перешел в АО “Сбербанк-Технологии” на роль Java разработчика на проект “Сбербанк Онлайн”.
Период работы: 05.2016 - 02.2018
Подробнее
Разработка и поддержка проектов СБОЛ, в разрезе которых приходилось иметь дело со следующим стеком технологий:
- Platform:
Java 6
- MVC:
Struts 2.0
(JSP
+Servlet
) - DB:
Oracle 11g
(с hibernate в качестве ORM, Ehcache в качестве L2 cache и Liquibase в качестве инструмента миграции) - Scheduler:
Quartz
1.6.0 - Build tools:
gradle
иant
(не весь проект был переведен на gradle) - VCS:
Git
- Application Server:
IBM WebShpere Liberty Profile
(в develop версии) и IBM WebSphere Application Server (в release версии) - JMS:
IBM MQ
(с использованиемEJB
иJAXB
) - WS/RS: работа с rest-сервисами и wsdl (wsgen на серверной стороне и wsimport на клиентской)
- Logger:
Log4j
1.2.14 - Testing:
JUnit
4.12 - Front: скрипты верстки на
js
иjquery
(этим занимался в меньшей степени)
Среди реализованных проектов, успешно внедренных на PROD-среды, имею:
- “Трансграничные переводы” и “Перевод сам себе” (возможность снять заранее определенную сумму денег со своего счета в
банкомате имея лишь одноразовую пару: {логин; пароль}).
До сих пор лишь малая часть пользователей в СБОЛ имеют доступ к ним. - “CRM - обращения клиентов” (личный кабинет обращений клиента). Имеется благодарственное письмо от исполнительного директора сбербанка лично на мое имя за реализацию и сопровождение проекта до PROD.
Разработчик C++ (RS Bank 5.5 / R-Style Softlab)
Начинал карьеру в роли C++ разработчика в рамках проекта АБС (автоматизированной банковской системы) “RS Bank 5.5” в компании “R-Style Softlab”.
Период работы: 06.2014 - 05.2016
Подробнее
Занимался разработкой и поддержкой функционала ядра АБС (автоматизированной банковской системы) RS-Bank 5.5, ориентированной на банки smb-сегмента (малые и средние).
Используемый стек технологий:
- Platform:
C++ 11
иRSL
(проприетарный язык программирования) - DB:
Pervasive
- VCS:
SVN
Непосредственные обязанности:
- проектирование и актуализация схем базы данных;
- составление таблиц трудозатрат, декомпозиция задач;
- коллективная разработка приложений промышленного уровня;
- поддержка существующего функционала.
Также занимался разработка независимого приложения на WPF для обработки запросов от ФНС.
Вдохновлялся работами Андрея Александреску.
Неосновной род деятельности
В относительно свободное от непосредственной работы время:
Выступления на местных конференциях
Периодически выступаю на некоторых конференциях, например:
- выступление на городской конференции по теме “Становление java”;
- цель: привлечение студентов и иных заинтересованных людей в сферу IT в разрезе стека технологий java;
- презентация;
- внутрибанковские выступления на различные темы:
- к сожалению, выступления попадают под NDA (Non-disclosure agreement).
Курирование студентов
Занимаюсь курированием студентов во время летней (или иной) производственной практики, проходящей в сбере, у студентов из местных университетов.
Подробнее
Читаю им лекции и веду практику, курс которой составляю в паре с другими кураторами (моя вовлеченность в процесс зависит от уровня моей загруженности на момент практики).
Во время практики:
- читаю часть курса лекций по Java, а также веду парную к нему практику:
- написание собственных коллекций;
- освоение практик TDD посредством написания тестов на TestNG / JUnit под собственные коллекции (в тестах также допускается сравнение поведения с модельными коллекциями);
- также рассказываю про сетевые технологии (модели OSI и TCP/IP, принципы маршрутизации запросов и так далее).
По окончанию практики:
- выделяем интересных для нас студентов;
- занимаюсь с ними отдельно:
- читая небольшие лекции и предоставляю направляющий их развитие материал про web технологии (для самостоятельного освоения с последующими вопросами ко мне);
- выдаю тематические задачи для закрепления материала:
- написание своего простенького веб сервера на сокетах;
- написание аналога адресной книги сотрудников на spring boot;
- написание своей социальной сети на spring boot (web sockets / server sent event) + react / vue.js.
Волонтерство на Stack Overflow
Периодически занимаюсь волонтерской деятельностью, отвечая на вопросы в рамках ресурса stack overflow.
О себе
Образование
- 2010 - 2015:
- вуз: ВоГУ (Вологодский Государственный Университет);
- факультет: ФПМиКТ (Факультет Прикладной Математики и Компьютерных Технологий);
- статус: специалист (студент);
- 2005 - 2010:
- учебное заведение: МОУ Лицей №32 (Вологда);
- класс: с уклоном прикладной математики (7 - 11 класс);
- 2002 - 2005:
- учебное заведение: Школа №16 (Вологда);
- класс: обычный / без уклона (3 - 7 класс);
- 2000 - 2002:
- учебное заведение: Школа №7 (Вологда);
- класс: обычный / без уклона (1 - 3 класс).
Регулярно участвовал и являлся призером различных олимпиад.
Часть сохранившихся сертификатов можно
найти здесь.
Примеры кода
Подавляющее большинство проектов, которыми я занимаюсь, так или иначе, подпадают под NDA (non-disclosure agreement) мест моей работы.
Среди сколько-нибудь интересных open source вариантов можно отметить следующие:
- крипто веб сервис:
- утилитные сервисы для выполнения криптографических операций над потоками данных;
- моя референсная реализация задач для студентов:
- такие задачи предоставляются во время производственной практики студентам с моей стороны, будучи в роли куратора;
- entity locker:
- реализация синтетического задания синхронизатора блокировки объектов;
- сайт визитка “АртДизайнПроект”:
- исходный код;
- проект выполнялся во время второго курса университета (2011 год) в качестве заказа, поступившего от компании “АртДизайнПроект”;
- проект написан полностью с нуля, без использования каких-либо фреймворков (за исключением библиотеки для галереи);
- под сотовые не ориентирован (прилично выглядит только с компьютера).
Рабочие ориентиры
При разработке сервисов вдохновляюсь работами:
- Martin Fowler
- в его личных статьях;
- Mark Richards
- читаю его книжки на O’Reily (Fundamentals of Software Architecture) используя корпоративную подписку;
- Andrew Tanenbaum
- читаю его книги “Операционные системы”, “Архитектура компьютера” и “Компьютерные сети”;
- …
Являюсь приверженцем идеологии “чистого” кода, выработанной на базе немалого опыта работы (в том числе активного рефакторинга) с кодовой базой различных проектов, а также опираясь на опыт авторов следующих книг:
- “Совершенный код” Стив Макконнелл;
- “Приемы объектно-ориентированного проектирования: Паттерны проектирования” Э. Гамма;
- “Современное проектирование на C++” А. Александреску;
- …
P.S. Не во всем солидарен с материалом, изложенным в данных книгах, но многие базовые аспекты почерпнул именно оттуда.
Особенности характера
- оптимизм;
- общительность:
- регулярно эксплуатирую данную черту для быстрого и адекватного урегулирования неоднозначных вопросов с членами команды / руководством / сопровождением / информационной безопасностью;
- перфекционизм:
- иногда проявляется чрезмерно (например, при виде кода в стиле “итак сойдет” долгое время терзают муки желания переработать данный кусок функциональности);
- саморазвитие:
- в отсутствие саморазвития в течение даже небольшого интервала времени чувствую себя крайне неуютно.
Прочее
Стараюсь максимально расширять свой кругозор (не только технический):
- имею хорошее знание теоретического минимума computer science (одно лишь детальное прочтение основных книг от Эндрю Таненбаума очень сильно переворачивают сознание);
- стараюсь быть в курсе постепенно сменяющихся теоретических концептуальных основ физики;
- крайне интересуюсь принципами работы окружающих нас вещей (в частности, устройств);
- интересуюсь причинами тех или иных аспектов устройства общества и государства (ведь политика намного ближе, чем кажется).
Владею определенными навыками разработки в игровом движке Unity3D, а также в определенной мере владею 3Ds Max. Примером использования данных навыков является собственная трехмерная игра (шутер) в Unity3D (игровая логика написана на языке C#).