피드로 돌아가기
Dev.toBackend
원문 읽기
AI 보조 개발로 300명 동시 접속 가능한 ICPC 기반 코딩 플랫폼 구축
We Built an Open-Source Coding Exam Platform Because Every Vendor Let Us Down
AI 요약
Context
기존 벤더 솔루션의 동시 접속 제한 및 경직된 문제 형식으로 인한 채용 프로세스 병목 발생. 높은 비용 대비 낮은 유연성과 단순 DSA 암기 위주의 평가 방식이 기술적 제약으로 작용함.
Technical Solution
- Judge0 Sandboxed Execution 도입을 통한 코드 격리 실행 및 병렬 테스트 케이스 처리 구조 설계
- PostgreSQL Materialized View 기반의 실시간 리더보드 구현으로 O(1) 시간 복잡도의 랭킹 쿼리 최적화
- Pessimistic Lock 적용을 통한 ICPC 페널티 공식의 Race-condition 방지 및 데이터 일관성 확보
- Server-Synced Timer 및 Debounce-save 로직 구현을 통한 클라이언트 조작 방지와 데이터 유실 방지
- NestJS 기반의 SubmissionsService 구축으로 Judge0 API 요청의 자동 청킹 및 폴링 메커니즘 구현
- Vue 3 SPA와 NestJS API의 단일 이미지 패키징을 통한 인프라 단순화 및 배포 효율 증대
실천 포인트
1. 실시간 랭킹 시스템 설계 시 Materialized View를 통한 읽기 성능 최적화 검토
2. 동시성 제어가 필요한 스코어 업데이트 시 Pessimistic Lock 적용 여부 판단
3. 외부 실행 엔진(Judge0 등) 연동 시 API Rate Limit 대응을 위한 요청 청킹 전략 수립
4. 클라이언트 신뢰도를 낮춘 Server-side Time Validation 로직 적용