<aside> <img src="/icons/branch_gray.svg" alt="/icons/branch_gray.svg" width="40px" /> 시스템 Server: NCloud server (vCPU 2개, 8GB RAM, 50GB storage) OS: Ubuntu Server 18.04

프레임워크와 개발도구 언어: Typescript API 서버: NestJS DBMS: PostgreSQL Message queue: Redis 채점서버: NestJS 컨테이너: Docker 연결 프로토콜: HTTP

테스트와 운영도구 CI/CD: Github Action 부하 테스트: Artillery 모니터링: 추후 선택

</aside>

API 서버: nestJs

  1. 많은 기능을 이미 만들어 포함하고 있어 생산성이 훨씬 좋다. express는 필요한 것이 있을 경우 하나하나 찾아서 설치해야되는데 이런 시간들을 무시할 수 없다. ex) pipe validation, 기본 환경 설정, orm
  2. 스프링과 비슷한 면이 있다(DI, IoC). 스프링은 국내에서 가장 많이 쓰기 때문에 취업에도 유리하다.
  3. 객체지향 프로그래밍에 유리하다.
  4. express는 꾸준한 업데이트가 이루어지지 않고 있다.
  5. ts를 적극적으로 사용한다. nest js는 TS만으로 작성되었다.
  6. swagger 같은 api 명세서 사용이 편하다.
  7. 아키텍처가 정해져 있기 때문에 여러명이 코드를 작성하더라도 어느정도 일관성을 유지할 수 있다.
  8. 원한다면 nest에서 express를 직접 사용하는 것도 가능하다.
  9. crud, 서비스 유닛 테스트, dto, 엔티티까지 모두 CLI를 통해 자동으로 만들 수 있다.
  10. 6주만에 만들려면 시간이 오래걸리는 부분(아키텍처, 환경설정, 라이브러리 설치, 의존성 관리 등)에 신경을 최대한 덜 써야 한다. 이런점에서 좋다.

DB: PostgreSQL

메시지 큐: Redis