View on GitHub

curriculum-vitae

Резюме

  1. Дисклеймер
  2. Контактные данные
  3. Опыт работы
    1. Разработчик C++ (RS Bank 5.5 / R-Style Softlab)
    2. Разработчик Java (Сбербанк Онлайн / СберТех)
    3. Разработчик Java Senior (ЕФС / СберТех)
    4. Архитектор (ЕФС / СберТех)
    5. Архитектор (Platform V / СберТех)
  4. Неосновной род деятельности
    1. Выступления на конференциях
    2. Курирование студентов
    3. Волонтерство на stack overflow
  5. О себе
    1. Образование
    2. Примеры кода
    3. Рабочие ориентиры
    4. Особенности характера
    5. Прочее

Дисклеймер

Если вам больше по душе более “стандартное” оформление резюме, то альтернативные его варианты можно найти в следующих местах:

Контактные данные

Avatar

Avatar

Опыт работы

Стаж профессиональной деятельности: years, months.

Разработчик 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

Непосредственные обязанности:

  1. проектирование и актуализация схем базы данных;
  2. составление таблиц трудозатрат, декомпозиция задач;
  3. коллективная разработка приложений промышленного уровня;
  4. поддержка существующего функционала.

Также занимался разработка независимого приложения на WPF для обработки запросов от ФНС.

Вдохновлялся работами Андрея Александреску.


Разработчик 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-среды, имею:

  1. “Трансграничные переводы” и “Перевод сам себе” (возможность снять заранее определенную сумму денег со своего счета в банкомате имея лишь одноразовую пару: {логин; пароль}).
    До сих пор лишь малая часть пользователей в СБОЛ имеют доступ к ним.
  2. “CRM - обращения клиентов” (личный кабинет обращений клиента). Имеется благодарственное письмо от исполнительного директора сбербанка лично на мое имя за реализацию и сопровождение проекта до PROD.

Разработчик Java Senior (ЕФС / СберТех)

В рамках “СберТеха” перешел в отдел только зародившейся АС ЕФС (автоматизированной системы “Единая Фронтальная Система”) , позиционировавшей себя в роли единого backend для множества уже существовавших на тот момент функционально схожих, но никак не переиспользовавших во многом идентичные модули друг друга систем:

  1. “Сбербанк Онлайн” (СБОЛ) в рамках сегмента УКО ФЛ;
  2. “Сбербанк Бизнес Онлайн” (СББОЛ) в рамках сегмента УКО ЮЛ;
  3. “АС Филиал” в рамках сегмента “Сотрудники”.

Период работы: 03.2018 - 07.2019

Подробнее

Являлся основным разработчиком в рамках одной из команд, занимающейся разработкой модулей ядра АС ЕФС.

Основным родом деятельности являлась разработка функциональной подсистемы (ряда самодостаточных модулей / (микро) сервисов), предоставляющей конечным потребителям (разработчикам прикладных сервисов, т.е. сервисов непосредственно связанных с конкретными бизнес задачами) удобный (как с точки зрения функциональности, так и с точки зрения UX) API, который инкапсулирует в себе особенности передачи файлового трафика, свойственные инфраструктуре банка:

  1. наличие нескольких сегментов сети:
    • Sigma - внешний/открытый сегмент сети, имеющий выход в сеть Internet (посредством NAT типа full cone);
    • Tau - внешний сегмент сети, имеющий выход в сеть Internet (посредством VPN канала);
    • Alpha - внутренний/закрытый сегмент сети, имеющий выход в сегмент сети Sigma (посредством сетевого шлюза безопасности прикладного уровня, SOWA), а также имеющий множество сетевых зон (например, PCI DSS);
  2. наличие ряда АС (автоматизированных систем), специально выделенных для работы с файлами и выполняющий ровно одну узкоспециализированную функцию в рамках данного направления:
    • АС ТФС - система, отвечающая за передачу трафика между СХД (например, NAS) различных сегментов сети;
    • АС УД / ДП - системы, являющиеся реализациями концепции ECM-систем, т.е. системы предназначенные для долгосрочного хранение enterprise content’а (файлов, имеющий business value) в рамках своего СХД (например, IBM FileNet);
    • АС ИРД - система, предназначенная для распознавания текста из файлов;
  3. наличие СХД (систем хранения данных) определенного типа (например, 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-менеджерами);
  • Load balancing: многослойная балансировка Alteon (по ЦОД) -> Nginx (по сервисам внутри ЦОД);
  • Testing: TestNG + Mockito.

Архитектор файловых сервисов (ЕФС / СберТех)

Стал архитектором файловых сервисов в рамках АС ЕФС.

Период работы: 07.2019 - 02.2021

Подробнее

Выполнял роль архитектора технологического сервиса передачи файлов, а также отвечал за направления развития, связанные с передачей файлов в рамках единой платформы Platform V, которая является объединением технологических ядер платформ ЕФС, ППРБ и Synapse.

Основным родом деятельности (помимо описанной в предыдущей должности в рамках роли разработчика) являлось:

  1. проработка и описание/документация архитектуры в разрезе функциональности передачи файлового трафика:
    • целевой вариант в рамках единой платформы Platfrom V, которое должно иметь две вариации:
      • ориентируясь на использование в разрезе банковской инфраструктуры с учетом интегрируемости между собой АС ( автоматизированных систем);
      • ориентируясь на использование в разрезе SberCloud;
    • ряд решений в рамках переходного периода на время объединения трех платформ (ЕФС, ППРБ и Synapse) в единую Platfrom V.

В рамках стека технологий для целевого решения осуществляется переход на следующий:

  1. DSS (СХД): Ceph (по интерфейсу S3):
    • с “прозрачным” шифрованием/дешифрованием содержимого файлов категории конфиденциальности К-1 и К-2;
    • с “прозрачным” наложением/проверкой ЭЦП на содержимое файлов категории целостности И-1 и И-1;
  2. KMS: Vault
    • используется в качестве хранилища “master key” в рамках шифрования по принципу “2 tier key architecture” (Amazon S3 SSE like);
  3. format: REST (over JSON) / gRPC (over protobuf);
  4. routing: Istio (envoy redirect + файловый sidecar);
  5. Anti Virus Protection:
    • синхронный сервис - сигнатурная проверка (за счет сравнения сигнатуры файла с известной базой тел вирусов);
    • асинхронный сервис - поведенческий анализ (за счет файловой песочницы, которая в виртуальной среде стартует образ ОС, определяет MIME-тип файла, после чего открывает его в ассоциированной с данным типом программе, а затем следит за отклонением от модельного поведения системы);
  6. 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 и балансировки по сервиса;
  • Testing: TestNG + Mockito.

Архитектор файловых сервисов (Platform V / СберТех)

Перешел в отдел новой технологической платформы банка Platform V, созданной на базе слияния крупнейших доминирующих систем банка: ЕФС и ППРБ.

В текущий момент занимаю позицию solution архитектора направления File Exchange в рамках Platform V (единой технологической платформы пятого поколения сбера).

Период работы: 02.2021 - текущее время.

Подробнее

Занимаюсь проектированием и разработкой платформенных файловых сервисов, в частности:

  • шлюз для работы с S3 хранилищами:
    • “прозрачный” относительно протокола s3 шлюз для работы с S3-compatbile хранилищами;
    • инкапсулирующий работу с replica-set’ом из множества s3 кластеров;
    • соблюдающий конфиденциальность данных посредством предоставления поддержки server-side шифрования (при размещении объекта) и дешифрования (при получении объекта);
    • соблюдающий целостность данных посредством предоставления поддержки server-side наложения ЭЦП (при размещении объекта) и проверки ЭЦП (при получении объекта);
    • сервиса обмена файловым трафиком (синхронно / асинхронно);
    • сервиса проверки файлового трафика:
      • посредством сигнатурного (т.е. проверки его сигнатуры согласно известным антивирусным базам);
      • посредством поведенческого анализа (т.е. открытия файла в соответствующем приложении, связанным с его MIME-типом, в рамках виртуальной системы с последующим анализом поведения системы - базируется на нахождении отклонения поведения ОС от ожидаемого);
  • сервис интеграции со средствами антивирусной проверки (malware analysis):
    • синхронный сервис - сигнатурная проверка (за счет сравнения сигнатуры файла с известной базой тел вирусов);
    • асинхронный сервис - поведенческий анализ (за счет файловой песочницы, которая в виртуальной среде стартует образ ОС, определяет MIME-тип файла, после чего открывает его в ассоциированной с данным типом программе, а затем следит за отклонением от модельного поведения системы);
  • сервис интеграции со средствами предотвращения утечки данных (DLP - Data Leak Protection):
    • анализ выдаваемого трафика на отсутствие несанкционированных утечек данных (категории конфиденциальности К-2 и выше).
  • веб крипто сервиса (для удобства выполнения потокового шифрования/дешифрования, наложения/проверки ЭЦП, расчета digest (значения hash) или MAC);

При построении утилитных сервисов делается упор на слабую связность. Например, посредством построения асинхронной схемы межсервисного взаимодействия в стиле choreography.

В качестве основного стека технологий хотелось бы отметить следующее (относительно предыдущих проектов):

  1. Object Storage (DSS / СХД): Ceph / MinIO (по интерфейсу S3 API);
  2. Application Server: Netty;
  3. Framework: Spring WebFlux;
  4. Service Interaction Style: Choreography;
    • Message Broker: Confluent Kafka.

Неосновной род деятельности

В относительно свободное от непосредственной работы время:

Выступления на местных конференциях

Периодически выступаю на некоторых конференциях, например:

Курирование студентов

Занимаюсь курированием студентов во время летней (или иной) производственной практики, проходящей в сбере, у студентов из местных университетов.

Подробнее

Читаю им лекции и веду практику, курс которой составляю в паре с другими кураторами (моя вовлеченность в процесс зависит от уровня моей загруженности на момент практики).

Во время практики:

  • читаю часть курса лекций по Java, а также веду парную к нему практику:
    • написание собственных коллекций;
    • освоение практик TDD посредством написания тестов на TestNG / JUnit под собственные коллекции (в тестах также допускается сравнение поведения с модельными коллекциями);
  • также рассказываю про сетевые технологии (модели OSI и TCP/IP, принципы маршрутизации запросов и так далее).

По окончанию практики:

  • выделяем интересных для нас студентов;
  • занимаюсь с ними отдельно:
    • читая небольшие лекции и предоставляю направляющий их развитие материал про web технологии (для самостоятельного освоения с последующими вопросами ко мне);
    • выдаю тематические задачи для закрепления материала:
      • написание своего простенького веб сервера на сокетах;
      • написание аналога адресной книги сотрудников на spring boot;
      • написание своей социальной сети на spring boot (web sockets / server sent event) + react / vue.js.

Волонтерство на Stack Overflow

Периодически занимаюсь волонтерской деятельностью, отвечая на вопросы в рамках ресурса stack overflow.

Мой профиль.

О себе

Образование

Регулярно участвовал и являлся призером различных олимпиад.
Часть сохранившихся сертификатов можно найти здесь.

Примеры кода

Подавляющее большинство проектов, которыми я занимаюсь, так или иначе, подпадают под NDA (non-disclosure agreement) мест моей работы.

Среди сколько-нибудь интересных open source вариантов можно отметить следующие:

Рабочие ориентиры

При разработке сервисов вдохновляюсь работами:

Являюсь приверженцем идеологии “чистого” кода, выработанной на базе немалого опыта работы (в том числе активного рефакторинга) с кодовой базой различных проектов, а также опираясь на опыт авторов следующих книг:

  1. “Совершенный код” Стив Макконнелл;
  2. “Приемы объектно-ориентированного проектирования: Паттерны проектирования” Э. Гамма;
  3. “Современное проектирование на C++” А. Александреску;

P.S. Не во всем солидарен с материалом, изложенным в данных книгах, но многие базовые аспекты почерпнул именно оттуда.

Особенности характера

  1. оптимизм;
  2. общительность:
    • регулярно эксплуатирую данную черту для быстрого и адекватного урегулирования неоднозначных вопросов с членами команды / руководством / сопровождением / информационной безопасностью;
  3. перфекционизм:
    • иногда проявляется чрезмерно (например, при виде кода в стиле “итак сойдет” долгое время терзают муки желания переработать данный кусок функциональности);
  4. саморазвитие:
    • в отсутствие саморазвития в течение даже небольшого интервала времени чувствую себя крайне неуютно.

Прочее

Стараюсь максимально расширять свой кругозор (не только технический):

Владею определенными навыками разработки в игровом движке Unity3D, а также в определенной мере владею 3Ds Max. Примером использования данных навыков является собственная трехмерная игра (шутер) в Unity3D (игровая логика написана на языке C#).