Imaginémonos que nos encontramos trabajando en la Estrella de la Muerte de StarWars, una arquitectura de aplicación que es una locura, con cientos de funcionalidades, enorme pesaje y difícil manejo. La aplicación o estructura, según nuestro señor Darth Vader, debe ser envidiable por el resto del Universo y demostrar la supremacía de nuestra empresa sobre las demás.
Así que, como humildes ingenieros, nos ponemos a trabajar buscando construir la mejor aplicación nunca antes construida. Según añadimos funcionalidades, la aplicación se hace más pesada, más complicada de testear y de difícil manejo. Confiamos en nuestro código y en sus funciones, pero solo con que una cosa no esté del todo bien puede llevarnos al desastre.
Y en esto que un grupo de rebeldes nos atacan… y ya sabemos cómo acaba la película.
Si logramos salvarnos del escarmiento de Vader idearíamos las cosas de otra manera. ¿Cierto?
Pues he aquí el nacimiento de los microservicios o muchas naves individuales: un montón de funcionalidades que trabajan por sí solas. Somos capaces de balancear las peticiones entre ellas, ordenarles que nos hagan distinto negocio… pero que, a la postre, realizan lo mismo que la megaestructura anterior. Ahora si nos atacan los rebeldes estamos más preparados, ya que si una nave cae no se lleva al resto de funcionalidades consigo.
¿De dónde vienen los microservicios?
El término microservicio no es nuevo. Lleva mucho tiempo planeando en el panorama empresarial en plataformas Cloud como Amazon o Netflix. Incluso Netflix se ha encargado, uniéndose a Spring para tal propósito, de liberalizar distintos paquetes para el desarrollo y mantenimiento ágil de nuestros microservicios, una suerte de C3PO o R2D2 muy bien ideados.
Los microservicios vienen acompañados con toda suerte de herramientas para su correcta implementación y mantenimiento; así pues tenemos Hybrix para el manejo de error, Ribbon para el balanceo de carga, Eureka como servidor de registro y descubrimiento, además de Cloud Config para configurar nuestros microservicios en la misma nube.
No es extraño, pues, que Spring se haya unido a Netflix en el propósito del desarrollo de microservicios y que haya generado su módulo Spring Cloud, que junto a la tecnología de Spring Boot se hace fácilmente implementable mediante el uso de anotaciones. Fácil para el desarrollador moderno que es una mezcla entre programador y sistemas, un auténtico DevOps al uso.
Con los microservicios construimos y pensamos mejor y, aunque hace falta entrenamiento, la Fuerza os acompañará siempre.