Haz despegar tu negocio desarrollando aplicaciones Cloud Native

Con la llegada del cloud computing se han abierto nuevos modelos que, además de agilizar el aprovisionamiento de infraestructura y servicio, permiten a las compañías utilizar una tecnología que se adapta a sus necesidades y así pagar solamente por los servicios que utilizan en cada momento.

Este nuevo paradigma permite, además, hacer un uso “ilimitado” de recursos y servicios completamente gestionados por terceros, lo que posibilita que las compañías se centren en su negocio haciendo que la tecnología se convierta en una commodity.

Qué es Cloud Native

Cloud Native es una forma de trabajar que trata sobre cómo las aplicaciones son creadas y desplegadas, no dónde, explotando las ventajas del modelo de entrega que ofrece el cloud computing.

Los cuatro pilares sobre los que pivota Cloud Native son:

1. Devops

A lo largo de los últimos años hemos trabajado en escenarios en los que equipos de desarrollo y operaciones trabajan de forma aislada, en silos, haciendo que no haya una visión compartida sobre lo verdaderamente importante: el producto. Estos equipos, en numerosas ocasiones, tienen objetivos completamente distintos.

Para desarrollo, la prioridad es entregar los cambios en el producto. Para operaciones garantizar estabilidad en la infraestructura que permitan explotar estos productos, lo que termina derivando en silos y un fracaso en el desarrollo y puesta en producción del producto.

Con la inclusión del término Devops rompemos con esta barrera entre equipos de operaciones y desarrollo, compartiendo una visión y objetivos para que el producto que estamos desarrollando sea lo único importante para todo el equipo.

“DevOps permite entregar software más rápidamente, con mayor calidad, menor coste y una altísima frecuencia de releases”.

2. Continuous Delivery

Todavía siento escalofríos cuando, allá por el año 2002, tenía que apuntar en una libreta cada fichero que tocaba para desarrollar una nueva feature de un producto.

Y después poder identificar los que tenía que subir a mano a un FTP para posteriormente solicitar por mail al departamento de operaciones de la empresa X que los pusiera dentro del famoso directorio webapps de Weblogic.

Pero la cosa no acababa ahí, había que reiniciar el servidor de aplicaciones del entorno de desarrollo, que por cierto tenía un sistema operativo distinto a mi máquina de desarrollo (pero de eso hablaremos más adelante).

¡Alguna vez funcionaba a la primera!

Hoy en día no tiene sentido trabajar de forma manual. Todos los pasos en la construcción y despliegue de nuestro producto tienen que estar automatizados para así evitar errores humanos y agilizar el proceso de construcción y despliegue.

De esto trata Continuous Delivery. Es la forma de automatizar las tareas de construcción y despliegue, poner nuestros productos en producción en el menor tiempo posible, con el menor coste y con la máxima garantía de calidad.

3. Contenedores sobre PaaS

¿De verdad es necesario seguir escuchando “en mi máquina esto funciona” cuando no está funcionando en entornos productivos o de test?

Los contenedores son la respuesta a la pregunta anterior. Con contenedores podemos garantizar que un producto se ejecuta de la misma manera en cualquier entorno en el que se despliegue.

Simplificando mucho, es una vuelta de tuerca a la virtualización, ya que los diferentes contenedores comparten capas del mismo sistema operativo, haciendo que sean mucho más ligeros que una máquina virtual.

4. Microservicios

Si juntamos todo lo visto hasta ahora: Cloud, Continuous Delivery, Contenedores, Devops… podemos plantearnos la posibilidad de dar un paso más en el desarrollo de aplicaciones utilizando el patrón de microservicios para ir a una arquitectura distribuida.

Las grandes ventajas de utilizar este patrón son:

  • Gestión eficientes de recursos: nuestro sistema de microservicios escala automáticamente, ajustando el consumo en memoria y CPU a la demanda de nuestros microservicios en cada momento.
  • Desacoplamiento entre funcionalidades: cada microservicio cubre una única funcionalidad y lo hace bien.
  • Equipos Devops independientes y reducidos: un cambio en una funcionalidad completa no implica tener que modificar o sufrir por si introducimos un error en otra funcionalidad. Adicionalmente, y gracias a la granularidad reducida de los microservicios, hacen más eficiente el Continuous Delivery, reduciendo el Time To Market y garantizando la calidad del producto.

Es un patrón complejo no exento de retos que superar para implantarlo con éxito. Es imposible encontrar una bala de plata para estos retos que plantean el mercado y las compañías.

Afortunadamente, gracias a la experiencia y conocimientos, junto a patrones de diseño comunes y herramientas específicas, es posible sacar el máximo partido a esta arquitectura y obtener todos los beneficios anteriormente citados.

Los grandes actores del mercado han entendido que estos son los pilares sobre los que debe levantarse su tecnología para poder maximizar el rendimiento del negocio.

La pregunta no es tanto si debes apostar por cloud native, sino si vas a apostar ahora o lo harás tarde.

Soy un apasionado de la tecnología desde que entró en casa mi primer Amstrad CPC 6128. Tengo especial interés en hacer las cosas bien, siguiendo buenas prácticas en diseño y desarrollo de software, cuando cada uno de los componentes del equipo hace su trabajo lo mejor posible el resultado es asombroso. Últimamente ando cacharreando en Arquitecturas distribuidas basadas en microservicios y desarrollo de APIs REST.

Ver toda la actividad de Miguel Garrido

Escribe un comentario