Llegamos a ustedes gracias a:



Columnas de opinión

5 operaciones que todo arquitecto de la nube debería automatizar

Por: Lee Atchison, especialista en cloud computing y modernización de aplicaciones

[01/12/2022] La nube ofrece muchas ventajas al proceso de desarrollo de aplicaciones moderno de una empresa. Una de las más significativas es la capacidad de automatizar acciones críticas que tradicionalmente han requerido pasos manuales.

La automatización es tal vez la ventaja más significativa del uso de la nube. Los arquitectos de la nube prosperan en sus funciones aprovechando la automatización siempre que sea posible.

[Reciba lo último de CIO Perú suscribiéndose a nuestro newsletter semanal]

¿Cuáles son algunas de las técnicas comunes de automatización de la nube que son fundamentales para el trabajo de un arquitecto de la nube? Aquí hay cinco operaciones que todo arquitecto de la nube debe esforzarse por automatizar al diseñar, construir e implementar aplicaciones alojadas en la nube.

Automatización #1. Escalado

El escalado automatizado es lo más fundamental y esencial para utilizar la nube. Tanto si hablamos de recursos de servidor de escalado automático, como del escalado elástico integrado en servicios nativos de la nube como Amazon S3 y DynamoDB, el escalado es una parte esencial de la nube. La creación de una infraestructura escalable es una de las principales razones por las que la gente se pasa a la nube en primer lugar.

Pero gran parte de esta escalabilidad automatizada requiere el lanzamiento de nuevas instancias de servidor de forma rápida y sin complicaciones, lo que nos lleva a la siguiente automatización.

Automatización #2. Aprovisionamiento de servidores

En la época anterior a la nube, el aprovisionamiento de un nuevo servidor podía llevar días o semanas. La automatización en la nube permite el aprovisionamiento de una instancia de servidor totalmente funcional y operativa, con todo el software y los servicios necesarios instalados y en funcionamiento, en cuestión de minutos. El aprovisionamiento automatizado de servidores no solo es clave para el autoescalado, sino también para las infraestructuras de autorreparación (otra forma de automatización de la nube). Terminar una instancia de servidor que falla o está en peligro, y dejar que la automatización la sustituya por una nueva instancia de servidor, cambia la forma en que se resuelven los problemas en la nube. Esta capacidad es fundamental para mejorar el MTTR (tiempo medio de resolución) de muchos tipos de problemas y errores.

El aprovisionamiento automatizado de servidores funciona de forma muy parecida, tanto si se lanzan nuevas instancias de máquinas virtuales en un servicio informático como Amazon EC2, como si se lanzan nuevas instancias de contenedores en un entorno Kubernetes como Google Kubernetes Engine. En cualquier caso, la automatización mejora tanto la velocidad como la fiabilidad a la hora de lanzar, escalar y reparar instancias de servidor, lo cual es fundamental para la mayoría de las aplicaciones en la nube.

Otra ventaja del aprovisionamiento automatizado de servidores es la mejora de la disponibilidad. Automatizar el aprovisionamiento significa que un número menor de servidores grandes puede ser fácilmente sustituido por un número mayor de servidores más pequeños. Este modelo puede mejorar drásticamente la disponibilidad de una aplicación, reduciendo el impacto de las fallas.

Pero el aprovisionamiento automatizado de servidores solo funciona si el resto de la infraestructura necesaria para el funcionamiento de los servidores también puede configurarse rápida y fácilmente. Esto nos lleva a la siguiente automatización.

Automatización #3. Creación de infraestructura

El aprovisionamiento automático de sus servidores no es, en sí mismo, suficiente para que su aplicación en la nube esté en funcionamiento y sirva a los usuarios. También debe aprovisionar sus equilibradores de carga, firewalls, segmentos de red, bases de datos y cualquier otro servicio del que dependa su aplicación, como colas y cachés. Toda la infraestructura de apoyo debe ser instalada, configurada y conectada a su aplicación antes de que sea completamente funcional.

Todo este aprovisionamiento puede llevar bastante tiempo si se hace manualmente. Si la implementación se realizara en un centro de datos local, la configuración de todos los componentes necesarios podría llevar días o más. Sin embargo, en la nube, una técnica de automatización conocida como infraestructura como código (IaC, por sus siglas en inglés) le permite aprovisionar la infraestructura de su aplicación mediante llamadas a las API.

IaC le permite especificar cómo quiere que se configure su infraestructura en el código fuente, a menudo un archivo JSON o YAML, que puede gestionarse mediante sistemas tradicionales de control de versiones de software (como Git). A continuación, se toma la configuración de la infraestructura codificada, y se pasa por una herramienta que automáticamente aprovisionará, configurará y conectará sus componentes de infraestructura en una red de trabajo.

Hay muchas herramientas disponibles que realizan este nivel de automatización de la infraestructura de la nube. Dos herramientas populares son Terraform de HashiCorp y CloudFormation de AWS.

La infraestructura como código proporciona beneficios únicos a su proceso de aprovisionamiento de infraestructura, incluyendo el control y la aprobación de los cambios, el seguimiento de los mismos y la reutilización del código de la infraestructura. La infraestructura como código solo es posible en una nube o en un centro de datos similar a la nube, donde las API de infraestructura permiten la creación automatizada de infraestructura.

Los arquitectos de la nube deben aprovechar las herramientas de IaC para crear patrones de nube fiables, seguros y repetibles para el aprovisionamiento de la infraestructura. Los beneficios son difíciles de exagerar.

La configuración automatizada de la infraestructura basada en la gestión del código nos lleva a la siguiente automatización.

Automatización #4. Despliegue de código

Las canalizaciones automatizadas de despliegue de código no son exclusivas de la nube. Pero dado el gran uso de otros tipos de automatización, los despliegues de código automatizados son una extensión natural para las aplicaciones habilitadas para la nube, y los arquitectos de la nube confían mucho en ellos.

Uno de los métodos más populares de despliegue de código automatizado es la canalización CI/CD. CI/CD, o integración continua/entrega continua, es un modelo que permite que los despliegues de código se apliquen automáticamente a las aplicaciones de producción basándose en el código comprobado en un sistema de control de versiones de software (de nuevo, como Git). Dependiendo de la aplicación y de las políticas de la empresa, los despliegues automatizados pueden programarse (por ejemplo, diariamente o cada hora), o activarse cada vez que se realice un cambio en la base de código y esté disponible para su despliegue.

Hay muchas herramientas disponibles para permitir el despliegue automatizado de código. La lista incluye herramientas como Jenkins, Bamboo, GitLab, CircleCI y AWS CodeDeploy. Cada una de ellas funciona de forma diferente, y el arquitecto de la nube debe elegir la estrategia de automatización adecuada para satisfacer las necesidades de la organización de desarrollo y del negocio. Sin embargo, prácticamente todas las aplicaciones sofisticadas con arquitectura en la nube utilizan alguna forma de despliegue de código automatizado. La suya también debería hacerlo.

Automatización #5. Servicios nativos en la nube

A menudo se pasa por alto como tipo de automatización el escalado dinámico automatizado que se incorpora a muchos servicios en la nube. Los servicios de cola en la nube (como Amazon Simple Queue Service), el almacenamiento de datos en la nube (como Amazon S3) y las bases de datos en la nube (como Amazon DynamoDB) dependen en gran medida de la automatización para gestionar las necesidades de escalado de las aplicaciones dinámicas que los utilizan.

Los arquitectos de la nube a menudo prefieren utilizar un almacén de datos como S3 frente a la creación de su propio almacén de datos a partir del almacenamiento de unidades locales en instancias informáticas (por ejemplo) porque es simple, seguro, fiable, fácil de integrar y automático en su funcionalidad. Lo mismo puede decirse de muchos otros servicios que ofrecen las nubes públicas. Al utilizarlas, se aprovecha una potente automatización que tiene lugar en segundo plano.

La nube es sinónimo de automatización

La automatización es una de las características que definen a la nube. Es uno de los elementos que distingue a la nube del centro de datos tradicional. Por supuesto que puede ejecutar su aplicación en la nube sin aprovechar la automatización, y muchos lo hacen, pero se están perdiendo. Porque la automatización es el camino hacia una mayor consistencia, fiabilidad, seguridad, escalabilidad y capacidad de respuesta a las necesidades de su negocio.

Levantar y trasladar una aplicación local a la nube "tal cual" es una migración relativamente sencilla y directa, y normalmente no necesita un arquitecto de la nube capacitado para implementarla. Pero una aplicación de este tipo se pierde la mayoría de las ventajas de funcionar en la nube. La construcción de una aplicación verdaderamente habilitada para la nube requiere un arquitecto de la nube, para aprovechar todo lo que la nube puede ofrecer. Y prácticamente cualquier aplicación con arquitectura de nube hará un gran uso de la automatización.

Un buen arquitecto de la nube permitirá, ampliará, apoyará y fomentará el uso de la automatización en todas las aplicaciones basadas en la nube. En pocas palabras, un buen arquitecto de la nube automatizará todo lo posible. Se sienten impulsados por el poder de la automatización disponible en la nube, y disfrutan utilizando estas automatizaciones de forma única e interesante. De eso están hechas las implementaciones de aplicaciones más exitosas.

Lee Atchison es un reconocido líder de opinión en cloud computing y modernización de aplicaciones. Con más de tres décadas de experiencia en desarrollo, arquitectura, escalado y modernización de productos, Lee ha trabajado en Amazon, Amazon Web Services (AWS), New Relic y otras organizaciones de aplicaciones modernas. Es ampliamente citado en muchas publicaciones y ha sido un orador destacado en todo el mundo. El libro más reciente de Lee se llama Architecting for Scale (O'Reilly Media).

Otros artículos del autor: