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

El término "nativo de la nube" se usa mucho, especialmente por los proveedores de la nube. No solo eso, sino que incluso tiene su propia base: la Cloud Native Computing Foundation (CNCF), lanzada en 2015 por Linux Foundation.

Definición de 'nativo de la nube'

En el uso general, "nativo de la nube" es un enfoque para crear y ejecutar aplicaciones que aprovecha las ventajas del modelo de entrega de computación en la nube. “Nativo de la nube” trata sobre cómo se crean y despliegan las aplicaciones, no dónde. Implica que las aplicaciones viven en la nube pública, a diferencia de un centro de datos local.

El CNCF define "nativo de la nube" de manera un poco más estricta, en el sentido de usar una pila de software de código abierto para ser contenedor, donde cada parte de la aplicación se empaqueta en su propio contenedor, orquestada dinámicamente para que cada parte se programe y administre activamente para optimizar los recursos. utilización y microservicios orientados a aumentar la agilidad general y la capacidad de mantenimiento de las aplicaciones.

“Una aplicación nativa de la nube está diseñada específicamente para ejecutarse en la naturaleza elástica y distribuida requerida por las plataformas modernas de computación en la nube”, dice Mike Kavis, director gerente de la consultora Deloitte. “Estas aplicaciones están débilmente acopladas, lo que significa que el código no está cableado a ninguno de los componentes de la infraestructura, de modo que la aplicación puede escalar hacia arriba y hacia abajo según la demanda y adoptar los conceptos de infraestructura inmutable. Normalmente, estas arquitecturas se crean utilizando microservicios, pero ese no es un requisito obligatorio ".

En el caso de las aplicaciones nativas de la nube, la gran diferencia es cómo se construye, entrega y opera la aplicación, dice Andi Mann, defensor de tecnología en jefe de Splunk, un proveedor de servicios en la nube. "Aprovechar los servicios en la nube significa utilizar componentes ágiles y escalables como contenedores para ofrecer funciones discretas y reutilizables que se integran de manera bien descrita, incluso a través de los límites tecnológicos como multicloud, lo que permite a los equipos de entrega iterar rápidamente utilizando automatización y orquestación repetibles".

El desarrollo de aplicaciones nativas de la nube generalmente incluye devops, metodología ágil, microservicios, plataformas en la nube, contenedores como Kubernetes y Docker, y entrega continua; en resumen, todos los métodos nuevos y modernos de implementación de aplicaciones.

Debido a esto, realmente desea tener un modelo de plataforma como servicio (PaaS). No se requiere PaaS, pero facilita mucho las cosas. La gran mayoría de los clientes de la nube comienzan con la infraestructura como servicio (IaaS), que ayuda a abstraer sus aplicaciones del hardware subyacente. Pero PaaS agrega una capa adicional para abstraer el sistema operativo subyacente, por lo que puede concentrarse por completo en la lógica empresarial de su aplicación y no preocuparse por hacer llamadas al sistema operativo.

Vídeo relacionado: ¿Qué es el enfoque nativo de la nube?

En este video de 60 segundos, conozca cómo el enfoque nativo de la nube está cambiando la forma en que las empresas estructuran sus tecnologías, de la mano de Craig McLuckie, fundador y CEO de Heptio, y uno de los inventores de Kubernetes de código abierto.

Diferencias entre aplicaciones nativas de la nube y locales

El desarrollo de aplicaciones nativas de la nube requiere una arquitectura muy diferente a la de las aplicaciones empresariales tradicionales.

Idiomas

Las aplicaciones locales escritas para ejecutarse en servidores de la empresa tienden a estar escritas en lenguajes tradicionales, como C / C ++, C # u otro lenguaje de Visual Studio si se implementa en una plataforma de Windows Server y Java empresarial. Y si está en un mainframe, es probable que esté en Cobol.

Es más probable que las aplicaciones nativas de la nube estén escritas en un lenguaje centrado en la web, lo que significa HTML, CSS, Java, JavaScript, .Net, Go, Node.js, PHP, Python y Ruby.

Capacidad de actualización

Las aplicaciones nativas de la nube están siempre actualizadas y actualizadas. Las aplicaciones nativas de la nube siempre están disponibles.

Las aplicaciones locales necesitan actualizaciones y, por lo general, el proveedor las entrega mediante suscripción y requieren tiempo de inactividad mientras se instala la actualización.

Elasticidad

Las aplicaciones nativas de la nube aprovechan la elasticidad de la nube al usar más recursos durante un pico de uso. Si su aplicación de comercio electrónico basada en la nube experimenta un aumento en el uso, puede configurarla para usar recursos informáticos adicionales hasta que el aumento disminuya y luego apagar esos recursos. Una aplicación nativa de la nube puede adaptarse al aumento de recursos y escalar según sea necesario.

Una aplicación local no puede escalar dinámicamente.

Multi Alquiler

Una aplicación nativa de la nube no tiene problemas para trabajar en un espacio virtualizado y compartir recursos con otras aplicaciones.

Muchas aplicaciones locales no funcionan bien en un entorno virtual o no funcionan en absoluto y requieren un espacio no virtualizado.

Recursos conectados

Una aplicación local es bastante rígida en sus conexiones a los recursos de la red, como redes, seguridad, permisos y almacenamiento. Muchos de estos recursos deben estar codificados y se rompen si se mueve o cambia algo.

“La red y el almacenamiento son completamente diferentes en la nube. Cuando escuchas el término 'cambio de plataforma', ese suele ser el trabajo para adaptarse a los cambios en las tecnologías de redes, almacenamiento e incluso bases de datos para permitir que la aplicación se ejecute en la nube ”, dice Kavis de Deloitte.

Tiempo de inactividad

Hay una mayor redundancia en la nube que en las instalaciones, por lo que si un proveedor de la nube sufre una interrupción, otra región puede tomar el relevo.

Es posible que las aplicaciones locales estén preparadas para la conmutación por error, pero es muy probable que si el servidor deja de funcionar, la aplicación también lo haga.

Automatización

Gran parte de la nube está automatizada y eso incluye la gestión de aplicaciones. “Los beneficios de la entrega nativa de la nube, especialmente la velocidad y la agilidad, dependen significativamente de un sustrato de procesos confiables, comprobados y auditados que se ejecutan repetidamente según sea necesario mediante herramientas de automatización y orquestación en lugar de mediante la intervención manual”, dice Splunk's Mann. Los ingenieros deben buscar automatizar prácticamente cualquier cosa que hagan más de una vez para permitir la repetibilidad, el autoservicio, la agilidad, la escalabilidad y la auditoría y el control.

Las aplicaciones locales deben administrarse manualmente.

Diseño modular

Las aplicaciones locales tienden a tener un diseño monolítico. Descargan algo de trabajo a las bibliotecas, sin duda, pero al final es una gran aplicación con muchas subrutinas. Las aplicaciones nativas de la nube son mucho más modulares, con muchas funciones divididas en microservicios. Esto permite que se apaguen cuando no sean necesarios y que se implementen actualizaciones en ese módulo, en lugar de en toda la aplicación.

Apatridia

La naturaleza poco acoplada de la nube significa que las aplicaciones no están vinculadas a la infraestructura, lo que significa que no tienen estado. Una aplicación nativa de la nube almacena su estado en una base de datos o alguna otra entidad externa para que las instancias puedan ir y venir y la aplicación aún pueda rastrear en qué parte de la unidad de trabajo se encuentra la aplicación. “Esta es la esencia de los acoplamientos flexibles. No estar vinculado a la infraestructura permite que una aplicación se ejecute de una manera altamente distribuida y aún mantenga su estado independientemente de la naturaleza elástica de la infraestructura subyacente ”, dice Kavis.

La mayoría de las aplicaciones locales tienen estado, lo que significa que almacenan el estado de la aplicación en la infraestructura en la que se ejecuta el código. La aplicación puede romperse al agregar recursos del servidor debido a esto.

Los desafíos de la informática nativa de la nube

Uno de los grandes errores que cometen los clientes es intentar levantar y cambiar sus viejas aplicaciones locales a la nube, dice Mann. "Intentar tomar aplicaciones existentes, especialmente aplicaciones heredadas monolíticas, y moverlas a una infraestructura en la nube no aprovechará las características nativas de la nube esenciales".

En su lugar, debe buscar hacer cosas nuevas de nuevas maneras, ya sea colocando nuevas aplicaciones nativas de la nube en una nueva infraestructura de nube o rompiendo los monolitos existentes para refactorizarlos utilizando principios nativos de la nube desde cero.

También debe prescindir de sus antiguos métodos de desarrollador. El modelo en cascada ciertamente no funcionará, e incluso el desarrollo ágil podría no ser suficiente. Por lo tanto, debe adoptar nuevos enfoques nativos de la nube, como el desarrollo de un producto mínimo viable (MVP), las pruebas multivariadas, la iteración rápida y el trabajo en estrecha colaboración a través de los límites organizacionales en un modelo devops.

Existen muchos aspectos para ser nativo de la nube, incluidos los servicios de infraestructura, automatización / orquestación, virtualización y contenedorización, arquitectura de microservicios y observabilidad. Todo esto significa una nueva forma de hacer las cosas, lo que significa romper los viejos hábitos a medida que aprende las nuevas formas. Así que hazlo a un ritmo mesurado.

Obtenga más información sobre las tecnologías nativas de la nube relacionadas

  • Explicación de la plataforma como servicio (PaaS)
  • Multicloud explicado
  • Explicación de la metodología ágil
  • Mejores prácticas de desarrollo ágil
  • Devops explicado
  • Mejores prácticas de Devops
  • Microservicios explicados
  • Tutorial de microservicios
  • Explicación de los contenedores Docker y Linux
  • Tutorial de Kubernetes
  • Explicación de CI / CD (integración continua y entrega continua)
  • Mejores prácticas de CI / CD