기술스택
NestJS
- TypeScript, ESLint, Prettier, Jest를 기본으로 설정해주어 프로젝트 설정에서의 불편함을 줄여줄 수 있습니다.
- NestJS는 모듈화, 의존성 주입 등의 구조가 정의되어 있기 때문에 자유도가 높은 Express에 비해 짧은 기간 아키텍처를 위해 고민하는 시간을 절약하고, 팀원간의 코드 스타일을 일관되게 유지할 수 있습니다.
- NestJS는 HTTP, 웹 소켓, 미들웨어, 가드 등 서버 동작에 필수적인 기능을 함께 포함해 제공합니다. 따라서 Express에서보다 의존성으로 인한 문제(모듈 호환성 문제, 버전 충돌 등)을 줄이고 개발에 집중할 수 있습니다.
MySQL
- 모의 투자 서비스 특성 상 정형화된 데이터가 대부분이므로 RDB를 선택했습니다.
- 사용자 정보 등을 MySQL로 관리합니다.
TypeORM
- 장점:
- NestJS와의 결합이 용이하며, 데코레이터 방식으로 엔티티를 정의해 코드를 깔끔하게 유지할 수 있습니다.
- MySQL, PostgreSQL, SQLite 등 다양한 관계형 데이터베이스를 지원합니다.
- 마이그레이션 및 복잡한 쿼리 작성이 용이하여 복잡한 데이터 관계를 다루기에 적합합니다.
- 적합성: 복잡한 엔티티 간 관계를 설정할 수 있어, 사용자의 거래 내역, 보유 자산 등 다양한 관계형 데이터 관리에 적합합니다.
Redis
- read/write가 많은 데이터는 MySQL에만 보관하는 것보다는 Redis에 저장하기로 결정했습니다.
- 기본적으로 조회 속도가 RDB보다 빠르기 때문에 인증 토큰을 저장하거나, read/write가 빈번히 발생하는 데이터를 저장하는데 유리하다고 생각했습니다.
Swagger