Um juiz on-line em microserviços para escalabilidade em plataformas de ensino de programação

  • William Valther Martins UFMA
  • Ádilla Roberta Gomes Pereira UFMA
  • Sávio Patrick Costa Câmara UFMA
  • Allan Kássio Beckman Soares da Cruz UFMA
  • Carlos de Salles Soares Neto UFMA

Resumo


Esse trabalho apresenta a migração do juiz da plataforma Cosmo de um monólito para microsserviços assíncronos com mensageria, sandboxing e observabilidade. Em testes controlados com Docker/RabbitMQ (quatro cenários de 50–1.000 submissões), a latência de aceitação caiu de 4.000 ms para 10,5 ms (–99,74%) e o pico de throughput subiu de 1 req/s para 71.429 req/s. A análise estática indicou ganhos de manutenibilidade (menos complexidade e acoplamento, maior cobertura). Discutimos limitações (complexidade operacional, consistência eventual) e trabalhos futuros (automação de análise estática, chaos testing e tracing).
Palavras-chave: Avaliação de Desempenho, Computação em Nuvem, Educação em Informática

Referências

Arifin, J. and Perdana, R. S. (2019). Ugrade: Autograder for competitive programming using contestant pc as worker. In 2019 International Conference on Data and Software Engineering (ICoDSE), pages 1–6. IEEE.

Beck, K., Fowler, M., and Beck, G. (1999). Bad smells in code. Refactoring: Improving the design of existing code, 1(1999):75–88.

Cortes, P. V. C. et al. (2019). Programação apoiada por ambientes virtuais e juízes online no ensino semipresencial. Caderno de Graduação-Ciências Exatas e Tecnológicas-UNIT-SERGIPE, 5(2):113–113.

de Campos, C. P. and Ferreira, C. E. (2004). Boca: um sistema de apoio a competições de programação. In Workshop de Educação em Computação. Sociedade Brasileira de Computação.

do Nascimento Ponciano, K. M., Silva Filho, A. A., Bourguet, J.-R., and de Oliveira, E. (2024). Creating an academic prometheus in brazil: Weaving check50, autolab and moss into a unified autograder. In CSEDU (2), pages 439–450.

Estdale, J. and Georgiadou, E. (2018). Applying the iso/iec 25010 quality models to software product. In European Conference on Software Process Improvement, pages 492–503. Springer.

Esteban Velasco, L., Trillo Carreras, J., and Burgos Sosa, R. (2024). Code analysis and instrumentation of submissions for online judges.

Gunther, N. J. (2007). Guerrilla capacity planning: a tactical approach to planning for highly scalable applications and services. Springer.

Liu, K., Han, Y., Zhang, J. M., Chen, Z., Sarro, F., Harman, M., Huang, G., and Ma, Y. (2023). Who judges the judge: An empirical study on online judge tests. In Proceedings of the 32nd acm sigsoft international symposium on software testing and analysis, pages 334–346.

Lopes, J. F. A., Lima, M. V. A., da Cruz Santos, C., and Orbolato, D. R. S. (2025). Extensao universitária em açao: Experiências na disseminaçao do conhecimento em programaçao. In Workshop sobre Educação em Computação (WEI), pages 825–836. SBC.

Martin, R. C. (2017). Clean architecture: a craftsman’s guide to software structure and design. Prentice Hall Press.

Mekterović, I., Brkić, L., and Horvat, M. (2023). Scaling automated programming assessment systems. Electronics, 12(4):942.

Nielsen, J. (1994). Usability engineering. Morgan Kaufmann.

Pea, R. D. and Kurland, D. M. (1984). On the cognitive effects of learning computer programming. New ideas in psychology, 2(2):137–168.

Peveler, M., Maicus, E., and Cutler, B. (2019). Comparing jailed sandboxes vs containers within an autograding system. In Proceedings of the 50th ACM technical symposium on computer science education, pages 139–145.

Pham, M. T. and Nguyen, T. B. (2019). The domjudge based online judge system with plagiarism detection. In 2019 IEEE-RIVF International Conference on Computing and Communication Technologies (RIVF), pages 1–6. IEEE.

Preuss, J. O. and de Lima, C. C. (2023). Ferramentas online na aprendizagem de programação de computadores no contexto do ensino remoto. Revista Brasileira de Informática na Educação, 31:790–813.

Toledo, R. Y. and Mota, Y. C. (2014). An e-learning collaborative filtering approach to suggest problems to solve in programming online judges. International Journal of Distance Education Technologies (IJDET), 12(2):51–65.

Tostes, R. N. and Sirqueira, T. F. M. (2023). O processo de migração de um monolito para uma arquitetura de microsserviços utilizando serverless. Caderno de Estudos em Engenharia de Software, 4(2).

Williams, J. (2012). RabbitMQ in action: distributed messaging for everyone. Simon and Schuster.

Wohlin, C., Runeson, P., Höst, M., Ohlsson, M. C., Regnell, B., Wesslén, A., et al. (2012). Experimentation in software engineering, volume 236. Springer.
Publicado
04/12/2025
MARTINS, William Valther; PEREIRA, Ádilla Roberta Gomes; CÂMARA, Sávio Patrick Costa; DA CRUZ, Allan Kássio Beckman Soares; SOARES NETO, Carlos de Salles. Um juiz on-line em microserviços para escalabilidade em plataformas de ensino de programação . In: ESCOLA REGIONAL DE COMPUTAÇÃO DO CEARÁ, MARANHÃO E PIAUÍ (ERCEMAPI), 13. , 2025, São Luís/MA. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2025 . p. 133-142. DOI: https://doi.org/10.5753/ercemapi.2025.17609.