Skip to content

22.11.09 기술스택 결정 회의

왕승재 edited this page Nov 10, 2022 · 4 revisions

기술스택 결정 회의

공통

TypeScript

타입설정을 통한 안정성 확보


FE

CSR vs SSR

웹 앱이라는 특성과 SEO의 필요성이 크게 느껴지지 않아 CSR을 선택.
운동 기록과 같은 기능은 서버와 통신이 적은 정적인 서비스이므로 CSR을 사용하는 것이 옳다.
더불어 유저가 스마트폰을 사용한 다는 것을 전제로 서비스를 제작하기에, 유저 디바이스 성능 차가 크지 않을 것이라고 예상한다.

CSR을 활용하며, 라이브러리로 대부분 익숙한 환경인 React를 사용.


전역 상태관리

  • 예시: Redux, Recoil,(or Context API)

Recoil

장점

React를 만든 facebook에서 제작한 React 특화 라이브러리로, React와 호환성이 높음.
배우기 쉽다. React hook을 사용하는 것과 유사하기 때문.

단점

아직은 좀 불안정함.
리덕스에 비해 래퍼런스가 적다.
devtool의 부재

Redux

장점

Flux 패턴을 이해하기에 도움이 될 것 같음.

단점

대부분 써본적이 없음.
새로 배우려면 Recoil이 더 빠를거 같음.
보일러 플레이트를 작성해야 함.

결론

다들 전역상태 관리 경험이 많지 않다면 기존에 사용하던 hook과 비슷하고, 비동기 처리에 특화된, 학습하기 쉬운 Recoil을 선택

Storybook

장점

컴포넌트 단위 개발을 도와줌. 컴포넌트에 대한 간단한 테스트 진행가능.

단점

학습해야됨.

결론

챌린징의 목적으로 사용 o


Style

SCSS

단점

클래스명을 사용하는데 사전에 합의되지 않으면 충돌이 많이 일어남.

Styled vs Emotion

Emotion은 서버 사이드 렌더링에 따로 설정을 해줘야 하지만 우리의 서비스는 CSR이므로 영향이 있을 것 같지 않았다.
Emotion이 조금 더 가볍고 빠르다고 하지만 유의미한 차이가 있지 않으므로, 모두가 사용해본 styled-components를 사용하기로 결정.

결론

styled-components


BE

Nest.js

장점

팀 또는 사람마다 아키텍처가 다르면 이를 이해하기 위한 비용 또는 개발 전에 아키텍처를 선정하는 커뮤니케이션 비용이 증가한다.
NestJS는 아키텍처에 대한 정의를 제공하기 때문에 동일한 아키텍처에서 다른 개발자가 작성한 코드를 쉽게 이해할 수 있다.

RDB vs NoSQL

이것을 결정하는 기준은 DB에 대한 접근에 대하여.

NoSQL

데이터를 크게 요청하는 부분이 없고 실시간으로 변경되는게 많아서 속도가 나은 NoSQL.

RDB

운동 -> 레이팅 -> 그룹의 점수 -> 그룹의 등수 처럼 연계되는 데이터가 많아서, RDB를 쓰는게 옳지 않나.

임시 결론

추후에 멘토님한테 여쭤보자 SQL을 사용하면서 ERD와 ORM을 사용하면서 챌린징을 해보자 우선은 RDB로 해보자.

RDB중 DB선택

MySQL

상대적으로 익숙하다.

PostgreSQL

다양한 추가 기능이 있지만 배우기가 상대적으로 어려움. 상대적으로 더 큰 프로젝트를 할 때 어울릴 것 같음.

결론

MySQL

Redis

용량이 천차만별인 이미지 사용이 빈번하면 사용하는게 좋을듯 섬네일 만들 때.


ORM

장점

객체를 사용하듯 쓰는 것이 형식이 정해져 있어서, 협업할 때 좋다. 순수쿼리보다 느릴 수도 있지만 대처가능하다. 순수쿼리보다 직관적이다.

단점

순수쿼리보다 느릴 수 있다. 대처가능하지만 테이블이 늘어난다.

결론

ORM 사용

TypeORM vs Prisma

무엇이 더 Nest.js에 어울리는가?

Nest도 처음 사용하는거라 ORM 학습 커브를 줄이고자 상대적으로 레퍼런스가 많고 익숙한 TypeORM을 선택하자. ref: https://github.com/sunnyy02/nestjs-orms

결론

TypeORM

CI/CD

Docker

  1. 버전별로 정리하는 용도.
  2. 격리시켜서 가상으로 서비스를 돌려야할 때. 우리는? 위 두가지에 해당되지 않으므로 불필요하게 오버엔지니어링 될 수 있다.

결론

사용 x

Jenkins

빌드 자동화 굳이..?

결론

사용 x

Nginx

로드밸런싱, https 간편화

결론

사용 o

Naver Cloud

크래딧 많이 남음

결론

사용 o

PM2

무중단 배포

결론

사용 o


Testing

Jest

단위 테스트

Cypress

E2E 테스트

💻 Projects

🤝 Rules

🎙️ Meeting

👾 Trouble Shootings

🛠 Tech Semina

🔰 초심자를 위한 기술 가이드

🏃‍♂️ Sprint

✏️ Reviews

💎 Mentoring

💬 Scrums

Week 1
Week 2
Week 3
Week 4
Week 5
Week 6
Clone this wiki locally