Кирилл tolkkv Толкачёв — вероятно, самый известный в Java-мире сотрудник Альфа-Лаборатории: он активно выступает на Java-конференциях, давно участвует в подкасте «Разбор Полётов», а осенью стал сооснователем нового подкаста «Two Devs One Ops». Но как выглядит его работа в самой Альфа-Лаборатории, и насколько активно в компании используют все те инструменты, которые он упоминает в докладах и подкастах?
Кирилл выступил на прошедшей JPoint 2017, рассказав там совместно с Евгением Борисовым о «граблях» Spring Test/Spring Boot Test, а Альфа-Лаборатория стала спонсором JPoint — и мы решили, что на конференции удобно поймать его и расспросить обо всём этом.
— Вас знают как спикера и подкастера — а чем именно занимаетесь в Альфа-Лаборатории?
— Я просто разработчик :) В первую очередь работаю над двумя проектами: «Паспортом» и «Платформой». Первый связан с безопасностью и авторизацией, а второй — новый инфраструктурный проект, запускающийся в апреле, это такой внутренний продукт для других команд. Мы испытываем трудности роста, поэтому было решено кинуть силы на создание инженерного решения, которое будет успешно интегрировать техническую и процессную стороны разработки наших продуктов.
Также взаимодействую и с другими командами (консультации, помощь и так далее), а в целом пытаюсь реализовать свою мечту: чтобы все были заинтересованы в успехе своего продукта, с горящими глазами развивали общее дело, хотели и сами становиться лучше, и делать всё вокруг лучше.
Помимо чего-то, привязанного к конкретному проекту, у нас люди занимаются ещё и самодеятельностью, которая им нравится и приносит пользу. По сути, моя самодеятельность — это выступления на конференциях.
— Известно, что Альфа-Лаборатория — особое подразделение Альфа-Банка, но со стороны неочевидно: как именно они соотносятся?
— Официально мы отличаемся только названием, но на деле, конечно, много отличий. Истории о наших преобразованиях можно почитать в блоге CIO AlfaLab Надежды Авданиной. Она описала в нескольких статьях как свои личные ощущения от различных трансформаций, так и процесс в целом.
Если кратко, в один прекрасный момент мы поняли, что не хотим быть обычным банковским IT, и понеслась. Возник целый круговорот различных трансформаций, а мы стараемся делать так, чтобы он более быстрым и уверенным. Многие из этих трансформаций было бы очень сложно делать «изнутри банка», поэтому мы несколько обособились. Но также очевидно, что преобразования, имеющие положительный эффект, не могут оставаться внутри и распространяются на весь банк. Это завораживает — менять огромную организацию к лучшему. Но есть и обратная сторона процесса: чувствуется нехватка людей, способных что-то менять и не быть равнодушными, мотивированных развивать не только себя, но и своё окружение. И, по моему личному мнению, концентрация таких людей и является основной ценностью Лаборатории.
— В прошлом году на JPoint у вас был доклад о Spring Boot, в этом о Spring Boot Test — правильно ли понимаем, что в Альфа-Лаборатории Spring используется очень активно? Какие именно компоненты используете?
— Всё верно, Spring у нас используется весьма активно. Есть свои «адвокаты» фреймворка, но нет фанатиков, которые бы говорили, что «Spring всему голова». Используются и альтернативные DI-фреймворки, и другие «неканоничные» решения, если они удовлетворяют поставленным требованиям.
Используем Spring практически с момента создания Лаборатории. Эксперименты со Spring Boot начались чуть позже, но быстро вылились еще и в использование Spring Cloud. Поначалу попытки использования были совсем простыми, а потом был органичный процесс масштабирования всей этой истории. Из компонентов пробуем многое, но активно используем следующие:
- spring-core – куда же без основы для DI
- spring-boot – в качестве «клея» между всеми спринговыми частями и нашими — компонентами
- spring-web – куда же без него
- spring-cloud-* различные компоненты netflix, для обеспечения обнаружения сервисов, клиентской балансировки, фасадов декларативных http-клиентов, и т.д.
Из наших доработок есть набор spring-boot-starter?ов, например, для удобной и простой работы с thrift server/client spring starter, главным автором которого является наш любимый Александр Тарасов aka aatarasoff :) Или же более экспериментальный, но набирающий популярность grpc-starter. Последнее время начали активности по переносу проектов некоторых проектов на наш GitHub, начали с наиболее простых.
— В другом докладе, на Joker 2016 Student Day, вы составляли «периодическую таблицу» инструментов — а как выглядела бы таблица непосредственно используемых вами в текущем проекте компонентов?
На студенческом дне мы, по сути, и показывали нашу табличку на тот момент :) Правда, актуальную для всех проектов, а не для какого-то конкретного. В ней, конечно, есть и deprecated-компоненты, и экспериментальные. Но у каждого свой жизненный цикл, потихонечку происходит переход с одних на другие.
— К вопросу об экспериментальных компонентах: вы активно интересуетесь новыми технологиями, но банкам важна надёжность. Не возникает ситуации, когда хочется использовать в продакшене современную технологию, но по меркам банка она ещё недостаточно стабильна и надо ждать долгие годы?
— Стабильность достигается не благодаря каким-то конкретным технологиям, а благодаря тому, что люди понимают, что ценность этого приложения в стабильности и оно должно так работать. Кроме того, надёжности недостаточно: необходимо быстро выводить решения на рынок, уменьшать time to market. Если ты сделал супернадёжное решение, но оно не пришло в нужное время, то и ценности в нём нет.
А вообще с выбором технологий интересный момент. Мы постепенно идём к концепции, в которой стараемся отказаться от стандартизации и «заморозки» каких-то решений на долгие-долгие годы, но при этом стандартизировать жизненный цикл технологии, позволяющий чётко понимать, каким требованиям должны удовлетворять новые решения, чтобы успешно заменить старые.
Само собой, это всё не должно происходить без привнесения какой-то ценности, и первым пунктом в этом процессе стоит вопрос «Нахуа?», который должен задать себе каждый «инноватор», причём не раз. И только после того, как он
- переспит с этим вопросом
- сможет сформулировать, почему проблема, которую решит новая технология, действительно важна и значима для нас
- соберёт прототип, с помощью которого это будет прозрачно для всех
можно будет сказать, что «овчинка стоит выделки». Более того: скорее всего, найдутся единомышленники, которые помогут во внедрении нужных процессов и технологий.
Стоит расшифровать, что при этом мы считаем важными и значимыми проблемами, и это непростой вопрос. У банка есть огромное количество процессов и интеграций, начиная с софта, который стоит в отделениях и бэк-офисах, заканчивая пользовательскими веб- и мобильными приложениями. Для каждого решения есть внутренняя поддержка, которая отвечает на те или иные вопросы пользователей системы. Порой эта поддержка «многоуровневая». И, например, любая проблема, позволяющая уменьшить количество обращений к поддержке — потенциально значимая, так как начинает экономить человеческие ресурсы, деньги, и, конечно же, нервы :) И это целевое направление — меньшими силами делать больше.
Нас мало, но мы в тельняшках! Мы не хотим конкурировать числом, хотим качеством.
— Насколько можно судить снаружи, Альфа-Лаборатория предпочитает пользоваться известными open source-решениями, а не «велосипедить» — так ли это? А что делаете сами?
— Действительно, мы стараемся не велосипедить. Наши условия позволяют использовать готовые OSS-решения, собирая конечное из «кубиков». Код, который мы пишем сами – это:
- бизнес-логика
- код, направленный на улучшение поддерживаемости системы
- код, интегрирующий различные компоненты между собой
При всём этом мы не очень любим брать готовые «интеграционные» решения, которые уже содержат в себе набор OSS-компонентов. Думаю, это связано с тем, что мы уже набивали на этом шишки, и теперь предпочитаем «владеть» выбранными решениям и наращивать внутреннюю экспертизу :)
— JavaScript, покорив фронтенд, сейчас лезет и в бэкенд — а до банкинга с его специфическими требованиями он не добрался, и в Альфа-Лаборатории Java ничто не угрожает? Или там тоже с интересом смотрят на Node.js?
— У нас используется Node.js, есть фронтендеры, использующие React – им без Node.js никуда. Но в том, что касается внутренних сервисов, обработки данных или интеграционных сервисов, Java пока ничто не угрожает, ведь вместе с ней идёт развитая экосистема для решения различных задач, не всему есть аналоги в Node.js-мире. Да и как платформа, Java очень стабильна как в плане обратной совместимости, так и в плане различных регрессионных перформанс-изменений. :trollface: посмотрим, что нам принесет Java 9
— Вы интересуетесь DevOps вплоть до того, что создали подкаст о нём — в Альфа-Лаборатории этот подход повсеместно внедрён?
— Как я уже и говорил, в Альфа-Лаборатории просто есть люди, которые хотят сделать процесс донесения ценных изменений до пользователя максимально быстрым и стабильным. Часто для этого нужно обладать не только техническими навыками, но и soft skills.
А DevOps-подкаст «Two Devs One Ops» мы с Сергеем bsideup Егоровым организовали, так как накопилось огромное количество вопросов, на которые мы устали отвечать в офлайне :) На данный момент для нас это, в первую очередь, место, где мы можем собраться и поговорить друг с другом и людьми, которые интересны нам. Оказалось, что эти посиделки могут быть интересны сообществу. Хотя тут ничего удивительного нет, это мы уже давно выяснили в подкасте «Разбор Полётов».
— Судя по всему, вы имеете дело с таким количеством технологий, что перед каждой конференцией встаёт вопрос «про что именно рассказывать» — почему в этом году для JPoint выбрали именно тестирование в Spring?
— Выбирал по принципу «Что будет наиболее полезно слушателям». Думаю, различные подводные камни, показанные в докладе, и сделанные выводы могут сэкономить слушателям много времени.
Очень интересным оказалось то, что команда Pivotal сейчас производит, как они сами выразились, «капитальный ремонт» фреймворка для тестирования. На данный момент там существуют и новые, и старые механизмы, при комбинации которых начинают всплывать неочевидные нюансы. Да и сам spring-test содержит много вещей, на которые разработчики редко обращают внимание – например, кэширование тестовых контекстов. А spring-boot-test добавляет к этому ещё больше магии: например, два вида автосканирования, которое ведёт себя весьма специфично, и при обычном использовании ведёт к сильной связности тестов в одном приложении.
— Конференции и подкасты сказываются напрямую на работе? Например, знакомитесь ли благодаря этому с людьми, которые потом оказываются вашими коллегами?
— У меня нет цели узнать больше людей, которые могут «пригодиться» мне в «Лаборатории». В первую очередь, это моё собственное саморазвитие и удовлетворение жажды общения/новых знаний. Если кто-то приходит к нам, потому что слушает «Разбор Полётов» или видит кого-то из наших ребят на конференциях, я лично на это не смотрю. Для меня более важно то, с какой целью человек ходит на конференции и слушает подкасты.
Это справедливо и для меня самого, потому что изначально участие в подкастах и конференциях — это некоторые случайные события, которые произошли в моей жизни. Подвернулась возможность выступить/поучаствовать в подкасте —> попробовал —> понравилось. Теперь стараюсь делать выступления лучше и лучше, и мне это помогает как развиваться, так и получать удовольствие от моей работы. Исключить случайности из своей жизни невозможно — поэтому важно, как мы пользуемся каждой выпавшей возможностью.
Новый доклад Кирилла пока что могли увидеть только посетители конференции — но на YouTube можно посмотреть выступление о Spring Boot с прошлогоднего JPoint:
Поделиться с друзьями
Комментарии (6)
shishmakov
20.04.2017 11:15@tolkkv, добавьте пожалуйста подкаст "Two Devs One Ops" в itines. Хочется через стандартное приложение на iPhone вас слушать.
tolkkv
20.04.2017 16:34Обязательно добавим, пока есть проблема в Логотипе) В Itunes если сменить лого – прослушанные записи станут не прослушанными, надеюсь скоро решим все трудности
nerumb
Интересно, а в Альфа-Лаборатории используются ли другие языки JVM?
tolkkv
Groovy используем. Больше из JVM языков пока ничего не используем. В будущем, быть может, на Kotlin кто нибудь решиться :)
nerumb
Скоро выйдет Spring 5.0, хороший повод начать использовать Kotlin :)
Кстати, у вас ведь по большей части Spring везде используется? А не смотрели в сторону Vert.x или может Ratpack?
tolkkv
Vert.x смотрели, не используем.
Ratpack кое где используем :)