¿Qué es la nube nativa? La forma moderna de desarrollar software

 

La computación nativa en la nube aprovecha muchas técnicas modernas de desarrollo de software, incluidos microservicios, contenedores, CI/CD y metodologías ágiles.

El término “computación nativa de la nube” ha surgido como un cajón de sastre para las diversas herramientas y técnicas que requieren los desarrolladores de software para crear, implementar y mantener aplicaciones de software modernas en la infraestructura de la nube. Aquí definimos el término, examinamos el panorama nativo de la nube e identificamos algunas de las ventajas y desventajas de volverse nativo de la nube.

Definición nativa de la nube

Cloud-native es un enfoque moderno para crear y ejecutar aplicaciones de software que aprovecha la flexibilidad, la escalabilidad y la resiliencia de la computación en la nube. Cloud-native abarca las diversas herramientas y técnicas utilizadas por los desarrolladores de software hoy en día para crear aplicaciones para la nube pública, a diferencia de las arquitecturas tradicionales adecuadas para un centro de datos local.

El enfoque nativo de la nube para crear y ejecutar software fue iniciado por un grupo de empresas comúnmente conocidas como “nacidas en la nube”, como los gigantes de transmisión Netflix y Spotify, la empresa de transporte compartido Uber y la plataforma de reserva de alojamiento Airbnb. Desde entonces, el enfoque nativo de la nube ha sido adoptado por otras empresas que buscan una agilidad digital similar y una ventaja competitiva disruptiva.

La Cloud Native Computing Foundation (CNCF) define la nube nativa de manera un poco más restringida, centrándose en la contenedorización de aplicaciones, donde las aplicaciones se dividen en microservicios y se empaquetan en contenedores livianos para implementarse y organizarse en una variedad de servidores.

En las propias palabras de CNCF: “Las tecnologías nativas de la nube permiten a las organizaciones crear y ejecutar aplicaciones escalables en entornos modernos y dinámicos, como nubes públicas, privadas e híbridas”.

El desarrollo de aplicaciones nativas de la nube generalmente incluye combinar microservicios , plataformas en la nube , contenedores , Kubernetes , infraestructura inmutable, API declarativas y tecnología de entrega continua con técnicas como desarrollo y metodología ágil .

 

Paisaje nativo de la nube

Este cambio en las técnicas populares de desarrollo de software ha visto emerger un nuevo panorama de herramientas predominantemente de código abierto. La CNCF mantiene una gráfica interactiva de este ecosistema .

Hay cuatro capas en la computación nativa en la nube que es importante comprender:

  • La capa de definición y desarrollo de la aplicación. La capa superior de la pila nativa de la nube se centra en las herramientas utilizadas por los desarrolladores para crear aplicaciones, como bases de datos, sistemas de mensajería, imágenes de contenedores y canalizaciones de integración continua y entrega continua (CI/CD).
  • La capa de aprovisionamiento. La capa de aprovisionamiento de la pila nativa de la nube incluye todo lo necesario para construir y proteger el entorno donde se ejecutará una aplicación, idealmente de manera repetible. En el mundo nativo de la nube, esto generalmente implica tratar la infraestructura como código, almacenar imágenes en un repositorio, automatizar compilaciones y abordar las necesidades de seguridad de las aplicaciones con escaneo de vulnerabilidades, administración de claves y políticas y herramientas de autenticación.
  • La capa de tiempo de ejecución. La capa de tiempo de ejecución se refiere a todo lo relacionado con la ejecución de una aplicación nativa de la nube, como el tiempo de ejecución del contenedor, que aún tiende a ser Docker, así como el almacenamiento y las redes .
  • La capa de orquestación y gestión. La capa de orquestación y administración reúne las herramientas necesarias para implementar, administrar y escalar aplicaciones en contenedores, incluidas la orquestación y la programación. En la mayoría de los casos, eso significa Kubernetes, así como descubrimiento de servicios, proxy de servicios, puerta de enlace API y malla de servicios.

Fuera de estas capas también es importante implementar prácticas de observabilidad , para que todos estos servicios sean monitoreados de manera efectiva. Algunas organizaciones también optan por reunir su pila en una plataforma de desarrollo interna de autoservicio o comprar una plataforma como servicio (PaaS) de un proveedor para facilitar la adopción por parte de los desarrolladores.

 

Las ventajas de las arquitecturas nativas de la nube frente a las locales

El desarrollo de aplicaciones nativas de la nube requiere una arquitectura muy diferente a las aplicaciones empresariales tradicionales, que normalmente se ejecutan en un centro de datos local. Estas son algunas diferencias clave y las ventajas que ofrecen las aplicaciones nativas de la nube sobre los modelos tradicionales de desarrollo de aplicaciones.

Idiomas. Las aplicaciones locales escritas para ejecutarse en los servidores de la empresa tienden a estar escritas en lenguajes tradicionales, como C/C++, C# y Enterprise Java . Es más probable que las aplicaciones nativas de la nube estén escritas en un lenguaje centrado en la web, como HTML, CSS, Java, JavaScript, .NET, Go , Node.js , PHP, Python y Ruby. Trabajar con lenguajes y plataformas modernos puede ayudar cuando se trata de atraer a los mejores ingenieros para que trabajen en su organización.

Actualización. Las aplicaciones nativas de la nube están diseñadas para ser altamente disponibles, resistentes y actualizables regularmente, mientras que las aplicaciones locales generalmente se actualizan una o dos veces al año utilizando una metodología de cascada. La capacidad de actualización de la computación nativa en la nube proporciona un impulso de productividad para que los equipos de desarrollo se centren en su ventaja competitiva y ofrezcan nuevas funciones a los clientes con más frecuencia que antes.

Elasticidad. Las aplicaciones nativas de la nube generalmente aprovechan la elasticidad de la nube flexionando el consumo según la demanda, mientras que una aplicación local requeriría el aprovisionamiento físico de infraestructura adicional para escalar de manera efectiva. Esto también tiene implicaciones de costos, ya que la nube le permite pagar por lo que usa y evitar el costoso aprovisionamiento excesivo de su propia infraestructura, al menos en teoría .

MultitenancyUna aplicación nativa de la nube no tiene problemas para trabajar en un espacio virtualizado y compartir recursos con otras aplicaciones mediante un modelo Multitenant. Esto trae un claro impulso de eficiencia a los equipos de desarrollo.

Falta del tiempo. La nube ofrece una mayor redundancia debido a la escala y la distribución geográfica de los centros de datos administrados por los proveedores de la nube de hiperescala, por lo que las interrupciones se pueden administrar mejor al redirigir rápidamente el tráfico a otra región y evitar el costoso tiempo de inactividad.

Automatización. Las técnicas nativas de la nube abren una gran cantidad de oportunidades de automatización para que los ingenieros construyan una vez y pasen a otros desafíos más apremiantes.

Apátrida. Las aplicaciones nativas de la nube tienden a no tener estado, ya que no transfieren los datos guardados de una sesión a otra. Este modelo abre la oportunidad de escalar fácilmente a través de múltiples servidores, almacenar en caché más fácilmente para aumentar el rendimiento, usar menos almacenamiento y evitar el temido bloqueo del proveedor al no estar conectado a un servidor específico.

Desafíos nativos de la nube

Intentar levantar y cambiar una aplicación local existente para que sea nativa de la nube sin hacer desafíos arquitectónicos es un error común, pero rediseñar algo para la nube también es un desafío de ingeniería importante en sí mismo.

Encontrar la combinación de habilidades adecuada para hacer esto, adaptarse a un modelo de seguridad centrado en la nube y administrar el perfil de costos cambiante de un entorno de nube siguen siendo desafíos clave para las organizaciones que buscan volverse nativas de la nube.

Aún así, los desarrolladores deben buscar adoptar la nube nativa como un principio organizativo, ya sea creando nuevas aplicaciones para la nube o dividiendo las aplicaciones monolíticas existentes en microservicios para que se adapten mejor a un entorno de nube.

Esto requerirá un cambio de mentalidad significativo que se aleje de las implementaciones en cascada tradicionales hacia principios de desarrollo más ágiles, como el desarrollo de productos mínimos viables (MVP), la aceptación de la automatización, las pruebas multivariadas, la iteración rápida, la observabilidad y el trabajo en estrecha colaboración con el equipo de operaciones en un modelo de desarrollo.

 

Fuente de información: cio.com.mx



 

Descargar archivo en PDF

Leave a reply