Facturación por segunda vez, marketplace y sandboxes para Big Data: ¿qué pueden hacer los entornos de prueba en la nube?


Cualquier empresa de desarrollo de software necesita entornos de prueba cercanos al entorno de producción. Esto es especialmente cierto para el software en caja, que tiene un ciclo de lanzamiento largo.
Muchos problemas de creación de entornos de prueba se resuelven mediante su ubicación en la nube. Hablaremos sobre las opciones de prueba en nuestra plataforma Mail.Ru Cloud Solutions (MCS) basada en la nube . Pero parte de lo que contamos es cierto para cualquier nube.

Dificultades para configurar un entorno de prueba


Antes de hablar sobre las capacidades de los entornos de prueba en la nube, hablaremos sobre las dificultades que enfrentan las empresas para probar el software.

Diferentes ramas de Git: diferentes entornos


La mayoría de las empresas involucradas en el desarrollo de software utilizan sistemas de control de versiones. El más común es Git , que es utilizado por el 87% de los desarrolladores (encuesta de RhodeCode en Twitter ).

La mejor práctica en Git son las denominadas ramas de características, cuando se asigna una rama separada para cada nueva funcionalidad en el repositorio. Este enfoque permite a los desarrolladores no "presionar los codos" y hace que los cambios sean más independientes, pero requiere el despliegue de muchos entornos dedicados para probar características individuales.

Subutilización de los recursos informáticos.


El 25% de los servidores físicos son zombis que consumen electricidad pero no hacen nada útil. Y muchos especialistas de TI no pueden decir qué están haciendo el 15-30% de los servidores instalados en su empresa.

Entonces aquí. El hardware en las instalaciones para entornos de prueba aquí no es diferente de ningún otro y, por regla general, está mal eliminado. Y no puede ser de otra manera. Cuando compra una flota de equipos de servidor, los recursos lo reasignan en caso de un mayor consumo y la cantidad de entornos de prueba. Como resultado, los entornos de prueba están inactivos por la noche y los fines de semana "por si acaso", y solo paga la electricidad y la refrigeración consumidas.
La simple aplicación de virtualización en su nube privada no resuelve el problema de la escalabilidad inflexible y la subutilización de los equipos.

Ajuste de dificultad


Los entornos de prueba y desarrollo no son solo unas pocas máquinas virtuales. Por lo general, incluye un servidor de aplicaciones, un servidor de base de datos, además de servidores de cola de mensajes y servidores de caché.

Es difícil para los desarrolladores crear y configurar dicha infraestructura por su cuenta, si no tienen la experiencia adecuada, esto puede llevar varios días. Para administradores experimentados, esto es fácil, pero generalmente no es interesante. Además, se impone la burocracia y el proceso de asignación de recursos para crear un entorno de prueba puede llevar mucho tiempo.

Otro problema es que un administrador del sistema a tiempo completo a menudo no tiene experiencia en la implementación de entornos de prueba específicos, y la empresa se ve obligada a atraer consultores costosos del exterior. Un ejemplo es un sandbox para big data basado en Hadoop, Spark, HDFS o Airflow. La implementación de dicho entorno lleva al menos una semana de un especialista calificado en el área de BigData y al menos un mes de un administrador del sistema ordinario. Una historia similar con los clústeres de Kubernetes: la construcción de un clúster de prueba cercano a la configuración de producción lleva al menos varios días.

Como resultado, la compañía se ve obligada a recurrir a un tercero para atraer consultores. Sin embargo, encontrar expertos en big data es bastante difícil , y los administradores de tales sistemas se pueden contar casi con los dedos. Sí, un ingeniero de DevOps puede manejar todas las tareas de implementación de entornos de prueba, pero no todas las empresas lo tienen, y encontrar un buen experto en este campo no es más fácil que un especialista en BigData. De hecho, en 2016, el sitio de búsqueda de empleo Indeed.com señaló que las empresas buscaban un ingeniero DevOps más tiempo que cualquier otro especialista.

Cómo la nube resuelve estos problemas


Segunda facturación de los recursos consumidos y escala instantánea


La ventaja más obvia de los servicios en la nube es la capacidad de alquilar una infraestructura en la nube de cualquier configuración (un servidor o un clúster completo) durante cualquier período. En nuestra plataforma Mail.Ru Cloud Solutions (MCS), la facturación es por segundo: solo debe pagar los recursos informáticos que realmente se utilizaron.

A diferencia del bare metal, la nube privada y la mayoría de los proveedores de nube rusos, MCS no cobra recursos por las máquinas virtuales detenidas (RAM, CPU): solo debe pagar por el espacio en disco utilizado. Por ejemplo, la configuración de prueba de 20 CPU, 40 GB de RAM y 1 TB HDD cuesta 24.800 ₽ / mes, y el costo del espacio en disco es de 7.000 ₽ / mes. Por ejemplo, si utiliza herramientas de automatización para detener dicho entorno a las 21:00 y desplegar a las 9:00, pagará 15 900 ₽, una vez y media menos que con un alquiler las 24 horas.

En nuestra experiencia, el ahorro total de las pruebas en la nube puede alcanzar el 60–70%, en comparación con las pruebas en la infraestructura local.

La capacidad de escalar recursos instantáneamente en la nube hacia arriba y hacia abajo le permite implementar entornos rápidamente solo en el momento adecuado y utilizar las capacidades arrendadas en casi un 100%. El tiempo de implementación del entorno de prueba se reduce en varios días, o incluso meses, en comparación con las instalaciones.

Recursos asignados por los propios desarrolladores


Utilizando portales de autoservicio, los desarrolladores pueden configurar entornos de prueba en la nube y asignarles recursos sin contactar a los administradores. Incluso esta simple acción puede acortar el tiempo de comercialización de un producto en varias semanas.

API para crear y destruir automáticamente entornos de prueba


La nube le permite crear entornos de corta duración en un modelo justo a tiempo . Con la API y la CLI de REST , puede implementar entornos de prueba en masa, detenerlos, actualizarlos y eliminarlos. De esta manera, puede configurar el ciclo de vida completo para entornos de prueba y mantener saludables cientos de entornos. Gracias al escalado instantáneo en la nube y la facturación de segundo a segundo, se logra flexibilidad y costos operativos reducidos.

Aquí hay un ejemplo de nuestra experiencia.
La compañía desarrolla software para 150 bancos. Cada banco tiene su propia sucursal en Git con funciones adicionales integradas sobre la solución en caja. La empresa se ve obligada a generar dos o tres entornos de prueba de trabajo paralelos para cada cliente: prueba con la versión actual, prueba con la nueva versión, comprobación de actualizaciones de la actual a la nueva. En total, para 150 clientes, es necesario implementar y mantener hasta 450 entornos de prueba solo al mismo tiempo, esto no tiene en cuenta los entornos de desarrollo.

En el modo de nube privada (usan la virtualización en su propio centro de datos), trabajar con dicha carga es casi imposible, ya que el hardware disponible a menudo no es suficiente para la operación paralela de todos los entornos. Como resultado, los desarrolladores están esperando su turno para probar y no pueden verificar rápidamente el funcionamiento de la nueva versión de la aplicación.

La implementación y gestión automatizadas de entornos de prueba en la nube pública elimina la limitación en la velocidad de prueba y, en última instancia, reduce el tiempo de comercialización. Además, la administración de costos al alquilar recursos en la nube es más predecible, y los costos en sí mismos son más bajos que cuando se usa su propio equipo especializado para bancos de pruebas.

Otra ventaja de los entornos de prueba en la nube es la integración con las herramientas de CI / CD. Estas soluciones (por ejemplo, Jenkins) contienen complementos que le permiten crear dinámicamente entornos de prueba en la nube MCS durante la compilación. Puede activar un entorno de prueba justo antes de ejecutar pruebas funcionales o de regresión. Si las pruebas son exitosas, el entorno colapsará automáticamente, si algo está mal, el entorno se guardará para que los desarrolladores puedan volver a conectarse y comprender el motivo de la regresión.

Bloques de construcción prefabricados para entornos de prueba


Implemente rápidamente el entorno de prueba en la plataforma Mail.Ru Cloud Solutions
PaaS ayuda, por ejemplo, a los contenedores Kubernetes y a las bases de datos en la nube. Kubernetes está desarrollando un catálogo de servicios con cientos de aplicaciones.

Desde el catálogo, puede implementar ActiveMQ, RabbitMQ, clústeres de Kafka, sistemas de monitoreo y análisis de registros, varios CMS y bases de datos en pocos minutos. A diferencia del popular Docker Hub , que solo contiene plantillas de aplicaciones personalizadas, el Catálogo de servicios de Kubernetes tiene plantillas de alto nivel que simplifican la integración. Desde las plantillas, puede implementar componentes de aplicaciones preconfigurados (cola de mensajes, descubrimiento de servicios, bases de datos, servidores de aplicaciones, herramientas CI / CD, servidores de almacenamiento en caché, herramientas blockchain y mucho más), sin la necesidad de configurar las máquinas virtuales en las que se implementan.


Aplicaciones disponibles en el mercado de Kubeapps.

Sandboxes para Big Data


En MCS, puede implementar entornos de prueba para aplicaciones de big data. Usando el servicio Big Data de PaaS, puede crear grupos de Hadoop, Spark, HBase y Airflow. El proceso de implementación está completamente automatizado, y esto ahorra semanas de tiempo en comparación con la autoconfiguración.

Una ventaja adicional aquí es la facturación de segundo a segundo y el escalado instantáneo. La capacidad de crear entornos de prueba extensibles por períodos cortos reduce los costos de la empresa de mantener una infraestructura analítica de TI. Los ahorros pueden alcanzar el 80% en comparación con los locales.

Integración con Infraestructura como un Código


A diferencia de las soluciones patentadas basadas en VMWare, la plataforma en la nube MCS está construida sobre la base del software abierto OpenStack, que tiene una integración completa con varias herramientas: Terraform, Ansible, Puppet, Chef.

Terraform está construido en el espíritu de Infraestructura como Código (IaC), cuando el proceso de configuración de la infraestructura se organiza como una codificación y es más familiar para los desarrolladores. Terraform es difícil de usar en una nube privada porque carece de integración total con VMware. En la nube MCS, las empresas pueden usar ejemplos ya preparados de trabajar con Terraform (están en este repositorio de GitHub ).


Crear un entorno de prueba usando Terraform.

Recuerdame


  • Las pruebas en la nube se están convirtiendo en una práctica natural en la industria de TI y ya están siendo aplicadas por una amplia variedad de organizaciones: desde universidades estatales hasta grandes empresas de TI .
  • La creación de entornos de prueba en la nube ayuda a ahorrar dinero debido a la posibilidad de escalamiento instantáneo y automatización a través de API, que proporcionan casi el 100% de utilización de la infraestructura alquilada.
  • Los servicios adicionales en la plataforma en la nube y las plantillas en los contenedores de Kuberntetes son bloques de construcción listos para usar que no necesitan ser configurados.
  • Los servicios que son difíciles de configurar, como las herramientas de procesamiento de Big Data, son más fáciles de alquilar en la nube como plantillas preconfiguradas. Ahorrará semanas al no sumergirse en la configuración.
  • MCS se basa en OpenStack y está completamente integrado con Terraform y otras herramientas DevOps.

Todas estas herramientas se pueden probar de forma gratuita en la plataforma Mail.Ru Cloud Solutions. Hasta finales de noviembre, utilizando este enlace con el código promocional ILOVEHABR, puede agregar 1000 rublos a su cuenta y test-test-test.

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


All Articles