Artículos

Arquitectura
_
‘cloud’
_
para
_
microservicios,
_
un
_
trabajo
_
de
_
equipos

Transformación digital

Desarrollar aplicaciones ‘cloud’ requiere dominar arquitecturas de microservicios, con un equipo de programadores altamente especializados que esté en armonía con el resto de departamentos de la empresa.

Todavía recuerdo cuando aterricé en mi primer departamento informático. Era de una conocida empresa cerámica. Acababan de implantar BAAN, si es que alguna vez aquellos gigantescos ERPs acababan de implantarse. Da fe de esto que el consultor jefe se quedó en plantilla de la empresa, para ir ajustando el sistema decían. Casi 20 años después nada es igual.

Aquellas grandes aplicaciones eran monolíticas, estaban diseñadas para una escalabilidad predecible, contaban con una potente base de datos relacional, con procesamiento sincronizado y en racks locales. Se actualizaban ocasionalmente, podía estar toda una noche en ello porque cada vez que lo hacían había un gran volumen de mejoras, y la administración era prácticamente manual.

La aparición de la nube lo ha cambiado todo. Las aplicaciones se descomponen en servicios menores y descentralizados. Estos servicios se comunican a través de API o mediante el uso de eventos o de mensajería asincrónica. Las aplicaciones se escalan elásticamente, horizontalmente, agregando nuevas instancias, tal y como exigen las necesidades. Se combinan tecnologías distintas de almacenamiento y el procesamiento es asíncrono. Las actualizaciones son frecuentes y la administración automatizada.

Y eso lleva implícitas la toma de muchas decisiones. Las tres decisiones básicas tienen que ver con:

  • El modelo de hospedaje o servicio de proceso para los recursos informáticos en los que las aplicaciones se ejecutarán. Microsoft Azure, Amazon Web Services o Google Cloud se han convertido en los referentes en este campo, aunque hay veces que debemos recurrir a otras soluciones de hospedaje.
  • Definir cómo será el almacenamiento de datos. En este sentido se ha acuñado la llamada «persistencia políglota», es decir usar distintas bases de datos en función de su tipo o de cómo vayamos a utilizar los datos aunque reporten finalmente a una misma aplicación.
  • La elección de un servicio de mensajería, que generará las comunicaciones asíncronas.

Contar con un socio estratégico con la experiencia de Cuatroochenta, que nos oriente en este campo, es un valor añadido tanto para la gerencia como para los departamentos TI, pues determinará muchos aspectos del diseño de posteriores aplicaciones.

Otra de las decisiones que hay que tomar cuando damos el salto a la nube es el estilo de arquitectura con el que vamos a implementar nuestra aplicación. Y si hay un estilo que se ha popularizado es el de microservicios. En esta arquitectura una aplicación se compone de muchos servicios pequeños e independientes, distribuidos, cada uno de los cuales da solución a una funcionalidad concreta. Y todas estas funcionalidades independientes se integran de forma flexible mediante una API.

Sin embargo, hay ciertos retos a abordar pues si bien es cierto que cada servicio es mucho más sencillo y flexible en cuanto a desarrollo, hay que integrarlos todos ellos de forma armoniosa, teniendo en cuenta que esta arquitectura permite equipos diferentes trabajando con lenguajes diferentes, distintas bases de datos para cada servicio y filosofías diferentes. Por eso es conveniente definir unos estándares para todo el proyecto sin lastrar la flexibilidad que proporciona esta arquitectura.

Sin duda, tener una cultura de DevOps consolidada ayudará a que el usuario final tenga delante de sí una aplicación eficaz en su funcionamiento. Un mal desarrollo puede generar problemas en la integridad de los datos (que pueden ser independientes en cada servicio), o una latencia demasiado alta debido a una excesiva cadena de dependencia del servicio (un servicio va llamando a otro y así sucesivamente, de forma que puede producirse cierta congestión si su diseño no es óptimo). Hay que tener en cuenta también, en cuanto a la dependencia de servicios, que la actualización de uno de ellos no debe influir en la funcionalidad del resto por lo que el control de versiones es un aspecto muy importante.

La agilidad que permite esta arquitectura hace que la administración de los servicios sea uno de los puntos fuertes, desde actualizar un servicio hasta añadir nuevas características, con lo que la escalabilidad es otro de sus puntos fuertes. En Cuatroochenta usamos Kubernetes como orquestador para empaquetar una mayor densidad de servicios por host, aumentando así la eficacia en el uso de recursos.

Con esta filosofía en Cuatroochenta hemos elaborado aplicaciones como la Calculadora Butech, para la filial del Grupo Porcelanosa del mismo nombre, una app que permite determinar la cantidad de materiales cerámicos necesarios para el desarrollo de proyectos de arquitectura. Y también hemos participado en el desarrollo de la transformación digital de una conocida constructora de obra civil, para la que hemos desarrollado una aplicación web mediante la que gestionar eficazmente toda la documentación referente a las subcontratas con las que trabaja.

Para nosotros lo más importante es que cada parte de la empresa haga su trabajo como si fuera un microservicio al servicio de un todo:

  • Business Analysis determina con el cliente cuál es la mejor solución marcando unos objetivos claros, para personalizar el desarrollo con la metodología más adecuada: Scrum, Agile, Critical Path Method (CPM), Critical Chain Project Management (CCPM).
  • Diseño aplica la perspectiva omnicanal, basada en la experiencia alcanzada con el feedback de los alrededor de cinco millones de personas usuarias de las aplicaciones desarrolladas por Cuatroochenta.
  • Solo en el caso de que las herramientas propias o de terceros no se adapten, desarrollamos una aplicación cloud a medida, basada en lo anteriormente explicado o en cualquier otra arquitectura que el cliente pueda necesitar
  • La aplicación se pone a prueba por un equipo de beta-testing con tests de estrés, comprobación de rutas y de cumplimiento de los requerimientos y diseño del proyecto.
  • Es entonces cuando nuestro equipo de ciberseguridad se encargará de las auditorías de seguridad pactadas con el cliente.

Hace menos de dos años este artículo hubiera sido diferente, sobre todo porque el mundo de la programación era un poco diferente, quizás esta es una de las cosas que hace diferente a Cuatroochenta. La seguridad que tienen nuestros clientes de que siempre les aportamos las soluciones más avanzadas para evolucionar con ellos hacia la transformación digital.