Este projeto implementa uma metodologia justa para comparar a performance entre Docker Local e Docker Offload (Build Cloud), eliminando interferências de cache e garantindo condições equivalentes.
sequenceDiagram
participant Usuário
participant Script(run_fair_tests.sh)
participant Docker Local
participant Docker Offload
participant Serviço (heavy_runner)
participant Python Script (heavy_task.py)
Usuário->>Script(run_fair_tests.sh): Executa script de teste justo
Script(run_fair_tests.sh)->>Docker Local: Limpa cache e ambiente
Script(run_fair_tests.sh)->>Docker Local: Executa build e run (docker-compose)
Docker Local->>Serviço (heavy_runner): Inicia container
Serviço (heavy_runner)->>Python Script (heavy_task.py): Executa tarefa pesada
Python Script (heavy_task.py)->>Serviço (heavy_runner): Retorna tempo/resultados
Serviço (heavy_runner)->>Docker Local: Finaliza execução
Script(run_fair_tests.sh)->>Docker Offload: Limpa cache e ambiente
Script(run_fair_tests.sh)->>Docker Offload: Executa build e run (docker-compose)
Docker Offload->>Serviço (heavy_runner): Inicia container (na nuvem)
Serviço (heavy_runner)->>Python Script (heavy_task.py): Executa tarefa pesada
Python Script (heavy_task.py)->>Serviço (heavy_runner): Retorna tempo/resultados
Serviço (heavy_runner)->>Docker Offload: Finaliza execução
Script(run_fair_tests.sh)->>Usuário: Gera relatório comparativo
Realizar uma comparação verdadeiramente justa entre:
- Docker Local: Execução em hardware local sem offload
- Docker Offload: Execução na nuvem usando Docker Build Cloud
Para executar os testes, utilize o script run_fair_tests.sh
que automatiza todo o processo de limpeza, execução e geração de relatórios.
./run_fair_tests.sh
O script irá:
- ✅ Limpar todo cache antes dos testes
- 🏠 Executar teste local (contexto
default
) - 🧹 Limpar ambiente entre testes
- ☁️ Executar teste cloud (contexto
docker-cloud
) - 📊 Gerar relatório comparativo
O projeto usa uma tarefa computacional intensiva em Python que executa:
- Operações matemáticas (sin, cos, sqrt)
- Loop de 100 milhões de iterações (configurável)
- Medição precisa de tempo de execução
# No docker-compose.yaml
environment:
ITERATIONS: "200000000" # Para teste mais pesado
- Docker Desktop com Docker Offload habilitado
- Docker Build Cloud configurado
- Python 3 (para verificação local)
- bc para cálculos (já disponível no sistema)
# Verificar contextos Docker
docker context ls
# Verificar contexto ativo
docker context show
# Verificar Build Cloud
docker buildx ls
Com a metodologia justa, esperamos medir:
- 🖥️ Hardware: CPU/RAM cloud vs local
- 🌐 Overhead: Rede e transferência de dados
- ⚡ Otimizações: Runtime Docker otimizado na nuvem
- 🏗️ Build: Performance sem cache para ambos
- CSV:
docs/test_results.csv
com dados brutos - Terminal: Relatório em tempo real com percentuais
- Comparação: Diferença percentual automática
Docker Offload é especialmente vantajoso para:
- CPU Intensivo: Como demonstrado nos testes
- Builds Pesados: Projetos com muitas dependências
- Hardware Limitado: Laptops, VMs, ambientes restritos
- Equipes: Cache compartilhado entre desenvolvedores
- CI/CD: Builds paralelos e escaláveis
# Executa testes imediatamente
./run_fair_tests.sh
# Monitora resultados em tempo real
# Arquivos gerados:
# - test_results.csv (dados)
# - Output detalhado no terminal
Para mais informações sobre Docker Offload, consulte o documento principal docs/docker-offload.md
.