Skip to main content

Service Booster – Agilidad y gobierno de servicios

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (1 votos, promedio: 5,00 de 5)
Cargando…

Vivimos en la era de las APIs, hoy en día la mayoría de las herramientas con las que trabajamos ofrecen comunicación API para operar con sus funcionalidades, entonces porque no usar estas en nuestro beneficio, de aquí nace Service Booster, con la idea de minimizar los tiempos de desarrollo y ampliar las capacidades de gobierno que nos ofrecen las herramientas que utilizamos.

 

¿Por qué una herramienta que agilice la creación de servicios?

 

Cuando llevamos mucho tiempo desarrollando microservicios solemos acabar dándonos cuenta de que hay muchas tareas que son repetitivas:

 

  • Crear un arquetipo para la creación de los micros
  • Crear planes de despliegue
  • Crear repositorios para almacenar el código fuente
  • Integrar frameworks de pruebas
  • Integrar con herramientas de análisis de código estático
  • Crear librerías o framework de desarrollo
  • Integrar Swagger para la documentación de las APIs
  • Crear pruebas e2e
  • Analizar las comunicaciones

 

Con todo esto encima de la mesa, el siguiente paso era pensar como organizar todos estos datos y darle sentido en una herramienta que nos permitiese la automatización de toda esta información y no solo quedarnos ahí, sino ampliarla para cubrir las debilidades que tienen actualmente las arquitecturas de microservicios.

 

Manos a la obra empezamos creando un módulo completo de arquetipos que nos permitiese la creación ágil de microservicios en las distintas tipologías más frecuentes con las que nos encontramos:

 

  • Arquetipos de microservicios Srping Boot/Spring Cloud para toda la plataforma Netflix OSS, esto nos permitía crear una plataforma Netflix en cuestión de minutos.
  • Arquetipos NodeJs: incluso integrándolos en plataforma Netflix
  • Arquetipo Vertx: para cubrir arquitecturas asíncronas
  • Arquetipos de monitorización: Zipkin, Spring Boot Admin, preparados para integrar directamente en plataformas de microservicios y tener una fácil adaptación a la recepción de datos
  • Arquetipos de representación Swagger: que nos permite una visualización directa de todo el catálogo Swagger de los microservicios registrados en nuestra plataforma

 

Una vez que disponíamos del módulo de arquetipos podíamos crear plataformas a partir de los arquetipos, completamente funcionales y ofrecer a nuestros clientes procesos de migración a nuevas arquitecturas reduciendo costes en la implantación de la plataforma, como por ejemplo el caso de una plataforma Netflis OSS:

El siguiente paso fue automatizar los procesos de integración continua, para ello creamos un módulo en el que empezaríamos trabajando con Jenkins, creando objetos Shared Libreries que nos permitiesen realizar todo tipo de operaciones de uso común, como las siguientes:

 

  • Funcionalidades de trabajo con repositorios git, checkout, pull, commit, push
  • Creación de repositorios
  • Funcionalidades de testing
  • Construcción y almacenamiento de binarios
  • Todo tipo de tareas con contenedores
  • Tareas de comunicación: email, slack…
  •  

Dentro de este módulo era preciso ofrecer la comunicación entre máquinas, siendo Ansible la herramienta que hemos usado dentro de Service Booster para tal funcionalidad, por lo que todo el resultado de construcción que nos ofrecía Jenkins se derivaba a una tarea de despliegue en máquina a través de Ansible. Y actualmente también ofrecemos estas funcionalidades a través de CA Release Automotion y Pipelines de Bitbucket.

 

En este punto ya disponíamos de gran parte de los objetivos que nos habíamos fijado , aunque nuestra meta era mucho más ambiciosa y necesitábamos una aplicación web que automatizase el uso de todo lo que habíamos creado hasta el momento, por lo que creamos una aplicación que partiese de un framework de desarrollo que nos permitise aplicar cambios de forma muy ágil, ya que estábamos convencidos que nuestros clientes solicitarían modificaciones y ampliaciones en relación a sus necesidades con respecto a Service Booster.

 

Una vez que disponíamos de la aplicación podíamos registrar los arquetipos en ella, lo que nos permitía no solo trabajar con los nuestros, sino que ofrecer esta posibilidad a los arquetipos de nuestros clientes, de forma que la aplicación pasaba a trabajar directamente con los arquetipos que en ella se registraban

 

Con los arquetipos registrados podíamos comenzar a usarlo y crear artefactos de distintas naturalezas basándonos en estos arquetipos:

El proceso de creación no solo nos permitía crear el microservicio, sino automatizar todas las tareas necesarias para que este fuese completamente funcional y quedase en un estado prácticamente de ejecución.

 

En la siguiente lista mostramos el resultado de la creación del microservicio con todos los elementos resultantes.

En este punto teníamos casi cumplidos todos los objetivos que nos habíamos fijado, pero nuestra idea era llegar un paso más allá y dar solución a problemas de gobierno con los que nos encontramos hoy en día en este tipo de arquitecturas.

 

Entonces, ¿Cuál era la problemática a la que nos enfrentábamos?

Una arquitectura de microservicios sea del tipo que sea siempre requiere del uso de librerías/dependencias/nuggets… que aporten funcionalidad a los microservicios, el problema es gestionar el uso de estas dependencias de forma adecuada y controlar su versionado, pudiendo visualizar en todo momento que microservicio consume cierta dependencia o que dependencias son consumidas por cierto microservicio, controlando la versión que se esta usando, el estado de la versión y su ámbito de uso, como resultado podemos ver la siguiente pantalla de Service Booster:

Ahora ya disponíamos de una herramienta que verdaderamente aporta valor a los procesos de transformación digital y no solo eso, sino que permite gobernar las arquitecturas actuales y agilizar su desarrollo.

 

Y como adelanto a la siguiente versión de Service Booster: incorporará compatibilidad completa con Async API, permitiendo la integración con contratos asíncronos a partir de los cuales generar los microservicios y no solo eso, sino que dispondrá de un visor que nos mostrará de forma gráfica el mapa de comunicaciones entre microservicios.

Rafael Blanco Cordero

Rafael Blanco Cordero

Rafael Blanco Cordero ha escrito 1 entradas


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.