A solução proposta é a seguinte:
-
Base A: Para a Base A, que contém dados extremamente sensíveis, sugiro utilizar um sistema de armazenamento altamente seguro e com acesso de baixa performance. Uma opção seria o uso de um banco de dados criptografado e com controle de acesso rigoroso, como o PostgreSQL com suporte a criptografia de dados em repouso. Outra opção seria manter tudo com os serviços cloud da AWS, usando o Amazon RDS (Relational Database Service) com instâncias do Amazon Aurora que tem plena compatibilidade com o PostgreSQL.
-
Base B: Para a Base B, que possui dados críticos e precisa de um acesso mais rápido, sugiro o uso de um banco de dados de alto desempenho e escalabilidade, como o MongoDB. Além disso, pode ser necessário ter um cluster de servidores para suportar consultas e extração de dados por meio de algoritmos de aprendizado de máquina.
-
Base C: Para a Base C, que não possui dados críticos, mas requer acesso extremamente rápido, pode ser usado um banco de dados em memória, como o Redis. Isso permitirá um acesso rápido aos dados, adequado para a funcionalidade de rastreamento de eventos relacionados a um CPF.
-
Banco de Dados: PostgreSQL criptografado, ou Amazon RDS/Aurora para a Base A, MongoDB para a Base B e Redis para a Base C.
-
Linguagem de Programação: Uma linguagem de programação adequada para desenvolver os sistemas de micro-serviços, como Java, Python ou Node.js.
-
Frameworks: Utilização de frameworks como Spring Boot (Java), Flask (Python) ou Express.js (Node.js) para facilitar o desenvolvimento dos serviços.
-
Infraestrutura: Uso de serviços de nuvem, como AWS (Amazon Web Services), para garantir escalabilidade, disponibilidade e segurança dos sistemas.
- Micro-serviços: Implementação da arquitetura de micro-serviços, que permite a modularidade e flexibilidade do sistema, facilitando a manutenção e evolução dos serviços individualmente. Cada serviço seria responsável por acessar e consumir os dados específicos de cada base.
-
Base A: CPF, Nome, Endereço, Lista de dívidas.
-
Base B: CPF, Idade, Lista de bens, Endereço, Fonte de renda.
-
Base C: CPF, última consulta do CPF em um Bureau de crédito, Movimentação financeira nesse CPF, Dados relacionados à última compra com cartão de crédito vinculado ao CPF.
-
API RESTful: Criação de APIs RESTful para disponibilizar os dados aos interessados. Cada serviço (micro-serviço ou nano-serviço) teria sua própria API para acessar os dados específicos da base de dados que ele consome, desenvolvidas com o Spring MVC e implantadas utilizando o Amazon API Gateway.
-
Autenticação e Autorização: Implementação de um sistema de autenticação e autorização robusto para controlar o acesso aos dados sensíveis.
graph LR
Start((Start))
BaseA["Base A"]
BaseB["Base B"]
BaseC["Base C"]
Processamento{Processamento}
Armazenamento{Armazenamento}
Disponibilizacao{Disponibilização}
SimCriticos((SimCriticos))
NaoCriticos((NaoCriticos))
SimScore((SimScore))
NaoScore((NaoScore))
SimRastreamento((SimRastreamento))
NaoRastreamento((NaoRastreamento))
Start --> BaseA
Start --> BaseB
Start --> BaseC
BaseA --> Processamento
BaseB --> Processamento
BaseC --> Processamento
Processamento --> Armazenamento
Armazenamento --> Disponibilizacao
BaseA -- Dados Críticos? --> SimCriticos
BaseA -- Dados Críticos? --> NaoCriticos
SimCriticos --> Processamento
NaoCriticos --> Processamento
BaseB -- Dados para Score de Crédito? --> SimScore
BaseB -- Dados para Score de Crédito? --> NaoScore
SimScore --> Processamento
NaoScore --> Processamento
BaseC -- Dados de Rastreamento? --> SimRastreamento
BaseC -- Dados de Rastreamento? --> NaoRastreamento
SimRastreamento --> Processamento
NaoRastreamento --> Processamento
Processamento --> Disponibilizacao
Disponibilizacao((End))