Que son los microservicios

Arquitectura de microservicios

Una arquitectura de microservicios aumenta la velocidad y la fiabilidad con la que se entregan las aplicaciones grandes y complejas. ¿Qué hace que un servicio sea un microservicio? Los microservicios no se definen por la forma en que están codificados, sino por cómo encajan en un sistema o solución más amplia. Los microservicios suelen tener un alcance más estrecho, centrado en hacer bien las tareas más pequeñas.

La mayoría de los sistemas de software se han construido tradicionalmente como una única aplicación monolítica. Los componentes y la funcionalidad están fuertemente acoplados, a diferencia del acoplamiento más flojo de los elementos en los microservicios o la arquitectura orientada a servicios. Las desventajas de mantener este enfoque son:

Los microservicios ofrecen mayor flexibilidad que un sistema monolítico tradicional. No hay un camino único para desarrollar microservicios, pero hay directrices generales para gestionar los datos dentro de las arquitecturas de microservicios. La complejidad de la gestión de datos que lleva a un equipo de desarrollo a considerar los microservicios puede provenir de muchas fuentes, entre ellas:

SOA es más adecuado para entornos de aplicaciones empresariales grandes y complejos que requieren la integración con muchas aplicaciones heterogéneas. Los microservicios, en cambio, son más adecuados para sistemas más pequeños y bien divididos, basados en la web, lo que da un control mucho mayor a los desarrolladores. Separar las aplicaciones en partes más pequeñas no es una idea nueva: la arquitectura orientada a servicios (SOA) precedió a los microservicios.

Microservicios wiki

El estilo de arquitectura de microservicios es una forma de construir una aplicación como un grupo de varios servicios. En pocas palabras, significa construir una aplicación utilizando muchos módulos o partes de una sola función. Cada módulo tiene una interfaz claramente definida y un funcionamiento previsto.

A medida que las organizaciones se alejaban de las arquitecturas monolíticas y se acercaban a las arquitecturas orientadas a los servicios en los primeros tiempos del desarrollo de aplicaciones de software empresarial, surgieron los microservicios. Esta evolución sigue siendo impulsada por las demandas multifacéticas de las empresas en todos los sectores.

A medida que la velocidad de desarrollo aumentaba, también lo hacía la necesidad de alejarse de las aplicaciones antiguas y disfuncionales. Estas unidades autónomas no podían cambiarse fácilmente, por lo que cualquier actualización o aumento de una aplicación era lento y afectaba a todo el sistema. Unos simples cambios en un fragmento de código podían suponer el redespliegue de toda una nueva versión del software.

Los microservicios resolvieron este problema al ofrecer la posibilidad de construir una aplicación como una colección de servicios, o partes, pequeños e independientes que podían actualizarse y cambiarse sin afectar a la totalidad del sistema.

Ejemplo de microservicios

Los microservicios son componentes de software pequeños y reutilizables que se desarrollan y despliegan de forma independiente, pero que se interrelacionan y funcionan al unísono para formar una aplicación completa. La arquitectura de una aplicación utilizando metodologías de microservicios es una alternativa moderna a la creación de una pieza monolítica de código para entregar una aplicación.

Mientras que las aplicaciones desarrolladas como una única y gran pieza de código son (conceptualmente) más fáciles de desplegar, hay muchas limitaciones en el enfoque arquitectónico monolítico. A medida que una base de código crece, se vuelve cada vez más difícil de entender y modificar. Los nuevos ingenieros, especialmente, no sólo tienen dificultades para comprender el trabajo anterior, sino que sus estilos de programación pueden diferir fundamentalmente. Esto se agrava con el tiempo, complicando aún más la implementación del software y degradando rápidamente la calidad general del código.

Para mitigar esta situación es necesario que grandes equipos de ingenieros trabajen en paralelo, ya que incluso el más mínimo cambio en el código podría afectar a otros colaboradores de alguna manera. Además, las pruebas requieren una nueva compilación completa del software, lo que exige que los grupos de ingenieros, que trabajan en componentes distintos, estén totalmente sincronizados. En el caso de las aplicaciones desplegadas, se requiere una actualización completa del servicio por cada pequeño cambio, lo que hace que la introducción de nuevas funciones sea un proceso extremadamente largo y laborioso. Este modo de funcionamiento también dificulta enormemente la adopción de nuevos enfoques de desarrollo continuo (DevOps). Además, es prácticamente imposible cambiar el marco de desarrollo subyacente, si se dispone de nuevas tecnologías.

Microservicios español

La arquitectura de microservicios, o simplemente microservicios, es un método distintivo de desarrollo de sistemas de software que trata de centrarse en la construcción de módulos de una sola función con interfaces y operaciones bien definidas. Esta tendencia se ha hecho popular en los últimos años, ya que las empresas buscan ser más ágiles y avanzar hacia un DevOps y pruebas continuas.

Los microservicios resuelven estos retos de los sistemas monolíticos siendo lo más modular posible. En su forma más simple, ayudan a construir una aplicación como un conjunto de pequeños servicios, cada uno de los cuales se ejecuta en su propio proceso y son desplegables de forma independiente. Estos servicios pueden estar escritos en diferentes lenguajes de programación y pueden utilizar diferentes técnicas de almacenamiento de datos. Si bien esto da lugar al desarrollo de sistemas que son escalables y flexibles, necesita un cambio de imagen dinámico. Los microservicios suelen estar conectados a través de APIs, y pueden aprovechar muchas de las mismas herramientas y soluciones que han crecido en el ecosistema de servicios web y RESTful. Probar estas APIs puede ayudar a validar el flujo de datos e información a través de su despliegue de microservicios.