Главная » Хабрахабр » Яндекс открывает Облако. Архитектура новой платформы

Яндекс открывает Облако. Архитектура новой платформы

image

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

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

Немного истории

Несмотря на то, что облачная платформа Яндекса была впервые публично показана не так давно, проект развивается внутри компании уже долго и успел пережить несколько фаз, а многие технологии, которые легли в ее основу, прошли проверку временем во внутренней инфраструктуре Яндекса. Разработка началась в прошлом году, а первые внешние пользователи начали тестировать платформу в апреле 2018 года. Это был закрытый режим, в котором участвовало около 100 компаний — веб-сервисы разной величины, разработчики SaaS и корпорации. В сентябре мы открыли публичный сайт, но попасть в само Облако можно было только через лист ожидания, и вот теперь, в декабре, доступ стал открыт всем.

Один из важнейших вопросов был связан с OpenStack. В самом начале, когда формировался план развития продукта, нужно было принять несколько стратегических решений о том, какими характеристиками должно обладать облако и на каких технологиях оно должно базироваться: какие опенсорсные решения было бы целесообразно использовать, что можно взять из внутреннего стека технологий Яндекса, а что придется разрабатывать специально для публичной платформы.

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

Оно исторически не создавалось для построения масштабируемых multi-tenant платформ. В первую очередь, OpenStack — решение для частных single-tenant облаков. Ну и третье — мы на себе прочувствовали все сложности с поддержкой и модификацией OpenStack, выявленные в процессе эксплуатации кластера, и не хотели рисковать клиентским опытом наших будущих пользователей. Второй момент: эта технология плохо совместима с гиперконвергентной архитектурой (когда все аппаратные ресурсы образуют один большой пул, и уже на базе него строится виртуальная инфраструктура). Выбор был сделан, и платформа пошла по собственному пути. Конечно, однозначных ответов на поставленные нами вопросы не было, но требовалось принять взвешенное решение.

Использование единого пула унифицированных аппаратных ресурсов — одно из принципиальных решений. Тут стоит отметить сопутствующие архитектурные подходы, которые также были заложены в самом начале. Кроме того, мы определили, что платформа будет строиться на принципе self-hosting. Такой подход позволяет легко масштабировать платформу и безболезненно увеличивать количество доступных ресурсов. Это значит, что в Яндекс.Облаке нет выделенных серверов управления. То есть все сервисы облака, включая служебные, должны «жить» поверх единой гиперконвергентной инфраструктуры. Все сервисы платформы развернуты на таких же виртуальных машинах, как и у внешних пользователей.

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

Для этого используется внутренняя разработка — Yandex Database (YDB, не путать с ClickHouse), которая позволяет размещать данные очень надежно, эффективно и эластично. И третий принцип, заложенный в основу платформы: наличие единого хранилища метаданных и системной информации для всех сервисов. Таким образом, хранилище метаданных стало базовым внутренним сервисом для всех других сервисов Яндекс.Облака.

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

Архитектура

В общем виде архитектура выглядит так:

YDB с помощью специального механизма репликации охватывает собой все аппаратные хранилища, доступные Облаку. Основу облака составляет уже упомянутое общее хранилище метаданных (storage layer). Вдвоем с YDB они образуют общую систему хранения данных, которая и используется всеми остальными сервисами в Облаке. Аналогичный механизм действует для network block storage (NBS).

Он дает возможность управлять виртуальными машинами, которые используются как внешними пользователями, так и внутренними компонентами платформы. Поверх хранилища построен сервис Yandex Compute Cloud. Как следствие, для виртуализации устройств были выбраны VirtIO-драйвера. Гипервизором служит KVM, а эмулятором — QEMU. Именно он определяет, на каком физическом сервере будет развернута очередная виртуальная машина. Важной частью связки виртуальных машин и аппаратной инфраструктуры является Scheduler.

В основе сетевого сервиса лежит опенсорсный проект OpenContrail. Все вместе эти компоненты являются IaaS-частью платформы, куда также входит сервис Yandex Virtual Private Cloud.

Он позволяет делать снимки и образы дисков. Еще одним важным компонентом этого уровня является механизм Snapshot.

Это сервисы для управления базами данных в Облаке, кластера которых разворачиваются на виртуальных машинах (ClickHouse, Managed Databases для MongoDB и PostgreSQL); совместимое с S3 объектное хранилище; а также сервисы перевода и синтеза и распознавания речи. Уровнем выше — платформенные сервисы, в большинстве своем доступные всем пользователям Яндекс.Облака.

Это Биллинг и Identity and Access Management (IAM). Есть еще два важных сервиса, которые охватывают собой все слои облака. Второй реализует управление доступом к ресурсам на базе ролей (role based access control): каждому пользователю могут быть назначены те или иные роли, описывающие разрешенные операции. Первый отвечает за все операции с тарификацией и оплатой потребленных ресурсов. Например, роль editor позволяет создавать, удалять и редактировать ресурсы, но не позволяет управлять доступом к ним.

Если вы хотите более детально вникнуть в структуру платформы — советую вам посмотреть запись конференции about:cloud. Это достаточно общее описание устройства Яндекс.Облака, но оно позволяет понять, как различные части большой платформы взаимодействуют друг с другом. Особое внимание на этом мероприятии было уделено сетям и Yandex Database.

Команда

Напоследок — пара слов о команде. За последний год она существенно увеличилась и продолжает расти. Сейчас она состоит уже более чем из 150 человек, не считая большого количество групп, которые напрямую не входят в состав Яндекс.Облака, но наработки которых также применяются в платформе. Существенная часть специалистов — конечно же, разработчики. Они поделены на подразделения, которые занимаются тем или иным направлением: виртуальными машинами, облачными базами данных, биллингом, сетями и т. д. Есть отдельная группа, специализирующаяся на вопросах безопасности облака и всего, что в нем хранится. Ну и, конечно же, поддержка, готовая быстро ответить на вопросы, возникающие у пользователей.

В ближайшем будущем мы опубликуем несколько статей, посвященных деталям работы с разными сервисами нашей платформы. На этом у меня все. Каждый новый пользователь получит 4000 рублей на знакомство с платформой. А пока вы можете бесплатно познакомиться с Яндекс.Облаком. Этой суммы вполне хватит на то, чтобы в течение месяца размещать в Облаке веб-проект среднего масштаба на базе стандартной связки LAMP с объектным хранилищем файлов на 1 терабайт; или для того, чтобы перевести массив данных размером более 9 млн символов, подключив машинный перевод к своему мобильному приложению или веб-сайту.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[Перевод] Бот, играющий в Castlevania

CastlevaniaBot — это плагин для эмулятора NES Nintaco, который играет в Castlevania. Если запустить его на экране заставки, то плагин пройдёт всю игру от начала до конца. Или же можно запустить его в любом месте игры, чтобы он прошёл её ...

«Контентинг-2018»: смотрим шире, копаем глубже

29 ноября мы снова собрали кучу людей, чтобы поделиться опытом контент-маркетинга. Давайте про дополненную реальность! Нет, все было не так, мы это уже когда-то это делали. Изобразительное искусство! Воздушные шары! Нынешний «Контентинг» был подхвачен фонтаном свежих тем в 20 докладах. ...