Los procedimientos almacenados son detalles de implementación. Las funciones de base de datos, lambdas o un script de shell almacenado en algún lugar del sistema de archivos son todos detalles de implementación e irrelevantes para la arquitectura.
La mayoría de los libros sobre microservicios recomiendan una base de datos por microservicio.
Ok, entonces podemos codificar los procedimientos almacenados en estas bases de datos.
una vez más, la mayoría de los libros de arquitectura de microservicios afirman que deberían ser autónomos y estar acoplados libremente
Entre las capacidades comerciales, los ciclos de vida del desarrollo, la administración, las implementaciones, las ubicaciones del equipo, etc. Nada que ver con los detalles de implementación. Los microservicios no resuelven un problema técnico (todo lo contrario). Vienen a resolver problemas con la administración y el tiempo de comercialización. Es una estrategia, no una táctica. Una manera de fallar rápidamente con el menor costo posible. Si se demuestra que cierta capacidad comercial no tiene valor, la descartamos sin estropear otras capacidades, implementaciones, gestión de proyectos, lanzamientos ...
Tenga en cuenta que la "división" ya actúa como un agente de desacoplamiento. Digamos que tenemos dos servicios, A está respaldado por Oracle y B por MongoDB. Si no rompemos la regla de oro del desacoplamiento, debería ser posible soltar A + Oracle con efectos secundarios insignificantes en B.
El uso de procedimientos almacenados escritos, por ejemplo, específicamente en Oracle, combina estrechamente el microservicio con esa tecnología.
Puede causar el bloqueo del proveedor. Muchas veces, la empresa impone al vendedor debido a razones históricas o contractuales 1 . Es importante saber cómo no bloquear nuestro código al proveedor. Por ejemplo, algunos ORM y marcos implementan un nuevo lenguaje de consulta que oculta las funciones y características integradas de la base de datos.
Sin embargo, si nuestros servicios son lo suficientemente micro, el bloqueo de proveedores ya no es un problema, ya que afecta a una pequeña parte del conjunto. Una pequeña parte que debería poder reemplazarse (o aislarse) rápidamente.
La mayoría de los libros de MSA (que he leído) recomiendan que los microservicios estén orientados a los negocios (diseñados con DDD).
Debe ser impulsado por los negocios y aquí la cosa. No todas las empresas aprovechan DDD. DDD y microservicios se superponen en muchos puntos, pero no son causa-efecto. Podríamos terminar con un ecosistema de microservicios compuesto por servicios anémicos. O compuesto de una combinación de ambos: servicios que implementan un dominio complejo y servicios anémicos tontos que proporcionan POJO directamente desde la base de datos. No hay nada de malo en eso.
En cuanto a los libros, solo se centran en la ejecución de la estrategia. Las tácticas, cómo aprovechar la informática distribuida , cómo hacer que funcione para el éxito, pero son (generalmente) independientes de la estrategia. Las estrategias varían de una compañía a otra y rara vez dependen de los desarrolladores. Por lo tanto, todavía tenemos que extrapolar y adaptar lo que dicen los libros a nuestras necesidades, requisitos y limitaciones específicos. El objetivo es hacer que la estrategia comercial sea rentable y sostenible.
Siempre tenga en cuenta que cualquier arquitectura es un medio para un fin. Las reglas del negocio. No construimos ecosistemas de microservicios por moda o por amor al arte.