Distrib es un proyecto Open Source creado para mostrar el funcionamiento y uso de los sistemas distribuidos con las implementaciones en .NET Core.
La aplicación va a ser "vendor free" lo que quiere decir que no va a estar enlazada directamente a ningún proveedor específico. Obviamente vamos a utilizar X o Y servicio (ya que no vamos a reinventar la rueda), pero lo haremos a través de abstracciones.
Es importante saber estos conceptos ya que cada día las empresas están migrando sus aplicaciones monolíticas a microservicios o incluso serverless, y para poder aplicar un correcto funcionamiento, debemos aprender sobre sistemas distribuidos.
Vamos a ver un sistema distribuido con múltiples características, como pueden ser patrón consumer/publiser, sagas, service discovery, Eventual consistency, etc.
La arquitectura que vamos a ver es la siguiente:
Puedes encontrar el proceso de creación del sistema en mi curso de YouTube.
Alternativamente, si lo prefieres, puedes seguir los post con el código detallado y los razonamientos sobre por qué se ha elegido cada tecnología en mi web NetMentor - Cruso Distribt
Si estás siguiendo el curso vídeo a vídeo tienes diferentes branches en este repositorio con el código de cada vídeo (de forma incremental) aquí: https://github.com/ElectNewt/Distribt/branches/all
Hasta ahora hemos visto las siguientes funcionalidades:
Puedes encontrar documentación de cada projecto dentro de Shared
en la carpeta docs
.
Todo el contenido se encuentra en este mismo repositorio esto es así para una mayor facilidad a la hora de ver cómo funcionan las diferentes herramientas.
Puedes encontrar el código dentro de la carpeta src
. Donde encontrarás múltiples carpetas.
Nota: Técnicamente cada carpeta representa un dominio y puede ser su propio repositorio independiente, pero para una mayor facilidad del desarrollo y del seguimiento en los vídeos y posts está todo en un único repo.
Para ejecutar la aplicación correctamente debes tener Docker instalado en tu máquina y entender cómo funciona docker-compose.
He creado un fichero docker-compose.yaml
que ya contiene toda la configuración necesaria para que una vez ejecutes la solución, esta funcione sin problemas.
Eventualmente lo veremos toda la configuración en kubernetes (con project tye).
Para poder ejecutar la aplicación correctamente en local, necestiaras ejecutar tanto el fichero docker-compose
como la configuración para los diferentes servicios utilizados.
Para ahorrar tiempo he creado un fichero bash
que ejectua todo ./tools/local-development/up.sh
Y luego simplemente ejecuta cada aplicacion de forma individual o en un compound para poder testearlas.
Si te gusta el proyecto no dudes en darle una estrella, hacer un fork junto a una PR o incluso apoyar económicamente el proyecto donando un café.