Рейтинг лучших ИТ-работодателей России 2019 от Хабр Карьеры: читать на Хабре
Обо мне

Активно увлекаюсь разработкой софта с 14 лет. Начинал с Python и фронтенда (SPA на первом Angular, потом Backbone/MarionetteJS). Спустя год (в начале 2016) переехал на Java/Spring, попробовал писать под Android и на Go, а в начале 2016 открыл для себя связку Kotlin/Spring.

Почти 4 года (до осени 2017 года) у меня не было возможности полноценно совмещать работу и учебу, так что я старался развиваться за счет pet-project’ов и довольно редкого фриланса. Это был весьма ценный опыт, который очень пригодился в реальной работе.

Помимо непосредстванно backend-разработки у меня довольно много опыта с devops-технологиями: Docker, Kubernetes/Rancher/Swarm, Ceph, ELK-stack/Prometheus. Но работу чисто в роли devops-инженера не рассматриваю.

Очень люблю Kotlin, но понимаю, что в серверной разработке он все еще редкость. Поэтому вполне готов к "дауншифтингу" на Java: в конце концов, это одна экосистема.

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

Профессиональные навыки
Участие в профессиональных сообществах
Опыт работы
Первый российский банк с японским капиталом
Главный разработчик
Июль 2019 — По настоящее время (8 месяцев)

Разработка нового ДБО для физлиц. Стек: Spring Boot, Kotlin, Coroutines, WebFlux, R2DBC, PostgreSQL, Kafka, Kubernetes, OKD.

Фактически выполнял роль техлида в команде из 8 разработчиков, пытаясь выстроить унифицированную, событийно-ориентированную архитектуру сервисов и их взаимодействия между собой и с мастер-системами (Terrasoft CRM, АБС Инверсия XXI век, процессинг Compass Plus).

За прошедшие 9 месяцев удалось сделать очень многое:

* Сформировать целевую архитектуру для всех новых сервисов, построенную на Kotlin, Spring, корутинах, webflux и r2dbc
* Начать переход на событийно-ориентированную архитектуру (вместо долгих синхронных запросов к мастер-системам)
* Отказаться от WSO2 в пользу собственного сервиса, занимающегося аутентификацией пользователей, управлением сессиями и подписанием JWT-токенов.
* Начать процесс разделения публичного и приватного API сервисов реализуя паттерн API Gateway
* Выделить взаимодействие с мастер-системами в отдельные сервисы, обеспечив тем самым централизованное управление нагрузкой на них и единообразный маппинг во внутренние DTO сервисов ДБО.
* Написать более 20 бизнесовых сервисов и запустить MVP на рынок

Помимо координации команды и разработки архитектуры я участвовал и непосредственно в разработке бизнесовых сервисов. Из интересного можно выделить реализацию СБП, push provisioning'а карт Visa/MasterCard в Google Pay, унификацию отправки Push/SMS уведомлений.

Создаем удобную финансовую экосистему. Рушим стереотипы о банковских продуктах, делая их понятными и приятными
Kotlin/Spring Backend Developer
Февраль 2019 — Июль 2019 (6 месяцев)

Изначально пришел сюда за новым опытом и работой в команде с более опытными людьми, а в итоге - написал с нуля (и в одиночку) два сервиса за полгода.

Первый - инструмент, занимающийся построением временных рядов (метрик в стиле prometheus'а) в реалтайме на основе потока логов из Kafka (~10 млн. событий в час, ~200 мбит/с). Полученные данные отрисовывались в Grafana, аггрегировались в соответствии с развесистыми правилами и анализировались при помощи ML-моделей и stability index. Ну и алерты, конечно же. Стэк: Kotlin, Spring (Boot, Cloud, Data, Kafka), Kafka, PostgreSQL, Oracle DB, Kubernetes (OKD), TeamCity.

Второй проект - переписывание диспетчера, слушающего события из шины данных (IBM MQ) и прокидывающий их внутрь большой state-машины, занимающейся обработкой заявок на новые продукты. Kotlin, Spring, Oracle DB, IBM MQ.

В целом, работа в Тинькофф - офигенный опыт, но, к сожалению, мои ожидания относительно технического и карьерного роста здесь несколько не оправдались.

Моб. прил. с базой ресторанов по всему миру, отзывами Посетителей, экскл. скидками и системой оплаты "кэшбэк".
Руководитель направления разработки ПО, Java/Kotlin backend developer
Май 2018 — Февраль 2019 (10 месяцев)

Поддержка существующей реализации (Python/Django/Postgres) и параллельное переписывание сервера на Kotlin/Spring + MongoDB/Elasticsearch/RabbitMQ + Angular/Typescript для внутренних интерфейсов.

Версию с новым бэкендом успешно запустили в декабре 2018, примерно спустя полгода активной разработки. Основные запросы стали работать в 2-10 раз быстрее (например поиск теперь занимает порядка 80-110ms против 700-1200ms раньше). 

Получилось примерно 25k LOC. Под капотом - активное использование Elasticsearch (n-gram search, geolocation decay functions, ранжирование по нескольким весам) и MongoDB (много разнообразных низкоуровневых запросов для обеспечения производительности и атомарности операций), большое количество инфраструктурных технологий, призванных обеспечить отказоустойчивость (Kubernetes с распределенным control plane, Weave Net, Ceph + RadosGW как замена AWS S3, кластеры MongoDB/Elasticsearch/RabbitMQ с автофейловером, CI/DI (Drone, self-hosted docker registry), Sentry, ELK-stack + Prometheus/Grafana для мониторинга и аналитики).

Для запуска платежной платформы использовался API альфа-банка (платежи привязанными картами, apple pay, google pay).

Помимо непосредственной разработки занимался проработкой бизнес-логики и координацией технической команды проекта из пяти человек.

Делаем приложения для iOS и Android, сходим с ума по технологиям
Python Backend Developer
Октябрь 2017 — Апрель 2018 (7 месяцев)

Разработка и поддержка нескольких средненагруженных проектов. Основной стек - Python/Django, postgresql, rabbitmq, celery. Есть немного aiohttp, sqlalchemy, mongodb.

Так уж сложилось, что приличное количество рабочего времени я потратил на миграцию всех серверных проектов студии на новую инфраструктуру с Docker, Kubernetes, Gitlab, ELK-стеком для аггрегации и анализа логов, Prometheus для сбора метрик, Sentry в качестве системы отслеживания ошибок.

Высшее образование
Международный университет природы, общества и человека «Дубна»
Дубна
Факультет: Институт системного анализа и управления
Январь 2018—Февраль 2020 (2 года и 1 месяц)
Воронежский государственный университет
Воронеж
Факультет: Прикладной математики, информатики и механики
Сентябрь 2017—Январь 2018 (4 месяца)