ICM / cloud / Aplicación Cloud Native ¿qué es y cómo funciona?

Aplicación Cloud Native ¿qué es y cómo funciona?

4 octubre 2021 | Lluis Pons

La definición de nube nativa hace referencia al uso de la nube para solventar cualquier desafío que presente el negocio. En esta entrada, hablamos sobre este término y explicamos cómo podemos desarrollar una aplicación cloud native.

El objetivo de la nube nativa o “Cloud Native” es crear, distribuir y ejecutar aplicaciones escalables en ambientes dinámicos en nubes públicas, privadas o híbridas a través de contenedores, mallas de servicios, microservicios, APIS… ¿Cómo? Mediante técnicas de automatización del ciclo de vida de tal aplicación.

Estas aplicaciones cloud native deben usar un modelo de desarrollo distribuido, dónde la principal premisa a seguir es que sean escalables, rápidas y con unos adaptables en cada momento oportuno para minimizar el coste.

Para conseguir estos objetivos es necesario aplicar el enfoque de la ingeniería de software. De este modo, el desarrollo se produce en ciclos cortos y libera parches, nuevas versiones … de la aplicación de una forma confiable en cualquier momento. En definitiva, lograr una entrega continua.

aplicación cloud native

Los equipos de DevOps son imprescindibles para ejecutar el despliegue continuo de una aplicación cloud native para que sea realizado con una calidad óptima. Los desarrolladores deberán trabajar con metodologías ágiles, como Scrum, programación extrema (XP) o Kanban, las tres más utilizadas. Para la creación y gestión de proyectos de aplicaciones, se utiliza una metodología de desarrollo  llamado “Twelve-Factor App”.

Qué puntos necesita cumplir la aplicación cloud native para conseguir el Twelve-Factor App

Se deberán conseguir estos doce puntos para obtener el Twelve FactorApp:

  1. Código Base: Código base sobre el que hacer un control de versiones y múltiples despliegues.
  2. Dependencias: Declarar y aislar explícitamente las dependencias.
  3. Configuraciones: Guardar la configuración en el entorno.
  4. Backing Services: Tratas los “Backing services” como recursos conectables.
  5. Construir, desplegar y ejecutar: Separar completamente la etapa de construcción de la etapa de ejecución.
  6. Procesos: Ejecutar la aplicación como uno o más procesos sin estado.
  7. Asignación de puertos: Publicar servicios mediante asignación de puertos.
  8. Concurrencia: Escalar mediante el modelo de procesos.
  9. Desechabilidad: Hacer el sistema más robusto intentando conseguir inicios rápidos y finalizaciones seguras.
  10. Paridad en desarrollo y producción: Mantener desarrollo, preproducción y producción tan parecidos como sea posible.
  11. Logs: Tratar los logs como una transmisión de eventos.
  12. Administración de procesos: Ejecutar las tareas de gestión / administración como procesos que se solo se ejecutan una zona vez

 

Asimismo, hoy en día existe una organización llamada CNCF Cloud Native Computing Foundation (cncf.io) que fomenta la neutralidad entre proveedores mediante código abierto.

La tecnología más desplegada para llegar a estos objetivos es el uso de contenedores junto con el orquestador de facto Kubernetes, que hemos hablado de él en artículos anteriores.