Bank Microservices

Bank Microservices

Tabla de contenidos

Introducción

Bank Microservices es mi propuesta de una aplicación bancaria, con arquitectura basada en microservicios y utilizando el stack MERN, que permite a los empleados crear, actualizar y eliminar cuentas, clientes y préstamos, almacenar préstamos en cadena y hacer predicciones sobre posibles incumplimientos de préstamos.

Detalles técnicos

El grueso de esta aplicación se compone de (i) contractos inteligentes, escritos en Solidity utilizando Hardhat, y testeados utilizando Foundry, (ii) código de back end, escrito en TypeScript utilizando Express.js y Python utilizando Flask, y (iii) código de front end, el cual está mayormente escrito en TypeScript utilizando Next.js, un framework de React.js.

Ambos, back end (todas las APIs menos las del servicio web de Flask) y front end, están implementados basados en una arquitectura hexagonal.

Además, se ha desarrollado un pipeline de scikit-learn que incluye un clasificador binario Skorch de red neuronal que envuelve una red neuronal de Pytorch.

Una optimización de hiperparámetros de ambos, modelo y entrenamiento, evaluados por validación cruzada se acomete en un cuaderno de Jupyter.

Finalmente, los datos se consultan en un nodo local de TheGraph utilizando GraphQL. El subgrafo que se utiliza esta diseñado para dar soporte a múltiples redes, datos relevantes del despliegue se transferirán en consecuencia.

Todos los microservicios tienen sus propias imágenes de Docker.

Perspectiva general

  • packages/*: paquetes npm que contienen código y archivos de configuración que se utilizan para otros paquetes o servicios.
  • services/*: microservicios que constituyen la mayor parte de la aplicación.
  • services/**/contracts/*: contratos inteligentes escritos en lenguaje Solidity.
  • services/**/scripts/*: scripts de TypeScript para desplegar los contratos y escribir información relevante sobre ellos en los workspaces del front end y del subrafo.
  • services/**/tasks/setState: tarea de Hardhat para configurar un estado al nodo local.
  • services/**/contracts/test/foundry/*: contratos de test que se ejecutan con Foundry.
  • services/client/src/app/*: componentes funcionales de React.js, archivos de CSSModules, mixins de PostCSS y un archivo CSS global.
  • services/client/src/features/*: código de los servicios con el núcleo y fuentes de datos.
  • services/client/src/**/shared/*: código de interfaz de usuario compartido con archivos del mismo nivel de carpetas.
  • services/**/subgraph/scripts/*: script para generar un manifiesto del subgrafo manifest apartir de una plantilla, reemplazando llaves por valores desde un archivo JSON.
  • services/**/subgraph/src/*: mappings, escritos en AssemblyScript, constantes y entidades utilizados para extraer datos desde la cadena local de Hardhat, procesarlos y guardarlos.
  • services/**/subgraph/templates/*: una plantilla del manifiesto del subgrafo.
  • services/**/api/**/core/*: esta carpeta folder engloba la lógica de negocio de cada sevicio.
  • services/**/api/**/controllers/*: funciones para definir las operaciones deseadas por la API de la aplicación.
  • services/**/api/**/data-sources/*: clase que implementa métodos descritos en los repositorios.

Ejecución local

Esta aplicación utiliza pnpm y se configura para ejecutarse con Docker Compose.

$ git clone https://github.com/albertobas/bank-microservices.git
$ cd bank-microservices
$ git submodule update --init --recursive
$ cp .env.example .env # fill in tha values for each variable in .env
$ pnpm install
$ pnpm start:chain --filter=customers # only run one node, for instance executing the hardhat node in the customers workspace

Abra otra pestaña y :

$ pnpm deploy:contracts && pnpm populate & pnpm share
$ COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker compose -f docker-compose.yaml build
$ docker compose -f docker-compose.yaml up

Testeando los contratos

$ pnpm test

Entradas relacionadas

He escrito la siguiente entrada para explicar en detalle este proyecto:

Notas

Este proyecto se publica bajo licencia MIT.


Proyectos relacionados

albertobas.com

albertobas.com

Esta es mi página web personal, donde publico artículos y proyectos.

Ver más
zk Connect Four

zk Connect Four

zk Connect Four es una aplicación descentralizada de conocimiento cero que le permite jugar al juego de Conecta Cuatro contra una política de juego entrenada por un agente DQN, o contra otro usuario.

Ver más
Olive Oil Trust

Olive Oil Trust

Olive Oil Trust es un sistema de trazabilidad para el aceite de oliva implementado en Ethereum que adapta el flujo de trabajo de la cadena de valor larga del aceite de oliva a la cadena de bloques mediante el uso de contratos inteligentes.

Ver más

¿Preparado para #buidl?

¿Está interesado en Web3 o en las sinergias entre la tecnología blockchain, la inteligencia artificial y el conocimiento cero?. Entonces, no dude en contactarme por e-mail o en mi perfil de LinkedIn. También me puede encontrar en GitHub.