-
공통
- TypeScript
- 정적 타입을 지원함으로써 컴파일 단계에서 오류를 포착할 수 있다
- ESlint (정적 분석기를 통한 사전에 오류 예방)
- Prettier (코드 포매팅으로 스타일 가이드 통일)
-
클라이언트
- Next.js
- SNS 의 특성을 살리기 위해 SSR 과 CSR 을 지원하는 Next.js 선정
- Recoil
- 상태관리
- Recoil vs Redux
- 학습 곡선이 완만함
- 코드량이 적음
- hooks 처럼 사용 가능
- react-query
- 비동기 관련 boilerplate를 최소화 한다. (비동기 추상화)
- react-query vs useSWR
-
서버
- NCP
- Express
- JWT
- 사용자가 늘어날 수록 서버의 확장은 불가피할 것이므로 서버의 확장성을 위해 사용
- Cookie Session vs JWT
- Passport
- Mongoose
- ODM
- 정형화된 데이터를 보장하기 위해 스키마를 사용, 스키마 수정이 어려운 RDBMS와 달리 스키마의 수정이 쉽기 때문에 확장과 수정이 용이
- Populate, dbRef
-
데이터베이스
- MongoDB
- SNS 서비스에서 사용자가 모든 정보를 동일하게 작성하는 것이 아닌 선택적으로 작성하기 때문에 Null System 에 최적화가 잘 진행된 MongoDB 선택
- MySQL vs MongoDB
- 정확한 데이터 구조를 알 수 없거나 변경 / 확장 될 수 있는 경우
-
테스트
- Jest
- Jest vs Mocha
- Jest 필요하지 않을 수 있는 패키지를 전부 지원하여 적용시간이 짧다. Mocha 는 유연성이 높다.
-
데브옵스