심심한 개발자의 취미생활

0. 온라인 코딩 테스트 시스템 만들기 - 시작하며

과거 재직 했던 회사에서 난 온라인 코딩 테스트 솔루션 개발팀의 팀장을 지낸 경험이 있다. 지금 생각했을때 열정과 생각은 많았으나 팀 운영과 사업적인 부분에서 경험이 부족하지 않았나 생각 된다. 좋은 회사에서 만족스러운 환경이었지만 이런 저런 스트레스와 문제로 퇴사를 하였지만 아직도 종종 그 제품에서 이런 부분을 개선 했으면 어땠을까 저런 부분을 개발 했으면 어땠을까 하고 생각을 하곤 한다. 그래서 시간도 꽤 지났고 솔루션에 대한 기억이 가물가물 해지기 시작한 지금 지금의 개발 실력도 점검해보고 나만의 스타일로 온라인 기반의 코딩 테스트 솔루션을 개발 해 보고자 한다. 물론 과거 다루었던 제품은 오랜 시간 개발되어 수많은 기능과 고성능의 성능을 제공하기에 그 많큼은 아니지만 기본적은 프로세스를 정리해보고 이 글이 올라가는 블로그와 같이 천천히 하나씩 개선 해보고자 한다.

Repository

Github repo
1 https://github.com/BallboyDev/online-coding-test-back Backend Repo
2 Frontend Repo
3 https://github.com/BallboyDev/online-coding-test-storage storage Repo

테마

  1. 프로젝트 명 : onCote
  2. 우선은 Front 보다는 Backend와 Infra 중심의 개발
  3. 기본적인 구조 확립과 작동 중심의 개발을 위한 로컬 환경에서의 우선 개발
  4. 언어 선택, 코드 작성, 실행, 결과 출력의 기본 기능 중심의 개발
    • 문제 해결이나 실행 결과 정.오답 체크 기능 제외 (추후 추가 기능으로 개발 예정)

설계

  • 기본 기능의 중심의 개발 후 기능 및 세부 디자인 및 테마 기획
  • Frontend
    • 1차로 최소한의 기능 위주의 디자인을 위한 html + css 개발
    • 2차로 Frontend 프레임워크는 svelte 또는 React 고민중
  • Backend
    • Nest.js(or express) + mongo(or Mariadb) + Docker

기능

기본 기능

  1. 언어 선택
    • C(C++), JAVA, JS, Python, SQL
  2. 코드 작성
    • 언어 하이라이팅 기능
  3. 실행
    • 언어별 Docker container 실행 환경 구축
  4. 결과 출력
    • 실행 결과
    • 코드 실행 성능 결과

추가 기능

  1. 더욱 다양한 언어 지원
  2. 언어별 버전 선택
  3. 특정 라이브러리 설치 및 실행 환경 설정 기능
  4. 문제 선택 및 리스트
  5. 문제별 정.오답 체크
  6. 운영자, 응시자 회원가입/로그인 기능
  7. 시스템 운영을 위한 백오피스 기능 개발
  8. 완성된 전 시스템 하나의 솔루션 패키지로 묶어 공유 서비스로 제공 가능하도록 세팅
    • 장기적으로 수익 창출?