> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Arquitetura

> Explore a arquitetura modular do Midaz, centrada no serviço Ledger e na infraestrutura de suporte dele.

> [!NOTE]
>
> O Midaz roda o serviço Ledger modular e um serviço Tracer separado. Faça o deploy e escale cada serviço e a infraestrutura de suporte dele para o seu ambiente. Para uma visão geral orientada a negócio, veja [Sobre o Midaz](https://docs.lerian.studio/pt/products/midaz/about-midaz.md).

O Midaz pode rodar em ambientes de nuvem pública ou privada. Selecione e opere a infraestrutura que atende aos seus requisitos de deploy.

O Midaz usa uma arquitetura modular. O Ledger é organizado em torno de fronteiras de domínio, com infraestrutura de suporte para armazenamento, cache, mensageria e streaming. O Tracer roda como um serviço separado.

## Fronteira de repositório e deploy

O Midaz entrega dois runtimes em um único repositório e release: o monólito modular do Ledger (com CRM e Fees) e o Tracer. O Tracer não fica embutido no processo do Ledger: faça o deploy dele e escale-o separadamente.

O Ledger HTTP v2 pode optar pela interface de reserva unidirecional com o Tracer. O Ledger HTTP v1 nunca a chama. A superfície HTTP pública do Tracer continua sendo `/v1`, portanto essa interface não cria uma API pública Tracer v2. O Tracer nunca chama o Ledger.

## Arquitetura modular

***

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

![Diagrama em camadas do Midaz: a camada de cluster que você gerencia, a camada de front-end com o Lerian Console, a camada de back-end com o Ledger (com CRM e Fees) e o Tracer como runtime separado, a camada de dados com PostgreSQL, MongoDB, Valkey e RabbitMQ, e a camada de Helm charts.](https://mintcdn.com/lerian-49cb71fc/ps2sUQlGBPg-b1IO/images/pt/d2/midaz-macro-architecture.svg?fit=max\&auto=format\&n=ps2sUQlGBPg-b1IO\&q=85\&s=091555820e9c01934539b2224177e431)

Figura 1. Macroarquitetura do Midaz

### 1. Camada de cluster (gerenciada por você)

Você gerencia essa camada. Ela fornece a base Kubernetes que roda o Midaz. Habilite estes serviços:

* **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 com base em métricas.
* **Secrets**: gestão segura de dados sensíveis.
* **ConfigMap**: gestão de configuração externalizada.

Essa 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 a interação com o sistema (painel administrativo, dashboards e outros).

> [!NOTE]
>
> Releases mais recentes do Midaz não incluem mais um console empacotado. O [Lerian Console](https://docs.lerian.studio/pt/platform/console/about-lerian-console.md) agora fornece a interface visual. O Lerian Console inclui o Midaz como um módulo de produto.
>
> Se você usa uma versão mais antiga do Midaz, ainda pode ter o Midaz Console independente. O Midaz v3.5.0 e as versões posteriores não o incluem. Migre para o Lerian Console para acessar os recursos e as melhorias mais recentes.

### 3. Camada de back-end

O back-end do Ledger é um monólito modular que concentra as responsabilidades principais do ledger do Midaz. O Midaz também roda o Tracer como um serviço separado.

O Ledger reúne quatro componentes principais:

* **Domínio Onboarding**: gerencia organizações, ledgers, ativos, portfólios, segmentos e contas.
* **Domínio Transactions**: trata transações financeiras, operações e movimentações de ativos.
* **CRM**: fica embutido no processo do Ledger.
* **Fees**: fica embutido no processo do Ledger.

Essa abordagem mantém fronteiras de domínio claras. Ela também simplifica o deploy e reduz a complexidade operacional.

### 4. Camada de dados

Essa camada reúne os bancos de dados e os componentes de infraestrutura que sustentam os dados da aplicação e os fluxos de eventos:

* **PostgreSQL**: bancos de dados `onboarding` e `transaction` separados, cada um com uma conexão primária e uma conexão de réplica opcional.
* **Valkey**: um armazenamento chave-valor compatível com Redis. O ledger valida e atualiza os saldos em tempo real nele e depois os sincroniza com o PostgreSQL. Ele também faz cache de dados.
* **MongoDB**: armazena dados semiestruturados: metadados de entidades, holders e instrumentos do CRM e pacotes de tarifas e de cobrança.
* **RabbitMQ**: broker de mensagens para o processamento assíncrono de transações e as trocas de eventos do ledger.
* **Redpanda**: broker compatível com Kafka para os streams de eventos do Ledger. O Ledger publica os eventos configurados nele apenas quando você define `STREAMING_ENABLED=true` e configura os brokers de streaming.

A persistência é específica de cada deploy. Configure o armazenamento e a retenção de produção para cada serviço.

### 5. Camada de Helm Chart

O Midaz usa Helm Charts para fazer o deploy e configurar a infraestrutura.

O chart conecta o código ao Kubernetes. Ele faz o deploy de cada componente da mesma forma em todos os ambientes.

> [!TIP]
>
> Para mais detalhes, veja a página [Deploy usando o Helm](https://github.com/LerianStudio/helm/tree/main/charts/midaz).

## Como as camadas funcionam juntas

***

Cada camada tem um papel específico.

* O Kubernetes coordena como as camadas se comunicam.
* O Helm mantém os deploys e as configurações sincronizados.

Você pode adicionar novos componentes conforme a necessidade, sem interromper o que já está em execução.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.