Introduction
CMS (Contest Management System)는 프로그래밍 대회를 구성하는 데 사용하는 오픈소스 소프트웨어입니다. IOI와 같은 대회의 공식 채점 시스템이며, 많은 국가에서 대회를 개최하는 데 사용되고 있습니다. 강력하고, 확장성이 높고, 안전하기 때문입니다.
General Structure
시스템은 모듈로 구성되어 있기에 각 기능을 서로 다른 서버에서 구동할 수 있습니다. 대회 정보는 PostgreSQL
을 이용합니다.
Services
CMS는 아래와 같은 서비스들을 사용하니다. 모두 다른 서버에서 운영할 수 있습니다.
cmsLogService
: 모든 로그 메시지를 취합해 저장cmsResourceService
: 서버의 모든 서비스를 한번에 실행cmsChecker
: 모든 서비스의 상태를 확인인cmsEvaluationService
: 제출 큐를 관리하고 컴파일, 채점 작업을cmsWorker
에 분배cmsWorker
: 실제로 작업을 수행행cmsScoringService
: 채점 결과를 점수로 반영영cmsProxyService
: 점수를 점수판에 전송cmsContestWebServer
: 실제 대회가 이루어지는 FE 사이트cmsRankingWebServer
: 랭킹 사이트cmsAdminWebServer
: 관리자 사이트