Yandex abre la nube. Arquitectura de la nueva plataforma.

imagen

Hoy Yandex.Cloud está disponible para todos. Ahora cualquier usuario puede ir a la nube e implementar los recursos que necesita, obteniendo acceso a las tecnologías Yandex. Por ejemplo, para traducción automática y reconocimiento y síntesis de voz.

Hoy quiero presentarles Yandex.Cloud y contarles cómo está organizado en su interior. Debajo del corte aprenderá un poco sobre la historia, el equipo y la arquitectura de nuestra plataforma.

Un poco de historia


A pesar de que la plataforma en la nube Yandex se mostró por primera vez públicamente no hace mucho tiempo, el proyecto se ha desarrollado dentro de la compañía durante mucho tiempo y ha logrado sobrevivir a varias fases, y muchas de las tecnologías que formaron su base han pasado la prueba del tiempo en la infraestructura interna de Yandex. El desarrollo comenzó el año pasado, y los primeros usuarios externos comenzaron a probar la plataforma en abril de 2018. Era un modo cerrado, en el que participaban unas 100 empresas: servicios web de varios tamaños, desarrolladores de SaaS y corporaciones. En septiembre, abrimos un sitio público, pero solo podía ingresar a la Nube a través de la lista de espera, y ahora, en diciembre, el acceso se ha abierto para todos.

Al principio, cuando se formulaba un plan de desarrollo de productos, era necesario tomar varias decisiones estratégicas sobre qué características debería tener la nube y en qué tecnologías debería basarse: qué soluciones de código abierto sería aconsejable usar, que pueden tomarse de la pila de tecnología interna de Yandex Yandex, y lo que tendrá que desarrollarse específicamente para la plataforma pública. Uno de los problemas más importantes estaba relacionado con OpenStack.



En este momento, un clúster en OpenStack de varios miles de hosts había estado funcionando con éxito en Yandex durante varios años. Una de las posibles soluciones sería utilizar esta tecnología para crear la nube, especialmente porque aceleraría significativamente la entrada de la plataforma al mercado. Sin embargo, después de muchas discusiones y acalorados debates, se tomó una decisión a favor de nuestro propio desarrollo. Se expresaron los pros y los contras, pero los siguientes argumentos se volvieron decisivos.

En primer lugar, OpenStack es una solución para nubes privadas de un solo inquilino. Históricamente no ha sido diseñado para construir plataformas escalables de múltiples inquilinos . El segundo punto: esta tecnología es poco compatible con la arquitectura hiperconvergente (cuando todos los recursos de hardware forman un grupo grande y una infraestructura virtual ya está construida sobre él). Bueno, el tercero: experimentamos todas las dificultades con el soporte y la modificación de OpenStack que se identificaron durante la operación del clúster, y no queríamos arriesgar la experiencia del cliente de nuestros futuros usuarios. Por supuesto, no hubo respuestas inequívocas a las preguntas planteadas por nosotros, pero fue necesario tomar una decisión informada. Se hizo la elección y la plataforma siguió su propio camino.

Vale la pena señalar los enfoques arquitectónicos que lo acompañan, que también se establecieron desde el principio. El uso de un grupo único de recursos de hardware unificados es una de las decisiones fundamentales. Este enfoque le permite escalar fácilmente la plataforma y aumentar sin problemas la cantidad de recursos disponibles. Además, determinamos que la plataforma se basará en el principio del autohospedaje. Es decir, todos los servicios en la nube, incluidos los servicios, deben "vivir" encima de una única infraestructura hiperconvergente. Esto significa que Yandex.Cloud no tiene servidores de administración dedicados. Todos los servicios de plataforma se implementan en las mismas máquinas virtuales que los usuarios externos.



El autohospedaje le permite administrar de manera muy flexible la estructura de la nube y conectar automáticamente infraestructura adicional con costos mínimos, desde un servidor hasta un centro de datos completo con miles de máquinas. Además, trabajamos en las mismas condiciones que nuestros usuarios, lo que significa que podemos experimentar toda la experiencia del cliente.

Y el tercer principio subyacente en la plataforma: la disponibilidad de un único repositorio de metadatos e información del sistema para todos los servicios. Para esto, se utiliza el desarrollo interno: Yandex Database (YDB, que no debe confundirse con ClickHouse), que le permite colocar datos muy confiables, eficientes y flexibles. Por lo tanto, el repositorio de metadatos se ha convertido en el servicio interno básico para todos los demás servicios de Yandex.Cloud.

Probablemente haya notado que los principios básicos de la organización de la plataforma están estrechamente relacionados entre sí y determinan en gran medida la arquitectura y muchas soluciones tecnológicas posteriores. Esto es lo que nos dio la oportunidad de crear una plataforma escalable que nos permitirá planificar el desarrollo de todos los servicios Cloud existentes y futuros a largo plazo.

Arquitectura


En general, la arquitectura se ve así:



El núcleo de la nube es el almacenamiento de metadatos compartido ya mencionado (capa de almacenamiento). El uso de YDB mediante un mecanismo de replicación especial cubre todo el almacenamiento de hardware disponible para la nube. Un mecanismo similar se aplica al almacenamiento de bloque de red (NBS). Junto con YDB, forman un sistema de almacenamiento de datos común, que es utilizado por todos los demás servicios en la nube.



El servicio Yandex Compute Cloud está construido en la parte superior de la tienda. Le permite administrar máquinas virtuales que son utilizadas tanto por usuarios externos como por componentes internos de la plataforma. El hipervisor es KVM y el emulador es QEMU . Como resultado, se eligieron los controladores VirtIO para la virtualización del dispositivo. Una parte importante de la combinación de máquinas virtuales e infraestructura de hardware es el Programador. Es él quien determina en qué servidor físico se implementará la próxima máquina virtual.



Juntos, estos componentes son la parte de IaaS de la plataforma, que también incluye el servicio Yandex Virtual Private Cloud . El servicio de red se basa en el proyecto OpenContrail de código abierto.

Otro componente importante de este nivel es el mecanismo Snapshot. Le permite tomar fotos e imágenes de disco.



Un nivel superior son los servicios de plataforma, en su mayor parte accesibles para todos los usuarios de Yandex.Cloud. Estos son servicios para administrar bases de datos en la nube, cuyos grupos se implementan en máquinas virtuales (ClickHouse, bases de datos administradas para MongoDB y PostgreSQL); Almacenamiento de objetos compatible con S3 así como servicios de traducción y síntesis y reconocimiento de voz .

Hay otros dos servicios importantes que cubren todas las capas de la nube. Se trata de facturación y gestión de identidad y acceso (IAM). El primero es responsable de todas las operaciones de cobro y pago de los recursos consumidos. El segundo implementa el control de acceso basado en roles: acceso a recursos : a cada usuario se le puede asignar uno u otro rol que describa las operaciones permitidas. Por ejemplo, la función de editor le permite crear, eliminar y editar recursos, pero no le permite controlar el acceso a ellos.

Esta es una descripción bastante general del dispositivo Yandex.Cloud, pero le permite comprender cómo interactúan entre sí las diversas partes de una plataforma grande. Si desea profundizar en la estructura de la plataforma, le aconsejo que consulte el tema : grabación de conferencias en la nube . Se prestó especial atención en este evento a las redes y la base de datos Yandex.

El equipo


Finalmente, un par de palabras sobre el equipo. Durante el año pasado, ha aumentado significativamente y continúa creciendo . Ahora ya consta de más de 150 personas, sin contar la gran cantidad de grupos que no son directamente parte de Yandex.Cloud, pero cuyos logros también se utilizan en la plataforma. Una parte importante de los especialistas son, por supuesto, desarrolladores. Se dividen en unidades dedicadas a una u otra área: máquinas virtuales, bases de datos en la nube, facturación, redes, etc. Existe un grupo separado especializado en temas de seguridad en la nube y todo lo que está almacenado en él. Bueno, y, por supuesto, soporte, listo para responder rápidamente las preguntas planteadas por los usuarios.

Eso es todo para mí. En un futuro cercano, publicaremos varios artículos sobre los detalles de trabajar con diferentes servicios de nuestra plataforma. Mientras tanto, puede familiarizarse con Yandex.Cloud de forma gratuita. Cada nuevo usuario recibirá 4000 rublos para familiarizarse con la plataforma. Esta cantidad es suficiente para colocar un proyecto web de tamaño mediano en la nube dentro de un mes sobre la base de un paquete LAMP estándar con un almacenamiento de archivos de objeto de 1 terabyte; o para traducir una matriz de datos de más de 9 millones de caracteres conectando la traducción automática a su aplicación móvil o sitio web.

Source: https://habr.com/ru/post/es432042/


All Articles