Учился я в Высшей школе экономики на менеджменте, но, несмотря на гуманитарную специальность, меня всегда тянуло к точным предметам. Математическое моделирование в менеджменте, экономика, высшая математика — все это было интересно.
И в день, когда я получил диплом, я в тот же день сел изучать программирование. Я посмотрел программу Computer Science в Вышке и по тем же предметам и учебникам стал заниматься. Начал изучать Java и уже через девять месяцев вышел на первую работу.
Первая работа была в очень маленькой компании, где я был единственным программистом. Мы делали систему, которая позволяла проводить офлайн-мероприятия с помощью цифрового помощника. Он помогал участникам делиться на группы, голосовать, задавать вопросы спикеру и так далее.
Там впервые я столкнулся с event-driven-архитектурой и сделал все на RabbitMQ. Было большое количество очередей, большое количество событий. Вообще все, что происходило в системе, было событием, и относились мы к этому именно так.
Тогда у меня проснулся интерес и любовь, с одной стороны, к распределенным системам, потому что все было микросервисным и было много разных параллельных обработчиков, а с другой — к брокерам сообщений. Было интересно разбираться с десятками и сотнями тысяч событий в секунду, искать узкие места в системе. Тогда же я впервые захотел разобраться с Kafka.
Когда я переходил на следующее место работы — в Vivid Money, стартап Т-Банка в Европе, необанк без отделений, — я как раз пришел в команду дата-платформы на роль разработчика стриминговой платформы. То есть занимался всем, что было связано с обработкой данных в Kafka.
Там я написал десятки коннекторов для Kafka Connect: коннектор к Jira, к Amplitude, REST Connector, который позволял отправлять данные во внешние сервисы, и многие другие. Кроме того, написал много обработчиков событий на Kafka Streams — со сложными окнами, джоинами и обработкой state store.
Все это работало вместе со Spark и загрузкой данных в Data Lake. В общем, два года я потратил на то, чтобы вырасти от мидла до сеньора, занимаясь именно стриминговым бэкендом.
После этого меня пригласили в Raiffeisen Bank старшим разработчиком стриминговой платформы. Нужно было с нуля сделать то, что мы сделали в Vivid, но теперь уже в масштабе не десятка команд стартапа, а сотен команд большого энтерпрайзного банка.
Там было огромное количество кейсов работы с Kafka. Разные команды работали по-разному: кому-то нужна была максимально эффективная запись, кому-то — распределенное чтение, кто-то хотел сложную обработку данных, кто-то — real-time-аналитику и дашборды. Всем нужно было помогать.
Именно там я впервые стал тимлидом, управлял командой разработки стриминговой платформы и решал много сложных кейсов, из которых впоследствии выросли доклады. В Райфе я впервые поехал на Highload, JPoint и Kafka Summit в Лондоне. Там же появились кейсы для Яндекс Практикума, где в течение последнего года я рассказывал студентам, как строить event-driven streaming-платформу для обработки событий.
После Raiffeisen Bank я пошел в Т-Банк. Это была попытка вырасти еще выше. Я уже руководил не одной командой, а пятью. В моей зоне ответственности была не только стриминговая платформа, но и платформа для пакетной обработки данных. То есть я отвечал за всю логику обработки данных внутри большой платформы Т-Банка.
Проработал там не очень долго. Мне не очень понравилось быть руководителем, потому что я стал отдаляться от архитектуры и разработки. Уже через девять месяцев я перешел в Яндекс на позицию разработчика YDB.
Моей задачей было реализовывать Kafka-протокол для YDB Topics. YDB Topics — это open-source-брокер сообщений, аналог Kafka, который давно используется в Яндексе и работает в огромном масштабе: примерно 150 ГБ/с записи и около 300 ГБ/с чтения.
Там я дописывал Kafka-протокол, добавил Kafka Transactions в YDB и еще несколько важных функций. В целом обновил реализацию до последней версии протокола и исправил несколько серьезных багов.
В Яндексе я столкнулся с еще большим количеством кейсов работы со стримингом. Более полутора тысяч команд используют YDB Topics как брокер сообщений, поэтому сценариев оказалось значительно больше. К ним добавились параллельная обработка сообщений внутри одной партии, транзакции между топиками, а также транзакции между топиками и таблицами.
В моем портфолио появилось глубокое понимание того, как Kafka устроена изнутри: как она хранит данные, как работает ее протокол, как взаимодействуют клиент и сервер, какие баги были в разных версиях Kafka, почему они возникали и как исправлялись. Пришлось разбираться во всем этом hands-on, своими руками: от работы со сжатием данных до реализации новых возможностей в YDB.
Последняя точка моей карьеры — место, где я работаю сейчас. Я продукт-оунер YDB Topics и частично YDB в целом. Теперь я уже не пишу код, а помогаю другим командам внутри Яндекса работать с брокером сообщений, решать задачи, связанные со стримингом, выстраивать правильный мониторинг и делать платформу проще и удобнее, чтобы разработчики могли быстрее реализовывать свои сценарии обработки данных.