kilmmer / stock-exchanges

Creation of an project of stocks exchange
0 stars 0 forks source link

Create main business logic #1

Open kilmmer opened 1 year ago

kilmmer commented 6 months ago

Entidades Iniciais:

User (Usuário): id: UUID name: string email: string passwordHash: string createdAt: datetime updatedAt: datetime

Stock (Ação): symbol: string (ex: AAPL, GOOG) name: string currentPrice: float marketCap: float createdAt: datetime updatedAt: datetime

Transaction (Transação): id: UUID userId: UUID (referência ao User) stockSymbol: string (referência ao Stock) type: string (BUY/SELL) quantity: int price: float total: float createdAt: datetime

PriceHistory (Histórico de Preço): id: UUID stockSymbol: string (referência ao Stock) price: float timestamp: datetime

Regras Básicas Autenticação e Autorização

Use o Firebase Authentication para gerenciar logins e segurança. Verifique a autorização do usuário em cada transação e consulta de dados. Validação de Dados

Valide todas as entradas no backend para garantir que os dados estão no formato correto. Use o PostgreSQL para transações e integridade referencial. Transações

Assegure-se de que as transações financeiras são atômicas. Use mecanismos de locking e isolamento de transações no PostgreSQL para evitar inconsistências. Atualizações em Tempo Real

Utilize Socket.io no frontend para fornecer atualizações em tempo real dos preços das ações. Envie atualizações de preços via RabbitMQ e consuma-as no NodeJS para repassar ao Socket.io. Monitoramento e Logs

Utilize Datadog para monitorar a performance do sistema. Configure alertas para identificar problemas de performance ou erros. Comunicação entre Serviços

Utilize gRPC para comunicação eficiente entre os microserviços em NodeJS e Go. Use RabbitMQ para enviar mensagens assíncronas entre serviços, especialmente para operações que não precisam de resposta imediata. Exemplo de Fluxo de Trabalho Registro e Login de Usuário

O usuário se registra ou faz login através do Firebase Authentication. Após a autenticação, o frontend se conecta ao backend via APIs RESTful. Consulta de Preços de Ações

O frontend solicita os preços atuais das ações via API REST. O backend (NodeJS) consulta o banco de dados PostgreSQL e retorna os preços. Compra/Venda de Ações

O usuário inicia uma transação de compra ou venda. O frontend envia a solicitação para o backend. O backend valida a solicitação, processa a transação e atualiza os bancos de dados. O backend envia uma mensagem para o RabbitMQ para notificar outros serviços. O frontend recebe a confirmação e atualiza a interface em tempo real via Socket.io. Atualização de Preços

Um serviço em Go coleta dados de preços de ações de uma API externa. Os preços são enviados ao RabbitMQ. O backend consome essas mensagens e atualiza o banco de dados PostgreSQL e os clientes conectados via Socket.io.