Skip to content

flavio-muniz/Cloud-IsCoolGPT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎓 IsCoolGPT - Cloud Computing AV2

Assistente inteligente de estudos baseado em LLM (Gemini 2.0), containerizado com Docker e orquestrado via Pipeline CI/CD.

Status Python Docker CI/CD

📋 Visão Geral do Projeto

O IsCoolGPT é uma aplicação Fullstack desenvolvida como projeto final da disciplina de Cloud Computing. O sistema atua como um tutor virtual para estudantes, utilizando a API Google Gemini 2.0 Flash para processar linguagem natural com alta velocidade e baixo custo.

A arquitetura foi projetada seguindo os princípios do The Twelve-Factor App, focando em portabilidade (Docker), paridade entre desenvolvimento/produção e automação total de deploy.

🔗 Link do Projeto (Deploy): https://cloud-iscoolgpt.onrender.com


🏗️ Arquitetura e Decisões Técnicas (FinOps)

Para atender aos requisitos de alta disponibilidade e escalabilidade, optou-se por uma arquitetura PaaS (Platform as a Service).

Diagrama de Arquitetura

graph LR
    User[Estudante 🧑‍🎓] -- HTTPS --> RenderLB[Render Load Balancer 🌐]
    RenderLB --> Docker[Docker Container 🐳]
    subgraph "Aplicação (FastAPI)"
        Front[Frontend HTML/JS]
        Back[Backend Python]
    end
    Docker --> Back
    Docker --> Front
    Back -- API Key --> Gemini[Google Gemini API 🧠]
    Back -- Log --> Monitor[Logs & Health Check 📊]
Loading

💡 Justificativa Arquitetural: AWS vs. Render

Embora a AWS (ECS/ECR) seja um padrão de indústria, para este projeto adotou-se o Render baseando-se em princípios de FinOps (Gestão Financeira em Nuvem) e eficiência operacional:

  1. Otimização de Custos (Cost Avoidance): Uma arquitetura AWS com Load Balancer (ALB), NAT Gateway e Cluster ECS Fargate geraria custos fixos estimados em ~$40/mês, inviabilizando o projeto para fins acadêmicos. O Render oferece containerização gerenciada com custo zero no tier gratuito, cumprindo o requisito funcional sem desperdício financeiro.
  2. Redução de Complexidade Operacional: O Render abstrai a complexidade de gerenciamento de VPCs, Security Groups e Clusters Kubernetes, permitindo que o foco do desenvolvimento permaneça na qualidade do código e na lógica da IA.
  3. Entrega Contínua Nativa (CD): A integração direta "Git-to-Deploy" do Render atende ao requisito de "Automação Inteligente" de forma nativa, eliminando a sobrecarga de configuração manual de pipelines complexas como AWS CodePipeline para este escopo.

🛠️ Stack Tecnológica

  • Frontend: HTML5, CSS3 (Glassmorphism UI), JavaScript Vanilla (Fetch API).
  • Backend: Python 3.11 com FastAPI (Framework assíncrono de alta performance).
  • IA: Integração com Google Gemini 2.0 Flash via SDK google-generativeai.
  • Containerização: Docker (Imagem base python:3.11-slim otimizada).
  • Testes: Pytest (Unitários) e Httpx.
  • CI (Continuous Integration): GitHub Actions.
  • CD (Continuous Delivery): Render (Deploy automático via branch production).

🚀 Como Executar Localmente

Pré-requisitos

  • Docker instalado.
  • Git instalado.
  • Chave de API do Google Gemini (Google AI Studio).

Passo a Passo

  1. Clone o repositório:

    git clone https://github.com/flavio-muniz/Cloud-IsCoolGPT
    cd Cloud-IsCoolGPT
  2. Configure a Variável de Ambiente: Linux/Mac/Git Bash:

    export GEMINI_API_KEY="SUA_CHAVE_AQUI"

    Windows Powershell:

    $env:GEMINI_API_KEY="SUA_CHAVE_AQUI"
  3. Build e Execução com Docker:

    # Constrói a imagem Docker
    docker build -t iscoolgpt .
    
    # Roda o container na porta 80
    docker run -p 80:80 -e GEMINI_API_KEY=$GEMINI_API_KEY iscoolgpt
  4. Acesse: Abra o navegador em http://localhost.


🔄 Pipeline de CI/CD (DevOps)

O projeto implementa um ciclo de vida de software moderno e automatizado:

  1. Desenvolvimento: O código é desenvolvido e enviado para a branch main.
  2. Integração Contínua (CI):
    • A cada push na main, o workflow do GitHub Actions (ci.yml) é acionado.
    • Ele instala as dependências e executa a bateria de testes automatizados com pytest.
    • Quality Gate: Se os testes falharem, o pipeline quebra, impedindo o avanço de código defeituoso.
  3. Entrega Contínua (CD):
    • Após a aprovação nos testes, o código é mesclado (merge) para a branch production.
    • O Render monitora essa branch e inicia automaticamente o build do container Docker.
    • O deploy é realizado com Zero Downtime, garantindo que a versão antiga continue rodando até a nova estar pronta.

🧪 Estratégia de Testes

Os testes automatizados garantem a integridade da API e a resiliência do sistema:

  • Mocking de IA: Utilizamos unittest.mock para simular as respostas do Google Gemini. Isso permite testar a lógica do backend sem gastar cota da API e sem depender de conexão externa durante os testes.
  • Health Check: Verificação automática da rota /health para garantir que o container está saudável.

Comando para rodar testes manuais:

pip install -r requirements.txt
python -m pytest

📊 Evidências e Monitoramento

Esta seção comprova o funcionamento da arquitetura de DevOps e da aplicação em nuvem.

1. Pipeline de CI (GitHub Actions)

Evidência de testes automatizados rodando com sucesso a cada push.

GitHub Actions

Status do último workflow: Sucesso (Passing)

2. Deploy em Produção (Render)

Aplicação rodando em ambiente de nuvem pública, acessível via HTTPS.

Render Deploy

Ambiente de Produção: Live

Render Deploy

Deploy automático após subir para produção

3. Logs de Monitoramento

Registro de atividades e requisições em tempo real via dashboard do Render.

Logs

Logs comprovando o recebimento de requisições e status 200 OK.


✒️ Autor

Flávio

  • 🎓 Graduando em Ciência da Computação
  • 🔬 Pesquisador em Sistemas Embarcados e IoT
  • ☁️ Entusiasta de Cloud Computing & DevOps

📄 Licença

Este projeto foi desenvolvido para fins acadêmicos. Sinta-se livre para usar como referência.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published