Skip to main content
logo
Forgotten your username or password?
  • Todos os cursos
  • English ‎(en)‎
    • English ‎(en)‎
    • Español - Internacional ‎(es)‎
    • Português - Brasil ‎(pt_br)‎

Programação Concorrente Distribuída
Projeto Final

Opened: Monday, 3 November 2025, 12:00 AM
Due: Monday, 1 December 2025, 12:00 AM

1. Regras e Prazos

• Grupos já definidos. Quem não estiver em grupo até 03/11/2025 realiza individualmente.

• Cada integrante deve ter commits no repositório do grupo.

• Entrega: link do repositório 

2. Três Trilhas Possíveis

Trilha C — HTTP (FastAPI no VS Code) [recomendada para começar]

Baseie-se no projeto-guia da apostila v2 (serviço acadêmico na 8010). Rotas: agendar aula (orquestrador chama salas/turmas) e lançar nota (valida matrícula e chama notas).

Trilha B — RabbitMQ

Docker com rabbitmq:management. Produtor publica em queue (ex.: notas) e consumidor persiste/retorna.

Trilha A — Kafka

Docker com zookeeper+kafka. Orquestrador publica evento (ex.: aula_agendada); outro serviço consome e atualiza estado.

3. O que Todo Projeto Deve Ter

• 2–4 serviços com responsabilidades claras.

• Comunicação entre serviços (HTTP, RabbitMQ ou Kafka).

• 1 teste e2e automatizado do fluxo principal.

• Observabilidade: logs claros.

• Documentação: README.md (setup, como rodar, como testar, decisões), requests.http (ou Postman).

4. Início Rápido (Trilha C — HTTP com Apostila v2)

1) Abrir o projeto no VS Code (pasta com run_all.py e requirements.txt).

2) Criar e ativar venv + instalar dependências:

python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt

3) Subir todos os serviços:

python run_all.py

4) Testar (Swagger):

Acadêmico: http://127.0.0.1:8010/docs
Salas: http://127.0.0.1:8001/docs
Turmas: http://127.0.0.1:8002/docs
Notas: http://127.0.0.1:8003/docs

5) Fluxo (via Swagger):

POST /turmas {"turma_id":"ADS101","professor":"simone"}
POST /matriculas {"turma_id":"ADS101","aluno_id":"A1"}
POST /agendar-aula {"turma_id":"ADS101","sala":"LAB-01","inicio":"2025-11-05T19:00","fim":"2025-11-05T21:00"}
POST /lancar-nota {"turma_id":"ADS101","aluno_id":"A1","avaliacao":"P1","nota":8.5}
GET /nota/ADS101/A1

5. Testes via Terminal (PowerShell)-10/11/2025

Health:

curl 127.0.0.1:8010/health
curl 127.0.0.1:8001/health
curl 127.0.0.1:8002/health
curl 127.0.0.1:8003/health

POSTs com JSON (use Invoke-RestMethod no PowerShell):

$h = @{ "Content-Type" = "application/json" }
Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8002/turmas -Headers $h -Body '{"turma_id":"ADS101","professor":"simone"}'
Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8002/matriculas -Headers $h -Body '{"turma_id":"ADS101","aluno_id":"A1"}'
Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8010/agendar-aula -Headers $h -Body '{"turma_id":"ADS101","sala":"LAB-01","inicio":"2025-11-05T19:00","fim":"2025-11-05T21:00"}'
Invoke-RestMethod -Method Post -Uri http://127.0.0.1:8010/lancar-nota -Headers $h -Body '{"turma_id":"ADS101","aluno_id":"A1","avaliacao":"P1","nota":8.5}'
curl 127.0.0.1:8003/nota/ADS101/A1

6. Ampliações Sugeridas (Escolher 1–2)-17/11/2025

• Cancelar aula / Reagendar (impacta salas e turmas).

• Persistência com SQLite por serviço.

• Timeouts e retries no orquestrador.

• Relatórios simples (notas por aluno, ocupação de salas).

7. Entregáveis do Repositório-17/11/2025

• services/ (código de cada serviço)

• tests/test_e2e.py (fluxo ponta-a-ponta)

• requests.http (ou Postman)

• docker-compose.yml (se optar por Kafka ou RabbitMQ)

• README.md (arquitetura, setup, testes, decisões, responsáveis)

8. Critérios de Avaliação (100 pts)

Arquitetura & isolamento (30)

Confiabilidade (20)

Código & organização (20)

Testes (15)

Observabilidade (10)

Doc & apresentação (5)

9. Troubleshooting (baseado na Apostila v2)24/11/2025

• "Could not open requirements file": rode na pasta raiz (onde há run_all.py / requirements.txt).

• Porta em uso: acadêmico está na 8010. Se necessário, use outra porta: uvicorn services.academico:app --port 8011.

• PowerShell: "curl" é Invoke-WebRequest. Para POST com JSON, use Invoke-RestMethod ou chame curl.exe.

• "No module named services": você rodou dentro de services/. Na raiz use services.academico:app; dentro de services use academico:app.

10. Checklist de Entrega

□ Build/execução limpa

□ Fluxo e2e funcionando (documentado)

□ Comunicação entre serviços demonstrada

□ Logs mostram o caminho da requisição/mensagem

□ README claro + requests.http/coleção Postman

 Apresentação em sala através de Seminário: demonstrando o fluxo -01/12/2025

◄ apostila do passo a passo
apostila VC Code para microserviços ►
Skip Navigation
Navigation
  • Home

    • IFSC

      • My courses

      • Tags

      • ForumAvisos do site

    • My courses

    • Courses

      • Câmpus Gaspar

        • Técnico

        • Graduação

          • DESIGN DE MODA [554]

          • PROCESSOS GERENCIAIS [556]

          • ANÁLISE E DESENVOLVIMENTO DE SISTEMAS [547]

            • 2023/2

            • 2024/1

            • 2024/2

            • 2025/1

            • 2025/2

              • ENI054702-T01-230081

              • COM054702-T01-229961

              • GPR054704-T01-230051

              • MAT054701-T01-230078

              • PII054702-T01-230080

              • RDC054704 - REDES DE COMPUTADORES (2025 .2 - T01)-...

              • Programação Concorrente Distribuída

                • General

                • Exercicios

                • Material Apoio

                • Topic 3

                • Projeto Final Da Disciplina

                • Entrega da Atividade

                  • AssignmentProjeto Final

                • Topic 6

                • Topic 7

              • AEE054706-T01-233468

              • ARQ054701-T01-228807

              • SOP054706-T01-230190

              • SIN054706-T01-230191

            • Template Curso ADS

            • 24.1 - INTRODUÇÃO À ENGENHARIA DE SOFTWARE

            • 24.1 - ENGENHARIA DE SOFTWARE II

            • 24.1 - GERÊNCIA DE PROJETOS

            • 24.1 - PROGRAMAÇÃO ESTRUTURADA

            • 24.1 - ENGENHARIA DE SOFTWARE I

        • FIC - Formação Inicial e Continuada

        • Pós-Graduação

        • Lato Sensu

        • PCD054705 - PROGRAMAÇÃO CONCORRENTE E DISTRIBUÍDA ...

        • Elas Digitais - OBI

        • IFB053301

      • Câmpus Araranguá

      • Câmpus Caçador

      • Câmpus Canoinhas

      • Câmpus Chapecó

      • Câmpus Criciúma

      • Câmpus Florianópolis

      • Câmpus Florianópolis-Continente

      • Câmpus Garopaba

      • Câmpus Itajaí

      • Câmpus Jaraguá do Sul - Centro

      • Câmpus Jaraguá do Sul - Rau

      • Câmpus Joinville

      • Câmpus Lages

      • Câmpus Palhoça Bilíngue

      • Câmpus São Carlos

      • Câmpus São José

      • Câmpus São Lourenço do Oeste

      • Câmpus São Miguel do Oeste

      • Câmpus Tubarão

      • Câmpus Urupema

      • Câmpus Xanxerê

      • Reitoria

Back

You are currently using guest access (Log in)