Transfiera el servicio web a Yandex.Cloud con AWS

Hola a todos! Mi nombre es Vitaly Davydov, soy el fundador de Poteha Labs.

A finales del año pasado, Yandex lanzó un nuevo producto para desarrolladores: Yandex. Cloud , que proporciona potencia informática y servicios relacionados para el procesamiento y almacenamiento de datos. En este artículo hablaré sobre cómo evaluamos la transferencia de uno de nuestros proyectos a la nube, sus características y tarifas.

Descripción general de Yandex.Clouds

Hay dos formas de implementar su servicio web o aplicación móvil. Considere un ejemplo de base de datos (como una de las partes de un servicio web):

  • Autogestionado : alquile un automóvil e implemente su PostgreSQL en él. Sus postgres tienen sus pros y sus contras: si las cargas son pequeñas, tal solución será suficiente. Pero cuanto más grandes sean los volúmenes, más mantenimiento se necesita y, en algún momento, necesitará un ingeniero DevOps independiente.
  • Totalmente administrado : elija un proveedor de la nube y use PostgreSQL como servicio. En este caso, el proveedor de la nube asume el soporte de toda la infraestructura y garantiza que todo funcionará de acuerdo con el SLA (acuerdo sobre el nivel de prestación del servicio, que limita el tiempo máximo de indisponibilidad, el tiempo máximo de indisponibilidad total durante un período ). No hay problemas con el soporte de infraestructura.

Quienes eligen la opción de nube están familiarizados con los tres principales proveedores de servicios principales: Microsoft Azure , Amazon Web Services (AWS) y Google Cloud . Proporcionan una cantidad ilimitada de máquinas virtuales y docenas de servicios convenientes, y de tres opciones puede elegir la solución que sea adecuada para el precio. Por lo general, trabajamos con AWS, que recientemente tiene varios inconvenientes cuando se usa en Rusia.

La primera característica de AWS en Rusia está asociada con bloqueos activos de ILV, de los cuales muchos servicios sufrieron en 2018, desde nuevas empresas hasta sistemas bancarios ( Viber, Skyeng y otros ).

Además de esto, desde principios de 2019, Amazon comenzó a cobrar el IVA (20% del precio) a las empresas rusas por el uso de sus soluciones en la nube. Esto no es específico de Amazon: Microsoft, Google y otras compañías extranjeras de Internet ya han recaudado el IVA, sin embargo, en cualquier caso, este es un aumento desagradable en los precios para las compañías por el conjunto habitual de servicios.

Además de las compañías internacionales conocidas, también existe el mercado ruso para los sistemas en la nube: la plataforma Mail.Ru Cloud Solutions , Selectel y algunos jugadores más pequeños. Mientras que muchos ofrecen solo alquiler de hierro, que no es igual a la computación en la nube. Una nube completa proporciona no solo autos de alquiler, sino también un conjunto de servicios para simplificar la infraestructura (por ejemplo, bases de datos administradas).

Mercado ruso


En Rusia, las soluciones de nube completas son pocas (a saber, dos): MCS de mail.ru y el recientemente lanzado Yandex . Cloud .

Yandex aborda la cuestión de proporcionar servicios para arrendar el ecosistema de servicios. Una nube lista para usar no ofrece tantos servicios como en AWS: computadoras, almacenamiento de datos, bases de datos, balanceador de carga (alfa), orquestación de contenedores (alfa), planea agregar una plataforma sin servidor. El conjunto de servicios propuesto le permite diseñar y escalar una gran cantidad de soluciones comerciales más rápido que en su propia infraestructura, y la cantidad de servicios también está en constante crecimiento. La nube tiene tres centros de datos, por lo que puede crear sistemas distribuidos geográficamente.

A finales de 2018, Cloud se lanzó públicamente y abrió por primera vez una conexión de programa de asociación (en la que nos convertimos en uno de los primeros socios), y desde el 7 de diciembre de 2018 estuvo disponible para todos. Cuando te conectas ahora, Cloud otorga a los usuarios una subvención para un conocido: 4000 rublos por 2 meses . Gracias al acceso temprano, analizamos las oportunidades, las tarifas y realizamos cálculos para transferir uno de nuestros servicios de AWS a la nube.

Arquitectura


Ahora nuestro servicio web funciona en producción en AWS y consta de dos componentes: frontal y posterior, por lo que consideraremos la transferencia al componente de Cloud por componente. Migramos la aplicación con la siguiente pila de tecnología:

- Frontend . Escrito en React, el renderizado ocurre en el cliente. Los archivos estáticos (html, scripts y estilos) se almacenan en el Servicio de almacenamiento simple (S3). Arquitectura frontend de AWS

- Backend . Una aplicación django que se ejecuta en contenedores acoplables en máquinas virtuales Elastic Compute Cloud (EC2). Las máquinas son administradas por Elastic Container Service (ECS, un orquestador de contenedores gratuito), para bases de datos que usamos PostgreSQL en el Servicio de base de datos relacional (RDS). Para el equilibrio de carga: Elastic Load Balancer (ELB). Arquitectura de back-end de AWS
Implementamos la aplicación a través de GitLab CI, usando AWS CLI para actualizar el servicio en ECS y estadísticas en S3.

Cómo se verá la arquitectura del servicio en Yandex.Cloud:

- Frontend . En lugar de S3, se usa Yandex Object Storage, desde el cual también puede distribuir estadísticas del sitio. Arquitectura frontend en Yandex.Cloud

- Backend . En lugar de EC2, se utiliza Yandex Compute Cloud, que tiene una estructura similar: también hay almacenamiento en bloque, que existe por separado de las máquinas. Cloud no tiene un análogo ECS listo para usar ahora (pero en la versión alfa hay grupos de instancias de Yandex, en base a los cuales prometen presentar un servicio de contenedor administrado). Por lo tanto, por ahora, en lugar de ECS, debe usar Kubernetes o Rancher, que debe implementar usted mismo. Yandex Load Balancer en la nube también está en alfa, por lo que, por ahora, puede usar nginx, levantado en una máquina separada, como el equilibrador. Para PostgreSQL, Cloud tiene el Servicio Yandex Managed para PostgreSQL. Arquitectura de backend en Yandex.Cloud

Costo estimado


Después de estudiar la posible arquitectura, hicimos un cálculo estimado del costo del servicio en la nube ( tarifas oficiales aquí ). En la tabla a continuación, el costo aproximado de cada elemento para nuestro servicio (los precios se indican sin IVA).

QueCuánto, frotar. ($) / mes
AwsYandex Cloud
Balanceador de carga
(1 pc., 1 GB de RAM, 1vCPU 100%, 10 GB SSD)
1.300 (20)630 (10)
Instancias de aplicación
(2 piezas, 4 GB de RAM, 1vCPU 100%, SSD de 20 GB)
7.400 (115)2,350 (36)
Instancia para contenedor ORE
(Ranchero)
-630 (10)
Bases de datos
(2 piezas, 4 GB de RAM, 1vCPU 100%, 100 GB SSD)
12,800 (198)630 (10)
Almacenamiento de objetos
(10 GB, 1,000,000 PUT, 10,000,000 GET)
585 (9)470 (7)
IP pública
(2 piezas AWS, 4 piezas. Yandex. Cloud)
470 (7)380 (6)
Tráfico saliente
(500 GB)
2 925 (45)635 (10)
Total25 480 rub. ($ 392)9 695 rub. ($ 149)

Para nuestros parámetros, la nube era 2.6 veces más barata que AWS. Financiar la transición a la nube para el servicio es definitivamente rentable ( cálculos detallados para la nube, para AWS puede usar la calculadora en línea ).

Características de los servicios de Yandex.Cloud


  • Yandex Compute Cloud difiere de EC2 en que en EC2 puede aumentar la potencia de una máquina mediante RAM y CPU solo al mismo tiempo, y en la nube son independientes (para cada vCPU puede elegir entre 1 y 8 GB de RAM), lo que brinda más flexibilidad.
  • Yandex Object Storage es compatible con la API S3. De las desventajas, todavía no es posible configurar un certificado https en su dominio. El problema se resuelve utilizando el certificado Cloudflare, luego se protegerá el tráfico del usuario a la capa API externa. Esta es una opción rápida y fácil. También puede configurar la representación del lado del servidor, por lo que estamos esperando que la nube agregue esta función.
  • La nube aún no tiene un servicio para la recopilación de registros centralizada asíncrona (un análogo de AWS CloudWatch), por lo tanto, para recopilar y analizar registros, debe conectar soluciones de terceros.
  • Control de acceso a recursos: en AWS, esto se realiza a través de roles que se crean en el servicio de Gestión de acceso e identidad (IAM) y se asignan automáticamente a todas las instancias dentro del clúster ECS. La nube también tiene su propio IAM , pero los derechos granulares como en AWS aún no están disponibles en él.
  • Si bien no hay máquinas GPU para la informática.

Conclusión


En conclusión, destacamos las razones para probar Yandex Cloud:

  • Conjunto potencialmente grande de servicios de infraestructura;
  • La API compatible con AWS está disponible para algunos servicios, lo que simplifica enormemente la transición;
  • Los aranceles son más bajos que los de sus contrapartes occidentales, no hay conexión con el tipo de cambio del dólar;
  • Protección contra bloqueos repentinos;
  • Un centro de datos en Rusia, gracias al cual siempre se implementa la ley de protección de datos personales de los usuarios.

Para 2019, Cloud tiene grandes planes para lanzar los servicios anunciados y agregar otros nuevos. Creemos que con este conjunto de características y tarifas podrá convertirse en un fuerte competidor de Amazon en el mercado ruso.

Gracias por su atención, responderé preguntas en los comentarios.

Gracias a Wife ( pruzhinkina ) y Kirill ( kpotehin ) por su ayuda en la preparación de la revisión .

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


All Articles