Microservicios en JS y nuestra experiencia en ComparaOnline

Trasfondo

  • ComparaOnline es una startup
  • Acumulación de deuda técnica no resuelta
  • Aplicación monolítica (RoR) que intentaba resolver todos los problemas de la empresa de la empresa

Objetivos

  • Mejorar el código de las partes críticas
  • Desarmar el monolito, pasando a una arquitectura de (micro)servicios

node.js

Ventajas:

  • JavaScript
  • Asíncrono
  • Bajo consumo de recursos base
  • Buena comunidad

node.js

Desventajas:

  • JavaScript
  • Asíncrono

hapi

  • Framework para crear servicios rest
  • Extremadamente simple
  • Muy poco uso de recursos base
  • Buena disponibilidad de middlewares

ReactiveX

  • Cambio de paradigma, todo son Observables (== streams asincrónicos)
  • Permite programar pensando en transformaciones, más que en pasos a seguir
  • Requiere bastante aprendizaje inicial para obtener el mayor beneficio posible, pero no es dificil de comenzar a usar

QuoteApp

  • Las cotizaciones en un gran número de aseguradoras es crítica para la empresa.
  • Los diferentes webservices tienen interfaces muy distintas entre sí (especialmente en distintos países)
  • Los resultados deben estar lo antes posible, no importa el orden de las respuestas
  • Buena tolerancia a fallas

QuoteApp

Request

Servicio

Servicio

Servicio

Servicio

Response

QuoteApp

  • Cada servicio es independiente, lo que encapsula toda la lógica específica necesaria para que funcione
  • Los servicios devuelven un Observable de cotizaciones
  • La respuesta final es un x-json-stream de resultados

QuoteApp

Demo del servicio

QuoteApp

¿Preguntas?

Gracias!

Ezequiel Rabinovich

erabinovich@gmail.com

github.com/warseph

Microservicios en JS y nuestra experiencia en ComparaOnline

By Ezequiel Rabinovich

Microservicios en JS y nuestra experiencia en ComparaOnline

  • 137