線上批改系統主要被設計來開放使用者在線上提交程式,然後依序對每一份程式進行可靠的評估,並且將批改結果推播給使用者。然而,我們發現至今依然很少線上批改系統的系統設計具備雲原生的優勢。許多現存開放原始碼的線上批改系統,由於其對於特定執行環境的耦合以及在系統架構上的模糊邊界,導致大多數的都難以部署也難以在部屬上進行擴展。此外,比起支援資源的排程功能,為了建立一個公平的批改環境,這些系統更在乎的是資源的同質性。在這篇研究中,我們設計並且開發了一個具備雲原生優勢的線上批改系統,稱作批改娘,此系統能夠 (1) 在不同的動態環境中被穩定地建置和運行 (2) 針對系統流量進行部署上的水平擴展和垂直擴展 (3) 支援 CPUs 和 GPUs 的資源排程。並且,此篇研究也藉由這個機會,對於現代被提倡的一些設計方法和技術進行分析,包含:微服務架構設計、事件驅動架構、領域驅動設計,以及容器化技術例如 Docker 和 Kubernetes。
Online Judge Systems are designed for the reliable evaluation of source code submitted by users. The system queues the code, compiles and tests them typically in a FIFO manner. However, we found that the cloud-native design of an online judge system is still a pending issue. Many existing open-source online judge systems are hard to deploy and scale, due to the tight coupling with some specific environments and the vague boundaries in their system architectures. In addition, these online judge systems hardly provide the support of resource scheduling as they are usually more concerned about the homogeneity of the resources. In this research, we design and develop a cloud-native online judge system called Judge Girl that is able to (1) be built and run stably in dynamic environments (2) scale vertically and horizontally to the workload (3) do resource scheduling over CPUs and GPUs. Furthermore, this research also analyzes the consequence of adopting some modernly advocated design approaches and technologies; these are: microservice architecture design, event-driven architecture, domain-driven design, and containerization technologies such as Docker and Kubernetes.