Este projeto implementa vários algoritmos de ordenação famosos (Bubble Sort, Bubble Sort Improved, Quick Sort e Merge Sort) utilizando o padrão de projeto Strategy em Ruby. A execução dos algoritmos é rastreada com OpenTelemetry, e os logs/traces são visualizados usando o Jaeger, uma ferramenta open-source de rastreamento.
- Cristian Prochnow
- Gustavo Henrique Dias
- Lucas Serpa
- Marlon de Souza
- Ryan Gabriel Bromati
- Docker: Necessário para rodar a aplicação e o Jaeger em contêineres.
- Docker Compose: Para orquestrar os serviços.
- Ruby: Apenas necessário se você quiser rodar localmente fora do Docker (versão 3.2 recomendada).
- Bundler: Para gerenciar as dependências Ruby (instalado com
gem install bundler).
Se quiser rodar localmente sem Docker:
bundle installNo diretório raiz do projeto, execute:
docker-compose up --build--build: Garante que as imagens Docker sejam reconstruídas com as últimas mudanças.- Isso inicia dois serviços:
sorting_app: A aplicação Ruby que executa os algoritmos.jaeger: O servidor Jaeger para visualizar os traces.
- As ordenação será retornada dentro da pasta results:
└── results ├── bubble_sort └── bubble_sort_enhanced
-
Abra um navegador e acesse:
http://localhost:16686 -
Na interface do Jaeger:
- No campo Service, selecione
sooortinnng. - Clique em Find Traces.
- Você verá os traces com spans para cada algoritmo (ex.:
sort_BubbleSort,sort_QuickSort), incluindo:- Tempo de execução (
execution_time_ms). - Tamanho do array (
array_size). - Resultado ordenado (
sorted).
- Tempo de execução (
- No campo Service, selecione
Quando terminar, volte ao terminal e pressione Ctrl+C. Para remover os contêineres:
docker-compose down