@marcos_feitoza/personal-finance-market-data-crypto
v1.0.1
Published
Este projeto é um microsserviço independente responsável por buscar dados de mercado para criptomoedas.
Readme
Serviço de Dados de Mercado (Cripto) - Personal Finance
Este projeto é um microsserviço independente responsável por buscar dados de mercado para criptomoedas.
Propósito
Este serviço atua como um proxy e um adaptador para a API da CoinGecko. Sua responsabilidade é fornecer dados de mercado, como preços ao vivo e validação de ativos, para outros serviços no sistema, centralizando a lógica de acesso a dados de criptomoedas em um único lugar.
Tecnologias
- Framework: FastAPI
- Fonte de Dados: Biblioteca
pycoingecko - Deploy: Docker & Kubernetes (via Helm)
- Dependências Locais:
personal-finance-backend-shared: Para utilitários compartilhados, como o de logging.
Como Começar
Pré-requisitos
- Python 3.9+
- Docker
- Acesso ao repositório
personal-finance-backend-sharedno mesmo nível de diretório.
Instalação
- Navegue até o diretório raiz do monorepo.
- Instale as dependências. O uso de um ambiente virtual (
venv) é recomendado.
Nota: Opip install -r personal-finance-backend-market-data-crypto/requirements.txtrequirements.txtdeste serviço espera que apersonal-finance-backend-sharedseja instalada em modo editável.
Como Executar
Localmente para Desenvolvimento
A partir do diretório raiz (finace), execute o seguinte comando para iniciar o servidor com hot-reload:
uvicorn personal-finance-backend-market-data-crypto.app.main:app --reload --app-dir .Isso iniciará o serviço em http://127.0.0.1:8000.
Via Docker (Produção)
- Navegue para o diretório deste serviço (
personal-finance-backend-market-data-crypto). - O script
dockerbuild.shautomatiza o processo de:- Copiar a biblioteca compartilhada para um diretório local temporário.
- Construir a imagem Docker multiplataforma.
- Publicar a imagem no Docker Hub.
./dockerbuild.sh - O deploy no Kubernetes é gerenciado pelo Argo CD a partir do Helm chart em
/helm.
Estrutura da API
GET /api/crypto/prices: Busca os preços atuais para uma lista de IDs de criptomoedas.- Exemplo:
/api/crypto/prices?ids=bitcoin,ethereum - Resposta:
{ "bitcoin": { "cad": 68000.50 }, "ethereum": { "cad": 3500.25 } }
- Exemplo:
GET /api/crypto/validate/{query}: Valida uma criptomoeda por ID, símbolo ou nome.- Exemplo:
/api/crypto/validate/btc - Resposta:
{ "id": "bitcoin", "symbol": "btc", "name": "Bitcoin" }
- Exemplo:
GET /api/crypto/health: Endpoint de Health Check.
Logging
O serviço utiliza um sistema de logging estruturado (JSON) centralizado na personal-finance-backend-shared.
- Correlation ID: Todas as requisições que chegam com um header
X-Correlation-ID(propagado pelocore-service) usarão este ID em todos os seus logs. Se nenhuma ID for recebida, uma nova será gerada. Isso permite rastrear uma operação através de todos os microsserviços. - Filtragem: Por ser JSON, os logs são facilmente pesquisáveis e filtráveis em ferramentas de monitoramento.
