O CloudCost IQ é uma solução avançada de Observabilidade de Custos Cloud, projetada para fornecer insights em tempo real sobre infraestruturas AWS. Mais do que um simples dashboard, ele utiliza algoritmos de detecção de anomalias para prevenir surpresas na fatura e garantir a governança de tags.
- 🚀 Deploy Moderno (PaaS): Hospedado integralmente na Railway (Frontend Nginx, Backend FastAPI, e banco gerenciado PostgreSQL), garantindo CI/CD automagicamente via integração direto com o GitHub.
- 🛡️ Arquitetura de Menor Privilégio: Roles IAM granulares que limitam o acesso apenas ao necessário para leitura de custos da AWS Cost Explorer via boto3.
- 📈 Detecção de Anomalias: Algoritmo de Média Móvel (Rolling Average) para identificar picos atípicos de consumo em menos de 24h.
- 🏷️ Governance Engine: Relatório automatizado de conformidade de tags para garantir que cada centavo seja rastreado.
- 💎 UX Premium: Interface desenvolvida em React + Vite, suporte a Dark Mode, gráficos reativos (Recharts) e exportação de relatórios C-Level.
graph TB
User((Usuário))
subgraph Railway_Cloud["Railway (PaaS)"]
ALB[Railway Edge Router]
Frontend[Frontend Service: Vite + React + Nginx]
Backend[Backend Service: FastAPI]
DB[(PostgreSQL Integrado)]
end
subgraph External_Services["AWS Cloud"]
CE_API[AWS Cost Explorer API]
IAM_Role[CostReader IAM Role]
end
User -->|HTTPS Base URL| ALB
ALB -->|Roteamento| Frontend
ALB -->|Proxy Interno| Backend
Frontend -->|Proxy Pass API| Backend
Backend -->|SQL| DB
Backend -->|Assume Role via Keys| IAM_Role
IAM_Role -->|Query| CE_API
Este projeto foi projetado para rodar em PaaS (Platform as a Service) modernos. O processo de deploy é otimizado para o Railway:
- Crie um novo projeto no Railway.
- Adicione os três serviços:
- PostgreSQL: Crie um plugin de banco de dados e copie a
DATABASE_URL. - Backend: Crie um serviço a partir do diretório
/backenddo repositório. Defina variáveis como as credenciais AWS e a conexão do banco. - Frontend: Crie um serviço a partir do diretório
/frontend.
- PostgreSQL: Crie um plugin de banco de dados e copie a
Para resolver erros de CORS ou Proxy Pass Reverso (como 502 Bad Gateway e 400 Bad Request no Nginx), configure:
BACKEND_URL: A URL pública sem barra no final gerada para o seu serviço de Backend (Ex:https://seu-app-backend.up.railway.app).
O Nginx no frontend fará um proxy pass e rotear requisições em /api/, /auth/ e /costs/ diretamente para o backend de forma transparente.
| Variável | Serviço | Obrigatório | Descrição |
|---|---|---|---|
AWS_ACCESS_KEY_ID |
Backend | Sim | Access Key com permissões via IAM Role para Cost Explorer. |
AWS_SECRET_ACCESS_KEY |
Backend | Sim | Secret Access. |
AWS_REGION |
Backend | Sim | Usualmente us-east-1 que processa Billing AWS. |
DATABASE_URL |
Backend | Sim | URL gerada automaticamente pelo Railway Postgres. |
SECRET_KEY |
Backend | Sim | Chave randômica para hash e assinatura de JWT Tokens. |
BACKEND_URL |
Frontend | Sim | URL principal gerada para o Backend (O Nginx resolve a ponte). |
Nota sobre IaC: Arquivos do terraform/ foram preservados como referência de uma arquitetura legada (ECS/Fargate) para versionamento, porém a branch funcional padrão foca de ponta-a-ponta na simplicidade via Railway.
| Camada | Tecnologia |
|---|---|
| Frontend | React, Tailwind CSS, Recharts, Vite, Nginx Proxy |
| Backend | Python 3.12, FastAPI, SQLAlchemy, Pydantic |
| Deployment | Docker, Nginx, Railway, GitHub Actions CI |
| Cloud | AWS (Cost Explorer Integrado) |
Distribuído sob a licença MIT. Veja LICENSE para mais informações.
Desenvolvido com IA para fins de otimização de infraestrutura.
