Мы - команда систем хранения Облака (CloudMTS). Наша задача - обеспечить облачные сервисы инфраструктурой для работы с большим объемом данных в разных видах. Команда занимается разработкой и эксплуатацией платформы, которая предоставляет интерфейсы доступа к данным для разных потребителей - например, низкоуровневый интерфейс блочных устройств (дисков) для виртуальных машин, SaaS сервис объектного хранилища (S3) и другие сервисы.

В сферу внимания команды входит весь стек инфраструктры облака: мы прорабатываем интерфейсы взаимодействия с инфраструктурными сервисами командами, занимающимися эксплуатацией железа в датацентрах, участвуем в выборе необходимого оборудования наших сервисов. Мы отвечаем за разработку и эксплуатацию всех компонентов нашей системы - как за низкоуровневое перекладывание байтов по сети между виртуальными машинами и хостовой ОС или по сети, так и за гарантии сохранности и консистентности данных, интеграцию системы хранения в единый API облака, или инфраструктурные сервисы, автоматизирующие эксплуатацию.

Поэтому мы ищем специалистов разных профилей - бекенд-разработчиков, специалистов по SRE, системных программистов. Если интересно заниматься сервисами, которые должны надежно и быстро работать с десятками петабайт данных - то команда разработки систем хранения данных в МТС Облаке - отлично место для работы 🙂

Наши сервисы

Блочные устройства

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

В отличии от физических дисков, облачные не выходят из строя, не привязаны к конкретным физическим ресурсам кластера и могут гибко менять свой размер и характеристики производительности по запросу пользователя. Внутри сетевые диски - это распределенное хранилище, поддерживающее copy-on-write семантику, горизонтальное масштабирование, и независимость от единой точки отказа.

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

Объектное хранилище

Интерфейс Объектного KV-хранилища AWS S3 (Simple Storage Service) де-факто стал стандартом для хранения многих типов данных - статика вебсайтов, картинки, видео, бекапы баз данных, датасеты для обучения ML-моделей и многое другое. Гибкая система управления правами доступа, возможности иерархического обращения с ключами, версионирование объектов, интеграция с управлением сертификатами и DNS, возможность выполнения батч-операций над миллионами объектов и многое другое позволяют решать широкий спектр задач на основе S3.

В Object Storage можно не просто хранить данные, но и, например, создать статический вебсайт, cделать аналитику логов приложения или резервное хранилище с регулярной очисткой старых бекапов. Object Storage шифрует все данные которые в нем хранятся и предоставляет пользователям аудитные логи всех действий над объектами внутри. На основе S3-интерфейса также есть реализации non-POSIX сетевых файловых систем.

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

Observability storage

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

Процессы и подходы к разработке

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

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

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

Для управления задачами и досками мы используем JIRA, в качестве базы знаний используем confluence или readme в коде.

Основной приоритет в нашей работе - сохранность данных. Самое плохое что может случиться с облаком - потеря данных пользователя. Поэтому все фичи, все процессы эксплуатации и релизов в сервисах фокусируются в первую очередь на том, чтобы минимизировать возможность повредить или удалить данные клиентов.