Acompanhe: Project Board
Nota: O projeto teve uma pausa no desenvolvimento, que durou de 29 Mar 2024 até 02 Jul 2024.
Projeto de portfólio, tem como objetivos aprendizado, prática e demonstração das minhas habilidades como desenvolvedor. Portanto, as escolhas no projeto são, principalmente, com esses objetivos.
Este projeto tem como objetivo desenvolver um sistema robusto para o armazenamento e controle de documentos financeiros. Ele oferece aos clientes e administradores de instituições financeiras a capacidade de fazer upload, gerenciar e recuperar documentos financeiros de forma eficiente.
-
Documentos: Os documentos são inicialmente armazenados localmente no servidor e, posteriormente transferidos para um serviço de armazenamento em nuvem. Sendo requisito manter versões do documento para visualizar seu histórico.
-
Consultas: Cada documento é acompanhado de metadados, incluindo nome, data, tipo de documento e informações relacionadas a transações financeiras.
-
Segurança: O sistema mantém nível de segurança e controle de acesso rigoroso, além de observabilidade e registro de atividades para fins de auditoria.
-
Resiliência: O sistema deve ser projetado para minimizar o impacto de falhas e garantir que as operações possam ser retomadas o mais rápido possível após uma falha.
⇝ Registros de engenharia de software.
⇝ Bug Log. Registro de bugs/problemas e suas soluções.
Tenho o hábito de criar meu próprio material durante o estudo. A partir deste projeto, decidi publicá-los.
⇝ Desenvolvimento voltado para a auditoria em Software.
⇝ Como configurar erros e logs corretamente.
Bibliotecas e pacotes que criei em razão desse projeto.
⇝ Logella.
Linguagem: Go (Golang)
Arquitetura: Microservices e Domain-Driven Design (DDD)
- Banco de dados: CockroachDB
- Driver de banco de dados: Pgx
- Armazenamento: Google Cloud Storage
- Cache: Memcached
- Transporte:
- Filas: RabbitMQ
- Comunicação de Serviço: gRPC
- API: Rest, GraphQL e gRPC
- Roteador: go-chi
- Framework GraphQL: 99designs/gqlgen
- Logs: Zerolog
- Métricas: Prometheus
- Busca e Análise: Elasticsearch
- Autenticação e Autorização: JSON Web Token (JWT)
- Criptografia (password): Bcrypt
- Criptografia (Dados sensíveis): AES e SHA-256
- Contêineres: Docker
- CI/CD: Github Actions