1. Next.js
SEO
→ 메인페이지가 지도라서 줄 수 있는 정보가 없지 않나?
SEO
- 첫 화면이 외부 API 에서 받아온 지도 데이터에 의존하기 때문애 동적 metadata 를 사용하기 어렵다
- 정적인 metadata 를 쓸거면, Next.js 를 안써도 된다
랜더링 기법
- 첫 화면 컨텐츠가, 서버에서 랜더링하는게 아니라, 사용자의 위치에 기반해서 API를 쏜 결과를 보여주는 방식이기 때문이다.
- SSR 이 의미가 많이 없다
- ISR, SSG 를 사용할 페이지가 별로 없다
- 그런 랜더링 기법들을 통한 크게 의미있는 성능 향상을 기대하기 어렵다
넥스트에서 제공하는 컴포넌트
- 이미지, 폰트, 로딩이, 에러
⇒ 우리가 직접 해보자.
넥스트가 해줘서 편한건, 우리가 직접 한게 아니기 때문에 어필이 되지 않는다.
그건 우리의 기술역량이 아니라, 넥스트에서 제공하는 기능을 가져다 쓴 것
제공하는 기능을 가져다 쓰는건 누구나 가르쳐줘도 한달이면 할 수 있음
결론: 우리 기획에서는 Next.js 가 적합하지 않다.
동환, 원석의 의견


- “React를 사용하여 새 앱이나 사이트를 구축하는 경우 프레임워크를 사용하는 것이 좋습니다”
- 위 이미지와 같이 Nextjs(app router) = react18로 흐름이 진행이 되고있다. 따라서 nextjs로 처음부터 진행을 하는것이 react(csr)로 만들고 마이그레이션 하는 것보다 나을 것 같다.
- next.js에 대해 사용하지 않고, 잘 알지 모르는 상태에서 next의 필요성에 대해 알 수 있을까?
- 공식문서와 구글링을 통해 next의 장단점과 필요성을 모두 단정짓는건 섣부른 판단일 수 있다.
- 우리가 이 기술에 대해 체감하지 못함 (POC를 검증을 이렇게 하자!)
- ❗ 거인의 어깨에 올라가보자
- 직접 문제를 해결해보는것도 좋지만 next가 왜 이걸 제공할지를 고민해보는게 더 좋지 않을까?
- csr을 사용하면서 어려운 점들이나 문제 찾아서 최적화
- next가 제공하는 것들 사용 → 왜 이것들을 제공하고 어떤 문제를 해결할까? ⇒ 이쪽이 더 많은 문제와 문제 해결 방식을 공부할 수 있다고 생각한다
- Next.js를 사용하는게 편하다고 하지만 불편한 점들 또한 분명히 나올 것이다
- ex) server component에는 document 객체가 없다
- server component에서도 돌아가는 hook을 만드는 경험을 하는건 의미가 있을 수 있다
- server component를 띄워야 하기 때문에 서버 자원에 대한 고민 또한 할 수 있다
- 이 불편함을 느끼고 왜 이렇게까지 하면서 ssr을 사용하려고 하는지도 고민하면 어떨까?
- 나중에 데브코스 끝나고 유지보수까지 생각하면 처음부터 ssr로 시작하는게 나을것 같다.
- 프로젝트 완성 이후까지도 생각해보고 싶다
- csr ⇒ ssr 마이그레이션? 힘들 수 있다
- ssr ⇒ csr 굴러가게 할 수 있다.
- 결론: next 사용에 대해 한번 더 생각해보기 (우리가 nextjs를 필요없다는 것을 판단할 수 있나?, 다음 플젝에서도 이런 고민은 계속 된다(뫼비우스의 띠))
기획이 확정되면 Next.js 를 결정한다!
현재 기획한 프로젝트에서는 Next는 맞지 않는것 같다
2. 상태관리 도구로 뭘 쓸지
리액트 상태 관리 라이브러리, 어떤 것을 써야 할까?
출처: https://yozm.wishket.com/magazine/detail/2233/ [리액트 상태 관리 라이브러리, 어떤 것을 써야 할까? | 요즘IT]
npm trends 기준


- Redux Toolkit
- 참고할 자료 기준으로 가장 많음
- Zustand
- 라이브러리 사이즈가 조금 작다
- 실제로 검증 가능한가?
- Jotai
- 자료가 많이 없음
- Recoil
- 무겁다
상태 관리 도구 | Redux Toolkit | Zustand | Jotai | Recoil |
참고 가능한 자료수 | ㅤ | ㅤ | ㅤ | ㅤ |
npm trend | ㅤ | ㅤ | ㅤ | ㅤ |
running curve | ㅤ | ㅤ | ㅤ | ㅤ |
exprience | ㅤ | ㅤ | ㅤ | ㅤ |
ㅤ | ㅤ | ㅤ | ㅤ | ㅤ |
결론: Zustand 의 npm trends 결과가 가장 활발하고, 자료도 많으며, Redux 에 비해 보일러플레이트가 적으므로 기능개발을 위해 작성해야 하는 코드라인이 짧아지고, 라이브러리 용량이 작다.
따라서 Zustand 를 쓴다.
원석: 상태관리 도구? 개인적으로 context API 확장판… 일 수 있다고 생각. 그렇다고 context API가 상태관리 미니 버전이라고 생각하지는 않는다.
3. Webpack vs Vite
- 동환, 원석
- vite는 빠르고, 간편하기 때문에 써야한다
- 웹팩은 레거시가 될 것 같다
- DX 에서 번들러보다 프론트 개발(성능, 에러핸들링)에 더 시간을 투자하고 싶다
- 한달 반 동안 선택과 집중을 해야 하는데, 번들러에 들이는 시간비용을 줄이고 싶다.
- vite를 쓴다면 번들러의 개념, webpack, vite의 개념, vite를 사용해야하는 이유를 깊게 알자!
- 혜진
- 빠른 성능과 간편함이 우리가 한게 아니다
- 어필할 수 없다
- vite 는 빠르고 간편하니까 언제든 시작할 수 있다
- 써봤는데 학습곡선이 낮아서 굳이 이걸 공부? 써본 경험?
결론: Next를 쓰지 않는다면 Vite를 쓰자! (위 이미지와 같이 react 공식문서에서 언급(vite, parcel))
Nextf를 쓴다면 turbopack 쓸 것인가? (공식문서에서 언급)
4. Test
테스트는 처음 접하는 사람이 많아서, Jest 를 사용하여 단위 테스트로 시작
vitest
익숙해지면 Testing Library 추가
5. UI
option 1. chakra UI
option 2. 컴포넌트 직접 만들기 + Storybook 으로 검증
option 3. 디자인 시스템 직접 만들기 + Storybook 으로 검증
- 동환, 원석
- 디자인 시스템을 못 만들면 오히려 약점이 될 수 있다.
- 우리만의 디자인 시스템이 의미가 있을까?
- 다른 사람들이 우리의 디자인 시스템을 사용할 가치를 느끼게 할 수 있을까?
- 우리의 디자인 시스템에 신뢰성을 쌓기 어렵다
- 회사에서는 실제로 디자인 시스템 어떻게 믿어요? 하고 안 쓰는 경우가 많다
- 디자인 시스템을 만들려면 요구사항을 확실히 알고 만들어야 하는데 우리는 가정을 하고 만들어야 해야할텐데 이게 맞을까?
- 디자인 시스템을 만든다는건 여러 프로젝트에서 필요하고 재사용할때 도움이 될 때 의미가 있는데 다른 프로젝트에서도 우리의 디자인 시스템이 도움이 될지 알 수 있을까?
- 잘 짜여진 디자인 시스템이 많다. 잘 짜여진 디자인 시스템의 인터페이스를 사용해보고 개념을 내 것으로 흡수하고 싶다
- 결론 : 디자인 시스템까지 만드는 것은 과한 것 같다. ui library를 사용해보고 내부에 대해 고민해보고 싶다, or 컴포넌트를 만드는 것도 괜춘
6. 디자이너
- 동환, 원석
- 디자이너와 함께하면 디자이너와 협의 하는 시간이 오래 걸릴수 있다
- 하지만 이런 과정이 의미있다고 생각한다
- 디자이너는 사용자에게 동기부여해주는 사람이고 우리는 이것을 구현해주는 사람
- 우리는 구현에만 초점을 맞출 수 있는데 실제 프로덕션에서는 사용자에게 만족을 주는게 중요하다
- 보통 프론트엔드 개발에서 기능 구현에 집중할 때가 많은데 디자이너와의 협업에서 그외의 부분들을 생각해볼 수 있을 것 같다
- 결론: 디자이너와 함께 해보자
- 원석
- 4명이서 디자인을 쪼개서 해보는것도 도움이 될 것 같긴 하다.
- 디자인을 따라서 기능을 만드는데 개발자가 디자인을 하면 설계(흐름)가 용이할 것 같아서(?)
- 디자인을 할 줄 안다는 것이 단점이 될 순 없다. (UI / UX에 대한 역량 검증)
7. Tanstack/react-query
next 내부에서 사용을 해야하는 이유에 대해 생각해보기
react-query가 훨씬 편하다
react-query v5 (RC) 우선 참고… next를 쓴다면 이걸 쓰는걸로…
8. npm vs yarn vs yarn berry(PnP) vs pnpm
pnpm 모노레포 예제가 많다 써보면 좋다. (예제가 많으니깐) 괜찮을 수 있다.
turborepo 예제 pnpm이 많다.
yarn berry 생각 이상 어려울수도?
9. sentry 오버 엔지니어링일까요…?
위에 나온거 잘 하면 세팅 ㄲㄲ
에러 트래킹이기 떄문에 서비스를 배포하고난 후 에러 트래킹.
서비스 만들고 난 후 세팅하기(?)
TDD를 하는 회사 거의 없다
TDD 한달 안에 흠… 어렵다…
디자인이 나오고 나서 마크업을 넘겼을떄 할게 없어서 한다….
태스크를 어떤 단위로 나눌지 조언해주실 수 있을까요
- 저번 프로젝트에서 태스크를 너무 크게 나눴던 것 같습니다
- 아니면 일정 산정과 태스크 분배에 대한 참고하기 좋은 자료
멘토님: 페이지(feature) 단위로 나누자(기능이 겹치지 않으니깐). 충돌이 나지 않게
기획서를 만들고, 공통화를 하고 시작하자, 공통 컴포넌트를 먼저 만들고 시작하자. 한 사람이 하나씩 맡아서
공통 컴포넌트로 뺴고 한 사람이 개발하게