Aunque en mi libro "La Carrera Digital" clasifico aún el cloud computing como una tendencia, más que como una realidad madura, lo cierto es que su nivel de implantación y popularización es cada vez mayor y se va acercando a la madurez.
Tanto es así que, por lo que he descubierto, ya existe incluso algún modelo de madurez. Me estoy refiriendo en este caso al modelo que se propone en el libro 'Cloud Native Architectures' de Tom Laszewski, Kamal Arora, Erik Farr y Piyum Zonooz, que denominan, simplemente, Cloud Native Maturity Model (CNMM) y que se ilustra en la figura inferior:
Se trata de un modelo para las aplicaciones cloud native que son aquellas que aprovechan todas las potencialidades y características de cloud.
El modelo considera tres ejes y, a su vez, dentro de cada eje, existen tres niveles. Enunciados brevemente los ejes y sus elementos son los siguientes:
- Eje 1: Servicios cloud nativos un eje centrado, como resulta evidente, en la disponibilidad y uso de servicios en la nube. En este eje distingue tres niveles
- Bloques constructivos (building blocks) hablaríamos de componentes básicos referidos sobre todo a infraestuctura incluyendo aspectos como capacidad de computación, almacenamiento, monitorización o networking.
- Oferta de servicios gestionados Se trata de servicios que cubren funcionalidades básicas, poco diferenciadas e incluso poco apreciadas cuando se hacen correctamente, pero que son imprescindibles. En este nivel se incluyen elementos como bases de datos, servicios de directorio, balanceadores de carga, sistemas de 'caché', repositorios de código, herramientas de administración, etc
- Servicios gestionados avanzados en la nube Se incluyen los servicios más avanzados, incluyendo aquellos que adoptan el modelo serverless o los que ofrecen funcionalidad de machine Learning.
- Eje 2: Diseño centrado en la aplicación En este eje se trata de hacer un diseño adecuado de las aplicaciones que saquen el máximo partido a las capacidades de cloud computing. De nuevo, nos encontramos con tres niveles
- Los 12 factores de una aplicación Se trata de aplicar los principios definidos en la metodología de los doce factores, descrita en 2011, que aplica a todo tipo de lenguajes y uso de servicios y que proporciona una guía para conseguir aplicaciones escalables, con una interacción simple con el entorno y que permiten una rápida incorporación de nuevos desarrolladores.
- Microservicios Uso del concepto de microservicios, una evolución de SOA en que se pone énfasis en unos servicios más discretos y aún menos acoplados.
- Diseño cloud nativo incluyendo consideraciones sobre instrumentación (monitorización y medida), seguridad, paralelización, resiliencia o eventos.
- Eje 3: Automatización Se trata de un aspecto operacional pero muy importante: la automatización de las tareas de despliegue, monitorización y gestión. Se habla, de nuevo, de tres niveles:
- Despliegue, configuración y gestión se centra en las tareas de provisión y configuración propiciando el concepto CICD ('Continuous Integration, Continuous Deployment') tan propio de filosofías DevOps.
- Monitorización, cumplimiento normativo y optimización Se trata de emplear servicios que proporcionan capacidades de monitorización, y automatizar tareas como, por ejemplo, aumentar automáticamente la capacidad ante un pico de demanda. También se menciona el uso intensivo del logging como fuente para la realización de análisis.
- Analítica predictiva, Inteligencia Artificial y Machine Learning En el nivel más avanzado se trataría de aplicar técnicas de inteligencia artificial y Machine Learning para, a partir de información como la obtenidos a partir de los propios logs, realizar predicciones sobre cómo ciertos eventos podrían afectar al sistema y tomar las medidas oportunas.