
📌 공통
- 웹소켓을 이용할 수 없는 환경에서 폴링 방식 등 다른 방식으로 연결을 시도함
- 연결이 끊어진 경우, 일정 기간 딜레이 후 재연결을 시도함
- 객체를 전송할 수 있고, 여러 개의 파라미터를 전송할 수 있음
Jest
- 테스트를 병렬로 실행하기 때문에 테스트 실행 속도가 빠름
- 자동 목업과 spyOn을 제공하여 의존성을 쉽게 테스트할 수 있음
- 실패한 테스트를 먼저 실행하여 빠른 피드백을 제공함
- 다양한 기능을 내장하고 있기 때문에 별도의 라이브러리를 추가로 설치할 필요가 없음
- NestJS에서 기본 테스트 프레임워크로 Jest를 지원하기 때문에 별도의 설정이 필요하지 않음
📌 FE
React
Next.js를 도입하면 제한된 기한 내에 마무리를 할 수 없을 것이라 판단하여 React를 사용하기로 결정함
Vite
- 빌드 속도가 빠름
- Webpack과 비교해서 설정파일을 많이 만지지 않아도 괜찮음
Zustand
WebRTC
- P2P 커뮤니케이션을 지원하여 서버에 오버로드가 발생하지 않음
- 별도의 플러그인이나 서드 파티 어플리케이션이 필요하지 않음
TailwindCss
스타일과 로직의 관심사 분리가 안된다는 단점이 존재하지만, 빠른 개발을 위해 도입함
Cloudflare
- 무료로 사용할 수 있음
- 빠르게 배포할 수 있고, SSL 인증서도 자동으로 연결해줌
📌 BE
NestJS
- NestJS의 CLI를 사용하면 프로젝트, 모듈, 컨트롤러 생성 등의 작업을 간편하게 수행할 수 있음
- 기본적으로 express 위에서 동작하기 때문에 express의 모든 기능을 그대로 사용할 수 있음
TypeORM
- (ORM) 모델 클래스와 테이블을 매핑할 수 있기 때문에 유지보수가 용이함
- (ORM) 개발자가 직접 SQL 쿼리를 작성하지 않기 때문에 SQL 인젝션을 예방할 수 있음
Docker
- 컨테이너라는 독립된 공간을 사용하기 때문에 내부에서 일어나는 일이 호스트 서버에 영향을 미치지 않음
- 프로그램에 필요한 환경을 이미지로 빌드하기 때문에 더 이상 코드 변경사항을 pull 받아오지 않아도 되고, 어디서든 일관된 동작으로 프로그램을 수행할 수 있음
Nginx
- 자체적으로 SSL/TLS를 지원하기 때문에 별도의 모듈을 설치할 필요없이 간단하게 HTTPS를 설정할 수 있음
- 무료로 SSL 인증서를 발급하는 Let's Encrypt 서비스와의 통합을 지원함
- 경로 기반 라우팅을 지원하기 때문에 단일 서버에서 여러 어플리케이션을 호스팅 할 수 있음
GitHub Actions