-
Введение в инфраструктуру Yubo: обзор и философия
-
Структура нашей команды и роли (эта статья)
-
Дата-инжиниринг в масштабе и self-service для баз данных
-
Автоматизация в масштабе
-
Стек мониторинга
-
Developer Experience в Yubo
-
Раскрывая инновации: данные в основе продукта
В этой второй части серии я хочу подробно рассказать о том, как устроена наша инфраструктурная команда. Управлять огромной системой с 80 миллионами пользователей — задача не из простых, но чёткая организация помогает нам оставаться гибкими, эффективными и готовыми к росту. Мы разделили команду на три ключевых направления: дата-инжиниринг, DevOps и безопасность. Каждое из них играет ключевую роль не только в эксплуатации production-инфраструктуры, но и в формировании инструментов и процессов, которые позволяют нашим разработчикам работать продуктивно.
Команда, разумеется, растёт, но основа этой организации была выстроена вокруг команды из 5 человек (включая меня).
1. Дата-инжиниринг: владение моделью данных с самого начала
Во многих компаниях дата-инженеров подключают слишком поздно: модели данных проектируют инженеры-разработчики, а дата-инженеров зовут уже для того, чтобы эти модели оптимизировать и поддерживать. В Yubo мы делаем иначе.
Наша команда дата-инжиниринга участвует в каждом проекте с этапа проектирования и запуска. Это значит, что при разработке новых фич дата-инженеры активно вовлечены и следят за тем, чтобы модель данных была эффективной, масштабируемой и заточенной под потребности нашей инфраструктуры. Передавая им ответственность с самого начала, мы избегаем дорогостоящих переделок и добиваемся того, чтобы инфраструктура и модели данных были согласованы с первого дня.
Такой подход также позволяет нашей инфраструктурной команде предвидеть будущие потребности. Когда дата-инженеры встроены в процесс проектирования, они способны заранее предугадать проблемы масштабирования, снижение производительности запросов или потребности в хранении данных — задолго до того, как это скажется на системе. Это проактивный способ управлять ростом и обеспечивать бесперебойную работу.
2. DevOps: продуктивность разработчиков и бесшовный деплой
Наша команда DevOps выполняет две критически важные роли: поддерживает production и создаёт инструменты, которые делают команду разработки более эффективной. Стабильность production — приоритет номер один, но настоящая магия происходит тогда, когда мы строим системы, помогающие разработчикам писать новые фичи.
Мы сосредоточены на двух ключевых направлениях:
-
Продуктивность разработчиков: наша цель — дать команде разработки инструменты, которые нужны, чтобы писать, тестировать и выкатывать код без узких мест. Это включает создание (или шаблонизацию, если помните первую часть) CI-пайплайнов, которые ловят проблемы на раннем этапе, вывод нужных метрик и предоставление self-service-платформ для деплоя и управления ресурсами. Мы не боимся выпускать новые фичи в прод даже при ограниченном тестировании, потому что у нас есть целый арсенал метрик и мониторинга, гарантирующих стабильную работу после деплоя.
-
Уверенность в production: с помощью Argo Rollouts мы активно применяем канареечные развёртывания, чтобы проверять новый код на небольшой доле трафика, прежде чем раскатывать его на всех. Это позволяет ловить проблемы на раннем этапе и при необходимости откатываться с минимальными последствиями. Мы можем деплоить часто, не переживая, что сломаем систему, — это помогает двигаться быстро, сохраняя production-окружение в безопасности.
3. Безопасность: ограничение доступа и защита приватности
Безопасность глубоко встроена в нашу философию инфраструктуры. Хотя мы cloud-first-компания, мы повсеместно внедрили строгие политики «минимального доступа» (least access). Это значит, что у каждого есть доступ только к тем ресурсам, которые ему абсолютно необходимы, — и ничего сверх того. Разумеется, наш IAM тоже автоматизирован с помощью YAML-шаблонов конфигурации.
Вот несколько ключевых моментов о наших практиках безопасности:
-
Никакого публичного сетевого доступа: хотя мы используем облачные вычисления, ни одна из наших систем не выставлена напрямую в публичный интернет. Вместо этого мы полагаемся на Teleport — инструмент безопасного доступа, который работает как VPN, но со строгим контролем доступа и аудитом. Это позволяет команде безопасно подключаться к инфраструктуре, обеспечивая надёжную защиту.
-
Автоматизированный аудит безопасности: мы также серьёзно вложились в аудит, применяя анализ на основе машинного обучения для проверки систем на потенциальные проблемы. Вместо жёстких блокирующих мер, которые замедляют работу, мы делаем ставку на обучение команды безопасным практикам. Это формирует более устойчивую и гибкую культуру безопасности и снижает количество узких мест.
-
Эффективный SSO и физические ключи: мы потратили немало времени на поддержку эффективной системы единого входа (SSO), которая практически незаметна для пользователя. Используя физические ключи безопасности вместо паролей, мы дополнительно усиливаем защиту, сохраняя процесс аутентификации бесшовным и удобным.
Фундамент для инноваций, а не тормоз ради стабильности
В Yubo мы рассматриваем инфраструктурную команду как фундамент инноваций для всей компании, а не как тормоз, озабоченный лишь стабильностью. Этот дальновидный подход мы применяем во всём, что делаем. Например, наша инициатива FinOps — это не только про сокращение облачных расходов; мы смотрим на неё как на работу по оптимизации производительности. Мы стремимся обеспечить пользователям наилучшую задержку, а это, в свою очередь, высвобождает бюджет для инвестиций в более качественные инструменты и командные активности.
Этот образ мышления распространяется и на безопасность. Вместо того чтобы сосредотачиваться исключительно на «закрытии» систем, мы вложились в решения, которые делают безопасную работу проще и незаметнее, — например, физические ключи вместо традиционных паролей. Аудит на основе машинного обучения позволяет выявлять потенциальные проблемы, не мешая повседневной работе. Эта философия — расширять возможности, а не ограничивать — пронизывает все направления инфраструктурной команды.
Дежурства (on-call): сначала добровольцы, эскалация при необходимости
Ключевой элемент управления нашей инфраструктурой — дежурная ротация (on-call). Но мы реализовали её так, чтобы поощрять сотрудничество и гарантировать, что нужная экспертиза всегда под рукой.
У нас есть пул разработчиков-добровольцев, которые выступают первой линией обороны при возникновении проблемы. Они вполне способны справиться со многими типичными ситуациями, опираясь на документацию и post-mortem’ы, а с недавних пор им помогает искать в них информацию ещё и AI-бот; если же они заходят в тупик, то могут эскалировать проблему инфраструктурной команде. Такая система гарантирует, что проблемы решаются быстро и без выгорания инфраструктурной команды, и при этом воспитывает у разработчиков чувство ответственности за код, который они выкатывают.
Ещё одна классная особенность нашей организации дежурств в том, что ответственность переходит к разработчику, который недавно выкатил изменения. Если вы отправили новую фичу в production, именно вы отвечаете за то, чтобы следить за ней и решать любые возникающие проблемы. Это удерживает всех в тонусе и сводит простои к минимуму.
Полностью удалённая команда: ответственность + гибкость = баланс работы и жизни
Вся техническая команда работает полностью удалённо: её участники распределены по Франции, Италии и Германии, что позволяет выстраивать работу вокруг личной жизни, хобби и времени с семьёй. Но чтобы всё это работало гладко, мы во многом полагаемся на индивидуальную ответственность. Каждый участник команды сам управляет своим расписанием, поддерживает в актуальном состоянии свои доски задач и ведёт How-To-руководства и операционную документацию. Такой уровень прозрачности критически важен: он даёт менеджменту нужную видимость и при этом держит всех согласованными.
Мы также сводим количество встреч к строгому минимуму. Мы предпочитаем асинхронную коммуникацию через инструменты вроде Slack, и хотя спонтанные созвоны один на один не считаются формальными встречами, они помогают поддерживать гибкую и отзывчивую среду. Такая система требует немалой дисциплины: участники команды должны старательно поддерживать документацию в актуальном виде, следить за актуальностью досок задач и ясно общаться в публичных каналах.
Так работает вся наша техническая команда, делая ставку на асинхронные процессы ради максимальной эффективности и минимума помех. Когда возникает инцидент или критичная для бизнеса проблема, мы создаём в Slack каналы-war room, чтобы быстро собрать нужных экспертов и решить всё в реальном времени. Такой подход сохраняет нашу гибкость даже при удалённой работе и гарантирует, что мы можем оперативно реагировать на любой вызов.
Заключение: команда, которая движется быстро и остаётся защищённой
Наша инфраструктурная команда невелика, но мы построили систему, которая позволяет двигаться быстро, не жертвуя ни безопасностью, ни стабильностью. Команда дата-инжиниринга глубоко вовлечена в проектирование фич, команда DevOps сосредоточена на создании инструментов, расширяющих возможности разработчиков, а команда безопасности обеспечивает герметичную защиту — благодаря этому мы поддерживаем бесперебойную работу инфраструктуры и одновременно выпускаем новые фичи в быстром темпе.
Поддерживая чёткую структуру, предугадывая будущие потребности и развивая культуру ответственности и гибкости, мы способны управлять инфраструктурой на 80 млн пользователей силами всего пяти человек — и мы всегда смотрим вперёд.
Оставайтесь с нами: в следующей статье мы подробно разберём дата-инжиниринг в масштабе и то, как мы справляемся со всей сложностью управления нашими базами данных.