El desarrollo de software empezó utilizando una arquitectura monolítica que agrupaba todas sus funciones y servicios dentro de una base única y centralizada de código. Este tipo de arquitectura ha ido quedando desfasada, sobre todo al crecer los proyectos en complejidad, número de desarrolladores, usuarios y cargas de trabajo. Por eso en la actualidad se tiende a utilizar una estructura basada en microservicios, que es escalable y facilita el trabajo colaborativo de los desarrolladores.
La tendencia actual en el desarrollo de software adopta la cultura DevOps y el uso de contenedores, haciendo necesario construir una aplicación de forma distribuida, permitiendo que los distintos componentes puedan ser desplegados de forma independiente.
A continuación hablaremos de qué es la arquitectura monolítica y la arquitectura basada en microservicios, viendo cuándo hay que implementarlos y cómo se migra a microservicios.
Arquitectura monolítica
Los primeros programas informáticos utilizaban una arquitectura monolítica, agrupando todo lo relacionado con el sistema dentro del mismo proyecto. Este tipo de arquitectura se caracteriza por:
- Los programas son fáciles de desarrollar.
- El despliegue y la ejecución del software son muy sencillos.
- El costo de desarrollo es bajo en comparación con otras arquitecturas.
Los problemas de este tipo de arquitectura, como la escalabilidad o la dificultad para los desarrolladores (necesitan entender todo el código de la aplicación) han hecho que este tipo de desarrollo de software deje de ser utilizado en muchos proyectos (aunque su sencillez y bajo coste hace que siga siendo interesante para ciertos proyectos con bajos requerimientos).
Arquitectura basada en microservicios
Construir una aplicación de manera distributiva es el principal objetivo de una arquitectura basada en microservicios. Cada componente de la aplicación debe ser independiente de los otros, permitiendo que sean desplegados por sí mismos.
La comunicación o conexión entre los distintos módulos de la aplicación se realizan a través de API, lo que facilita que cada uno de estos módulos pueda contar con su propio grupo de desarrolladores, eliminando la necesidad de que cada desarrollador tenga que comprender todo el código de la aplicación o de otros módulos de la misma.
Cada uno de los servicios que componen una arquitectura basada en microservicios se puede desarrollar, implementar y escalar sin que afecte el funcionamiento del resto de servicios. Esta autonomía es una de las características principales de este tipo de arquitectura.

Beneficios de una arquitectura basada en microservicios
Trabajar con una arquitectura basada en microservicios a la hora de desarrollar una aplicación aporta una serie de beneficios como:
- El despliegue independiente de cada uno de los componentes de la aplicación.
- Facilita las actualizaciones al no tener que parar todo el proyecto, solo el módulo a actualizar.
- Permite desarrollar utilizando múltiples lenguajes de programación, lo que aporta ventajas como velocidad, rendimiento, reducción de costes, elección de distintas herramientas de desarrollo, etc.
- Escalabilidad por módulos, permitiendo incrementar las capacidades de cómputo del módulo que mayor carga soporte o mayor demanda tenga (al poderse instalar en distintos servidores los módulos de la aplicación).
- Permite realizar una entrega continua de software a los clientes de una forma mucho más ágil.
- Reduce los errores de programación y facilita los procesos de pruebas y test.
DevOps, Contenedores para microservicios
Trabajar con microservicios implica tener mayor eficiencia, flexibilidad y capacidad de crecimiento. Sin embargo, la arquitectura basada en microservicios es un reto importante a la hora de ser implementada. Las operaciones son más complejas al tener un gran número de módulos y la creación y desarrollo de la infraestructura consume más tiempo y recursos.
Para solucionar este problema, la cultura DevOps proporciona agilidad en el proceso de desarrollo, con prácticas de desarrollo ágil y enfoque en el producto.
L’aprovisionament ràpid de recursos es facilita amb l’ús de contenidors com Docker i orquestradors com Kubernetes o Swarm si s’han de gestionar un nombre elevat de contenidors. Per exemple, gràcies a l’ús de contenidors i orquestradors, els servidors web tradicionals s’han canviat per contenidors virtuals més petits i adaptables.
Cuándo implementar microservicios
Muchos desarrolladores se ven tentados a utilizar arquitecturas monolíticas debido a su sencillez y bajo coste. Sin embargo, si el software tiene éxito y crece, este tipo de arquitectura no será eficiente, y creará serios problemas de implementación, actualización, mantenimiento y escalabilidad.
Llegado un punto de crecimiento la arquitectura monolítica será insuficiente para responder a las demandas de la aplicación (de proceso, número de usuarios, carga, desarrolladores, etc.).
Teniendo en cuenta los dos siguientes enfoques se puede considerar cuándo es necesario implementar microservicios:
- Cuando una aplicación monolítica tiene éxito y crece, necesitando ser escalada por necesitar más rendimiento o espacio. En estos casos se puede optar por crear la aplicación de microservicios desde cero o extender los componentes modulares con un mejor diseño de la aplicación monolítica.
- Cuando el enfoque inicial de la aplicación tenga un mejor desarrollo con una arquitectura de microservicios (si se prevé que la aplicación tenga un gran volumen de tráfico o usuarios, se dispone de un equipo de desarrolladores, se van a utilizar herramientas avanzadas, la modularidad es un aspecto importante, se necesita una entrega continua, y otros enfoques en microservicios).
Cómo migrar a microservicios
Para realizar una migración a microservicios, las empresas deben realizar un estudio y análisis de partes de la lógica de su negocio que puedan ser separadas e identificar partes de código que estén consumiendo muchos recursos. Así se podrá determinar qué solución es la más adecuada a las necesidades del proyecto.
Es habitual que se migren a microservicios muchas de las funciones específicas de un negocio y que habitualmente se realizaban con una aplicación con estructura monolítica, como aplicación de control y gestión de inventarios, o el software de facturación.
Cuando una empresa decide migrar a microservicios lo habitual es que recurra a una empresa externa especializada y con experiencia en el sector, como Ilimit, para poder realizar el proceso de forma rápida y efectiva, sin que afecte a los distintos procesos de negocio de la empresa.
Dependiendo del tipo de proyecto, será mejor optar por una arquitectura monolítica o una basada en microservicios. Cuando los proyectos implican una alta carga y demanda, la participación de distintos desarrolladores y el uso del software por una cantidad elevada de usuarios, la arquitectura de microservicios es la más adecuada por todos los beneficios que aporta.