Aprenda a criar uma camada de dados operacional (Operational Data Layer, ODL) para liberar dados de pagamento isolados e melhorar os aplicativos modernos.
Casos de uso: Pagamentos, Modernização
Setores: Serviços financeiros
Produtos e ferramentas: MongoDB Atlas, Enterprise Advanced, Atlas Clusters, MongoDB Change Streams, Atlas Search, Atlas Charts, Atlas Auditoria e Segurança Empresarial, MongoDB Kafka Connector, Queryable Encryption, Time Series
Parceiros: Confluent (para integração com o Apache Kafka), AWS (para infraestrutura e serviços de nuvem)
Visão Geral da Solução
O setor de pagamentos da atualidade muda rapidamente, e as empresas estão trabalhando para oferecer soluções de pagamento seguras e fáceis de usar. Essa necessidade é impulsionada por fatores como novas regulamentações, expectativas dos cliente e concorrência de mercado. As organizações de serviços financeiros podem usar o MongoDB para modernização de seus sistemas de pagamento.
Esta solução mostra como você pode usar o MongoDB para construir um ODL. Você pode implantar um ODL em sistemas legado para modernização de sua arquitetura sem a dificuldade e o risco de substituir totalmente os sistemas legado .
Modernização dos sistemas de pagamento
Diversos fatores estão impulsionando a modernização dos sistemas de pagamento:
Pagamentos em tempo real: clientes e empresas esperam que os pagamentos sejam processados imediatamente.
Mudanças normativas: novas normas e regulamentações, como o SSD2 na Europa, incentivam sistemas de pagamento mais abertos e flexíveis.
Expectativas do cliente: as pessoas querem que os processos de pagamento sejam suaves e integrados em diferentes plataformas.
Banco aberto: O banco aberto torna o setor financeiro mais comparativo e novo, permitindo o desenvolvimento de novos serviços de pagamento.
Concorrência: As startups de fimy oferecem novas soluções de pagamento, desabilitando as bancos e bancos tradicionais a atualizar seus sistemas.
Desafios da modernização
Atualizar os sistemas de pagamento é desafiador devido a:
Sistemas complexos: Os sistemas de pagamento envolvem muitas partes e regulamentações diferentes, o que torna as alterações complicadas.
Tecnologia antiga: sistemas desatualizados desaceleram a tecnologia e dificultam o alcance dos padrões atuais.
Altos custos: fazer upgrade em sistemas antigos pode ser caro e demorado.
Dívida técnica: atalhos anteriores no design do sistema podem limitar o crescimento e a adaptabilidade no futuro.
Nesta solução de exemplo , você aprenderá como usar o MongoDB para atualizar os sistemas de pagamento.
Abordagens de modernização
As empresas estão adotando as seguintes estratégias ao atualizar seus sistemas:
Design orientado ao domínio: ao alinhavar o desenvolvimento do sistema com as necessidades de negócios, o design orientado ao domínio garante que as mudanças de tecnologia atendam aos objetivos de negócios.
Arquitetura de microsserviços: Ao fazer a transição de uma arquitetura monolítica para uma arquitetura de microsserviços, você pode atualizar e dimensionar seu sistema com mais eficiência.
Como o MongoDB apoia a modernização
As seguintes funcionalidades do MongoDB suportam os trabalhos de modernização de pagamentos:
Modelo de documento flexível: o modelo de documento do MongoDB permite incorporar novos tipos de pagamento e estruturas de dados, garantindo que seu sistema possa desenvolver-se com o mercado.
Camada de dados operacional: o MongoDB introduz uma camada de dados unificada que simplifica o acesso a dados em vários serviços, o que é crucial para a criação de soluções de pagamento integradas.
Suporte para as melhores práticas: o MongoDB fornece às empresas os FERRAMENTAS necessários para seguir as melhores práticas do setor, como transações seguras e análises em tempo real.
Arquiteturas de referência
O diagrama abaixo detalha a arquitetura utilizada por esta solução de pagamento. Para saber mais sobre como funciona com MongoDB, visite nossa página Pagamentos em tempo real.

Figura 1. Diagrama da arquitetura de solução de pagamentos
Abordagem do modelo de dados
Esta solução se concentra nas relações entre entidades como contas de usuário, transações, contas bancárias e métodos de pagamento. Inclui atributos de dados e informações detalhadas para cada entidade.
Arquitetura de Microservices
Uma arquitetura de microsserviços divide grandes aplicativos monométricos em partes menores. Permite desenvolvimento mais rápido, modularidade, flexibilidade e escalabilidade, resiliência, alinhamento organizacional e redução de custos.
A arquitetura de microsserviços usada nesta solução é dividida nos seguintes serviços:
Gerenciamento de usuários
Processamento de transações
Histórico de transações
Reconciliação de conta
Verificação do pagamento
relatando
Notificações
Gerenciamento de usuários
Esse serviço facilita as interações do usuário e da conta. O diagrama abaixo mostra o fluxo para a criação de conta.
O diagrama envolve as seguintes entidades:
Entidades de dados: Conta de usuário, Método de pagamento, Conta bancária
Permissões: ler/gravar na conta do usuário, forma de pagamento e conta bancária
Entradas: Detalhes do usuário, Detalhes do método de pagamento, Detalhes da conta bancária
Saídas: Confirmação de criação de conta de usuário, confirmação de adição de método de pagamento, confirmação de adição de conta bancária

Figura 2. Fluxo de criação de conta
Você pode ver uma aplicação desse fluxo neste repositório do GitHub.
Processamento de transações
Esse serviço gerencia operações relacionadas a transações, como iniciar, concluir ou reembolsar uma transação. No diagrama abaixo, você pode visualizar o fluxo principal para iniciar uma transação.
Esse diagrama envolve as seguintes entidades:
Entidades de dados: Transação, Conta Bancária
Permissões: leitura/gravação em transação, leitura em conta bancária
Entradas: detalhes da transação, como valor, emissor e receptor
Saídas: atualização do status da transação, como pendente, concluída ou com falha
Você pode ver uma aplicação desse fluxo neste repositório do GitHub.

Figura 3. Fluxo de transação
Esse microsserviço também é responsável por gerenciar transações de fornecedores externos. Por exemplo, a solução inclui uma demonstração de um usuário recebendo um pagamento do PayPal. O esquema flexível do MongoDB permite variação nos documentos que representam transações.
O diagrama abaixo mostra o processo para a transação do PayPal simulado.

Figura 4. Fluxo de transação externa
Histórico de transações
Este serviço lida com registro e arquivamento de transações. Envolve as seguintes entidades:
Entidades de dados: histórico de transações, conta de usuário
Permissões: Leitura em Histórico de transações, Leitura em Conta do usuário
Entradas: Número da conta do usuário
Saídas: Dados do histórico de transações
Você pode ver um aplicação dessas entidades neste repositório do GitHub.
Reconciliação de conta
Este serviço verifica se os detalhes da conta estão atualizados. Envolve as seguintes entidades:
Entidades de dados: Conta Bancária, Transação
Permissões: Leitura/Gravação em Conta Bancária, Leitura em Transação
Entradas: Detalhes da transação, detalhes da conta bancária
Saídas: status de conciliação bancária, saldos ajustados das contas
Você pode ver um aplicação dessas entidades neste repositório do GitHub.
Verificação do pagamento
Este serviço processa o início de uma transação. O diagrama abaixo mostra as etapas de processamento de pagamentos, começando quando o serviço reage a um pagamento e terminando quando notifica o usuário se o pagamento foi aprovado ou rejeitado.
Este serviço envolve as seguintes entidades:
Entidades de dados: Transação, Conta de Usuário, Conta Bancária
Permissões: Leitura em Transação, Leitura em Conta de Usuário, Leitura em Conta Bancária
Entradas: Detalhes da transação, número da conta do usuário, detalhes da conta bancária
Saídas: Status da verificação (sucesso ou falha)

Figura 5. Fluxo de processamento de pagamento
Você pode ver um aplicação dessas entidades neste repositório do GitHub.
relatando
Para criar uma visualização dos seus dados de pagamento, você pode usar MongoDB Charts.
Isso envolve as seguintes entidades:
Entidades de dados: Histórico de Transações, Conta de Usuário
Permissões: Leitura em Histórico de transações, Leitura em Conta do usuário
Entradas: número da conta do usuário, critérios do relatório (período, tipo de transação)
Saídas: relatórios financeiros gerados
Notificações
Esses serviços usam MongoDB Change Streams para notificar o usuário de quaisquer alterações.
Isso envolve as seguintes entidades:
Entidades de dados: Conta de Usuário, Transação
Permissões: leitura em conta de usuário, leitura em transação
Entradas: detalhes da conta do usuário, detalhes da transação
Saídas: notificações e alertas para os usuários
Você pode ver um aplicação dessas entidades neste repositório do GitHub.
Esquema de Banco de Dados e Estruturas de Documentos
Os seguintes microsserviços e as seguintes estruturas de documento são a base da solução de pagamento baseada no MongoDB, garantindo escalabilidade, segurança e gerenciamento eficiente de dados.
Usuários
Os documentos na coleção users
têm a seguinte estrutura:
{ "_id": ObjectId, "username": String, "email": String, "password": String, // hashed "linkedAccounts": [ { "accountId": String, "accountType": String, "externalDetails": { "apiEndpoint": String, "accessKey": String, "additionalInfo": String } } ], "recentTransactions": [ { "transactionId": String, "date": Date, "amount": Number, "type": String, // e.g., 'debit', 'credit' "status": String // e.g., 'completed', 'pending' } ] }
contas
Os documentos na coleção accounts
têm a seguinte estrutura:
{ "_id": ObjectId, "userId": ObjectId, "accountNumber": String, // Encrypted "accountType": String, "balance": Number, "limitations": { "withdrawalLimit": Number, "transferLimit": Number, "otherLimitations": String }, "securityTags": [String], "encryptedDetails": String }
Transações
Os documentos na coleção transactions
têm a seguinte estrutura:
{ "_id": ObjectId, "account_id": ObjectId, "amount": Number, "date": Date, "type": String, // e.g., 'debit', 'credit' "status": String, // e.g., 'completed', 'pending', 'refund' "details": String, // Encrypted if sensitive "referenceData": { "sender": { ... }, "receiver": { ... }, "steps": [{ ... }], "relatedTransactions": [{ ... }], "notes": String, "reportingTags": [String] } }
Notificações
Os documentos na coleção notifications
têm a seguinte estrutura:
{ "_id": ObjectId, "relatedEntityId": ObjectId, "userIds": [ObjectId], "message": String, "createdAt": Date, "statuses": [ { "userId": ObjectId, "status": String // e.g., 'unread', 'read' } ] }
Construir a solução
O código deste tutorial pode ser encontrado neste repositório do GitHub. Para começar, siga as README
instruções do.
O tutorial utiliza os seguintes recursos nos diferentes serviços:
Interação entre microsserviços
Indexação e escalabilidade
JSON schema validation
Permissão e segregação de dados
Auditoria
Microsserviços de usuário e conta
modelo de documento: use a flexibilidade do MongoDB para criar estruturas de usuários e contas para diferentes contas e perfis de usuários.
Conector Sink Kafka: transmite dados de fontes externas.
Transações: Mantenha os dados de conta e usuário em conformidade com ACID.
Criptografia em uso: proteja seus dados durante todo o ciclo de vida.
Pesquisa de texto completo: pesquise IDs de contas e nomes de usuário.
Microsserviços de pagamentos
Fluxos de alterações: os pagamentos são orientados por eventos.
Coleções de séries temporais: use uma coleção de séries temporais para manter o histórico de pagamentos.
Criptografia em uso: proteja seus dados durante todo o ciclo de vida.
Microsserviços de notificação
Fonte Apache Kafka: use o Kafka para transmitir notificações para sistemas e usuários externos.
Fluxos de alteração: os fluxos de alteração capturam notificações, que são enviadas por Websockets.
Relatórios
Atlas Charts: Utilize Atlas Charts para pré-processar e visualizar seus dados.
Principais Aprendizados
Se você usar esta solução, leve em conta as seguintes considerações:
Segurança e conformidade: cumpra o GDPR, o PCI DSS e outros regulamentos financeiros.
Escalabilidade e desempenho: garanta o processamento eficiente de queries e o tratamento de dados.
Auditoria e registro: registro abrangente de pagamentos para dar suporte às auditorias.
Backup e recuperação: plano robusto para recuperação de dados usando o MongoDB Atlas.
Autores
Pavel Duchovny, Relações com Desenvolvedores, MongoDB
Shiv Pullepu, Soluções para o Setor, MongoDB
Raj Jain, Arquiteto de Soluções, MongoDB
Jack Yallop, Marketing do Setor, MongoDB