공통
TypeScript
TypeScript는 정적 타입을 지원하므로 컴파일 단계에서 오류를 포착할 수 있습니다. js보다 협업이 용이합니다.
백엔드
TypeORM
- 테이블들을 객체로 다뤄서 테이블간 관계를 직관적으로 파악하기 쉽다.
- 복잡한 쿼리의 경우, QueryBuilder를 사용하면 된다.
DB - postgreSQL
- join이 많이 일어나는 경우에는 mysql보다 좋고, update의 경우에는 느리지만 서비스 특성 상 update가 드물게 일어나므로 postgreSQL이 적합하다고 판단하였다.
Aurora MySQL vs Aurora PostgreSQL | 우아한형제들 기술블로그
Nest.js
- TypeScript는 정적 타입을 지원하므로 컴파일 단계에서 오류를 포착할 수 있어 협업에 용이하다고 판단했다. Nest.js의 경우 TypeScript 관련 환경 구성이 된다는 장점이 있다.
- 프로젝트 구조가 정해져 있어 협업에 도움이 된다.
프론트엔드
프레임워크 - nextjs
- 전체적으로 프로젝트에서 프론트에 많은 비중을 두지 않기 때문에 빠르게 개발환경을 구축하고 협업에 용이한 nextJS를 선택하게 되었다.
- 현재 우리 서비스는 페이지의 업데이트가 많이 일어나지 않는다. 그래서 빌드 시점과 필요할 때 정적으로 html 파일을 생성한 다음 제공해주는 것이 효율적이다.
- 서비스 특성상 사용자와의 상호작용이 별로 없어 정적 html의 비중이 높다. ( 문제 페이지 )