Тинькофф-журнал — главное русскоязычное издание про деньги. В июле наш сайт читали 16 миллионов человек. Наша миссия — сделать читателей образованными и смелыми в отношении всего, что касается денег. Для этого мы:
Потенциально вам предстоит дорабатывать любой сервис журнала и разрабатывать с нуля новые. Два главных сервиса — движок журнала и соцплатформа — написаны на Django. Движок перезапускаем на FastAPI. Этот же фреймворк используем в остальных сервисах, на нем же пишем новые.
У нас настроены пайплайны на Gitlab CI, в которых запускаются MyPy, Flake, Black и тесты на PyTest. Сервисы на FastAPI в тех же пайплайнах собираются в Docker и деплоятся с помощью ArgoCD в Google Kubernetes Engine. Django-сервисы деплоим руками.
Базы — Redis и Postgres. Для сервисов на Django Postgres разворачиваем и поддерживаем сами. Под FastAPI развернут Google CloudSQL. Redis хостим сами, но ради эксперимента в паре мест тоже подключили облачный.
Клиенты общаются с сервисами по REST, используем спецификацию OpenAPI, в шаблоне типового проекта подрублен Swagger. Сервисы между собой местами общаются так же, но мы переводим это на асинхронную архитектуру. В качестве брокера используем Google Pub/Sub.
Разработчики в журнале совмещают работу в продуктовой подкоманде и в технической команде.
В продуктовой команде на старте роль продакт-оунера возьмет на себя руководитель дистрибуции. Потом — подхватит выделенный продакт-менеджер. Продакт-оунера ранжирует задачи по важности и отвечает за их бизнесовую постановку. Разработчики декомпозируют это на технические задачи, придумывают и внедряют решение. Раз в неделю проводим совмещенное демо и планирование. По необходимости подключаем к работе команды тестировщиков, аналитиков и других специалистов.
В технической команде — кросс-ревью до двух лайков. Сами реквесты равномерно разбрасываем между всеми бэкендерами независимо от продуктовой команды. Раз в пару недель мы созваниваемся на час, чтобы обсудить чисто бэкендерские штуки: большие изменения в архитектуре, какие у кого новости или открытия, как улучшить процессы или инструменты. Раз в день-два пишем стендапы, чтобы быть в контексте разных направлений и вовремя прийти на помощь. Всего в команде 10 бэкендеров, 15 фронтендеров/JS-фулстеков, 4 мобильщика — RN-фулстеки, 3 тестировщика, пара менеджеров и DevOps/SRE-инженер.
Еще раз в четыре недели будет один на один со мной, где обсуждаем накопившиеся организационные вопросы, пытаемся снять боли, если есть, и вот это вот все.
Ближайшие задачи, которые предложу:
Из хардов будет тяжеловато без:
Тинькофф-журнал, или Т—Ж, — главное русскоязычное издание про деньги. В июле наш сайт читали 16 миллионов человек. Мы выпускаем: материалы разных форматов, курсы в Учебнике, калькуляторы и прочие интерактивы, тесты и мобильное приложение под iOS и Android.
Тинькофф-помощь — это справочник, который помогает клиентам пользоваться продуктами нашей группы компаний: картами, кредитами, брокерскими счетами, страховками и другими. Каждый месяц Помощь читает больше миллиона клиентов.
Оба проекта поддерживает одна команда тестирования.
В журнале несколько десятков бэкенд-сервисов на Python и с десяток — на Node.JS. Движок журнала использует Django и активно мигрирует на FastAPI. Другой крупный сервис, соцплатформа, тоже на Django и мигрировать не планирует. Учебник и остальные бэкенды — уже на FastAPI. На Node.JS работает бэкенд мобильного приложения, нескольких интерактивов и server side rendering прослойки перед фронтендом.
В каждом сервисе разработчики пишут модульные и интеграционные тесты. В питонячих бэкендах — на pytest. В нодовских — на Jest. Тестировщики проверяют полноту описанных сценариев на ревью. При желании тестировщик может дописать тесты самостоятельно.
Фронтенд пишем на React и TypeScript, сервисы взаимодействуют по REST. Модульных и интеграционных тестов там гораздо меньше относительно бекендных. Но команда тестирования пишет end-to-end тесты, чтобы сократить ручные проверки. Делаем это на TypeScript и самописном фреймворке, основанном на WebDriverIO.
Кроме автотестов мы дополнительно проверяем задачи вручную. Каждый тестировщик у нас способен проверить задачи и на бэкенде, и на фронтенде, и в мобильном приложении. Когда готовимся выпустить бизнесовую фичу, за ней закрепляем ответственного, который тестирует все связанные задачи. По необходимости и возможности он подключает и других тестировщиков. Тест-кейсы мы пишем и ревьюим в Allure TestOps.
Протестированные задачи сливаются из фича-веток в мастер-ветку проекта. Дальше тестировщик дает отмашку на релиз. Сама выкатка автоматизирована, но на всякий случай ее все равно сопровождает кто-то из разработки.
В команде тестирования я и еще двое специалистов. Всего в технической команде под 40 человек. Все они делятся на продуктовые подкоманды, в которые входят еще и дизайнеры, менеджеры и редакторы. Когда команда берет большую задачу, она старается пораньше подключить тестировщика.
Предлагаю заняться вот чем:
Знания и навыки, без которых будет тяжело:
На что можно рассчитывать:
Чему при желании у нас можно научиться: