Pular para o conteúdo principal
O Midaz é projetado para portabilidade e independência genuínas. Você pode fazer o deploy em qualquer nuvem pública ou privada sem ficar preso a um único provedor. Por baixo, utilizamos uma arquitetura de microsserviços, que permite que cada componente seja autossuficiente e facilmente escalável (ou substituível) conforme seus requisitos mudam.

Arquitetura de microsserviços


O diagrama abaixo (Figura 1) mostra como as peças se encaixam.

1. Camada de cluster (gerenciamento do cliente)

Esta camada é gerenciada pelo cliente e fornece a base Kubernetes para executar o Midaz. Recomendamos habilitar os seguintes serviços para garantir um deploy tranquilo e seguro:
  • Service: Abstração de rede para expor e rotear serviços.
  • AutoScaler: Ajusta automaticamente o número de pods.
  • HPA (Horizontal Pod Autoscaler): Escala aplicações baseado em métricas.
  • Secrets: Gerenciamento seguro de dados sensíveis.
  • ConfigMap: Gerenciamento de configuração externalizada.
Esta camada governa e coordena todos os componentes dentro do cluster.

2. Camada de front-end

A camada de front-end fornece a interface de usuário para interação com o sistema (painel administrativo, dashboards, etc.).
Transição importante: A partir de versões mais recentes, o Midaz não inclui mais um console integrado em seu repositório. A interface visual agora é fornecida pelo Lerian Console, uma plataforma unificada que inclui o Midaz como um de seus módulos de produto.Se você está usando uma versão mais antiga do Midaz, pode ainda ter acesso ao Midaz Console standalone. No entanto, este componente está agora em modo de manutenção e receberá apenas patches críticos de segurança. Recomendamos migrar para o Lerian Console para acessar as funcionalidades e melhorias mais recentes.

3. Camada de back-end

O back-end é implementado como um monólito modular, exposto como um único serviço chamado Ledger, que concentra as responsabilidades principais do Midaz Ledger. Dentro dessa estrutura, a lógica é organizada por domínios, principalmente:
  • Domínio de Onboarding: Responsável pela configuração de organização, ledger, ativo, portfolio, segmento e conta.
  • Domínio de Transações: Lida com transações financeiras, operações e movimentações de ativos.
Essa abordagem preserva limites claros entre domínios enquanto simplifica o deploy e a complexidade operacional.

4. Camada de dados

Esta camada inclui os bancos de dados e componentes de infraestrutura necessários para suportar dados da aplicação e fluxos de eventos:
  • PostgreSQL (nomeado “Midaz”): Usado como o banco de dados relacional principal; inclui uma réplica para redundância ou escalabilidade de leitura.
  • Valkey: Um armazenamento chave-valor compatível com Redis para cache ou recuperação rápida de dados.
  • MongoDB: Provavelmente usado para armazenar dados não estruturados ou semi-estruturados.
  • RabbitMQ: Message broker para comunicação assíncrona entre serviços.
Cada um desses possui armazenamento persistente associado para durabilidade dos dados.

5. Camada de Helm Chart

O Midaz usa Helm Charts (especificamente lerianstudio/helm) para tornar o deploy e a configuração de infraestrutura mais simples e eficientes. Serve como o elemento de conexão entre código e Kubernetes, garantindo que cada componente seja implantado de forma consistente em diferentes ambientes.
Para mais detalhes, consulte a página Deploy usando Helm.

Infraestrutura que funciona


Na arquitetura do Midaz, cada camada é focada, sem complexidade desnecessária. Ela escala naturalmente e se adapta conforme suas necessidades mudam. Essa configuração não é apenas tecnicamente sólida; ela é construída para uso no mundo real.
  • O Kubernetes coordena como cada camada se comunica, garantindo interações seguras e confiáveis em todo o sistema.
  • O Helm mantém deploys e configurações sincronizados, para que escalabilidade e atualizações aconteçam sem fricção.
Como a plataforma é modular, estendê-la é simples. Você pode adicionar novos componentes conforme necessário sem interromper o que já está funcionando.