¿Por qué Adoptar Microservicios?

Aunque se puede referir a microservicios como un concepto de arquitectura y diseño, no podemos omitir el hecho de que, de alguna forma, debemos definir su concepto. En Microservices Architecture, los autores se refieren a microservicios como “un componente independiente de implementación de alcance limitado que apoya la interoperabilidad a través de la comunicación basada en mensajes.”

Teniendo en cuenta estas definiciones, encontraremos el uso de mecanismos ligeros como recursos HTTP, donde se encuentran las APIs, que son el centro de una arquitectura de estos servicios. Pero debemos tener en cuenta que el hecho de que usamos APIs, y que tengamos muchas aplicaciones “pequeñas” no nos garantiza un éxito dentro de una adopción de microservicios.

Pero, ¿cuáles son los beneficios que los microservices ofrecen a mi organización? En Building Microservices https://samnewman.io/books/building_microservices/ de Sam Newman, podemos ver cómo una empresa adopta esta práctica y descubrimos que ellas alcanzan características básicas, como: heterogeneidad tecnológica, que es cuando una compañía tiene la herramienta adecuada para cada trabajo, sin necesidad de elegir una herramienta única para todas las actividades – lo que también permite que la organización se adapte con nuevas soluciones de forma más rápida. Entre otros beneficios está la resiliencia, que podemos ver ejemplificada con una Jenga – un juego en el que jugadores se turnan para remover bloques de una torre, equilibrándolos en la parte superior, creando una estructura cada vez mayor e inestable a medida que el juego progresa: cuando uno de los bloques es removido de la torre, esto no causa un fallo en cascada, ya que el problema puede ser aislado del sistema, sin afectar su integridad.

Otro beneficio es la ganancia de escalabilidad. Algunos sistemas necesitan ser dimensionados de acuerdo con la demanda de algunos de sus componentes. En sistemas monolíticos, todo debe ser calculado, incluyendo los componentes que no necesitan escalar.

Aún hay otros beneficios, como la facilidad de implementación, ya que es más fácil implementar un componente pequeño, que no afecta a todo el sistema, que una línea de código de un sistema monolítico – que puede tomar un sistema operativo. Una vez que los equipos más pequeños, que trabajan en cosas más pequeñas, tienden a ser más productivos, los microservicios harán, por su naturaleza, con que los profesionales sean divididos en equipos muy pequeños, promoviendo la productividad del talento humano.

Los últimos beneficios son facilidad de cambio, resiliencia y reutilización. Con los microservicios y una gobernanza descentralizada, el uso de los servicios puede ser hecho de diferentes maneras, promoviendo una verdadera reutilización de servicios exclusivos de un sistema, que para descomponer es necesario rehacer o crear un nuevo específico.

Para muchos desarrolladores los microservicios son una forma de evolución de los errores del SOA, que se ha concentrado más en la integración específica entre las plataformas, con poca consideración a la experiencia del usuario final.

Para llevar a adelante una iniciativa de implementación de Microservicios debemos tener presente lo siguiente:

  1. Paquetes livianos y bajo consumo de memoria
  2. La inicialización de la aplicación debe ser rápida para crear rápidamente nuevas instancias de contenedores o servidores.
  3. Desarrollo rápido y sencillo basado en la especificación Swagger
  4. Features de seguridad como OAuth2

Algunos de los frameworks vigentes que indicamos son:

Java:

  • Spring boot
  • Spark Framework
  • Play Framework
  • Dropwizard
  • Apache Camel

JavaScript:

  • js

Otra característica crucial cuando implementamos APIs usando Microservicios es la capacidad de integración con sistemas legados. Ese tipo de feature requiere un framework específico que implementa los estándares de integración empresarial (EAI patterns), la recomendación en ese caso es utilizar el framework Java Apache Camel.

También podría interesarte…

Que es Cloud Native ?

Que es Cloud Native ?

  Felicitamos a nuestroLíder de Arquitectura Digital Felipe Andrés Velásquez Castro,  porque su articulo sobre...

leer más
Webinar 15 de julio: Arquitectura de Microservicios

Webinar 15 de julio: Arquitectura de Microservicios

Un viaje desde la Infraestructura física a la escalabilidad cloud y desde el monolito a una arquitectura 100% desacoplada.
Este miércoles 15 de Julio hemos realizado nuestro Webinar de Arquitectura de Microservicios.
Con una gran audiencia y participación se realizado esta sesión especializada en Arquitecturas de microservicios.

leer más