-
Notifications
You must be signed in to change notification settings - Fork 0
2주차 멘토링
Ji Yoon Choi edited this page Nov 16, 2022
·
19 revisions
- 100% 탈취된다
- Github Action 등의 방법으로 캐싱 해야함
- 로그인할 때 사용되는 ID 등의 개인정보는 최대한 막되, 백엔드 측에서 마스킹 등을 해서 정보를 은닉하여 내려줘야 한다
- AUTO_INCREMENT 되는 키를 ID로 사용한다면 => 전역 상태로 저장되는 것은 나쁘지 않으나 브루트포스 공격에 당할 위험이 있다
- 일반 사용자가 보기에는 아무 의미없는 숫자라서 프론트엔드 측에서 저장하는 것도 상관없어 보임
- 브루트포스 공격을 막고 싶다면 UUID를 생성하여 사용하는 것을 추천 (AUTO_INCREMENT 아닌 완전 랜덤한 문자열)
- AUTO_INCREMENT를 쓰는 경우 => 게시판에서 게시글이 1부터 올라가는 경우 (Public 하게 공개되기 때문에 노출되어도 상관없는 데이터)
-
약관을 추가하여 너의 닉네임과 이메일을 어디에 사용하겠다 ~ 라고 명시
-
개인정보 약관 관련 질문은 멘토링하면서 처음 받아보았다
- Next.js의 장점?
- 첫 화면을 SSR로 구현하려고 할 때, Next.js를 사용하는 것이 좋을지?
- 사용에 대한 조언? 적용해도 좋을지?
- SSR을 배우기 위해 Next.js 를 배우기엔 시간이 촉박한 것 같다
- 자료조사 까진 OK, 다만 진입장벽이 좀 있음
- 어느 정도 완성된 프로젝트에 Next.js를 도입하는 것이 괜찮은 선택일까? 아니면 처음부터 Next.js를 도입해서 작성하는 것이 나은가?
-
getServerSideProps
에 관해 공부하는 것을 추천 - SSR로 렌더링을 하면 기존에 요청-응답으로 받아오던 데이터가 Serverside props에 전부 들어감
- Next.js 는 Serverside Props를 한번에 받아서 페이지에 전부 넣어 렌더링하는 방식으로 동작하므로, 관련된 이해가 좀 많이 필요하다
- SSR 쪽에서 받아올 데이터와 CSR로 받아올 데이터를 명확히 나누는 것이 중요하다 (모든 데이터를 서버 쪽에 박는 것이 능사는 아니다) => 서버 쪽 처리가 오래 걸리면 어차피 첫 화면 표시까지 오래 걸린다
- 이런 정책을 세우고, Next.js를 공부하는 데 들어가는 시간이 생각보다 많을 것이다 (우리는 이제 한달뿐이다)
-
- Next.js의 이점: 라우팅을 더 쉽게 해준다
4. 현업 CI 과정에서 테스트를 진행할 때, 전체 코드에 대한 테스트의 커버리지 퍼센트를 넘지 않으면 push 가 안되도록 하는 단계가 있나요? 있으면 어떻게 하는지 궁금합니다.
- push를 막는 것을 본 적은 없는데, 있을 수는 있다
- 모든 코드를 테스트할 수 있는 것은 아님 (현실적으로 테스트를 못 하는 코드가 있음 => 이걸 테스트해보겠다고 억지로 짜는 건 더 손해)
- Real 환경에서만 작동되는 코드가 있다면, 개발환경에서 테스트가 아예 안 되듯이
- 따라서 어떠한 커버리지를 넘지 않으면 머지를 안 하는? 옵션은 위의 예시처럼 반례가 존재할 것 같다
-
github action coverage report
참고- 컨벤션 수준으로 맞추는 것과, 커버리지 숫자가 증가 추세에 있다는 것만 보이면 된다
- Github Action Cache
- npm i가 오래 걸릴 것
지금은 액션 명령들이 직렬로 짜여져있어서, 병렬로 분할하는 것을 추천프론트엔드 - 백엔드 별개의 Workflow, 또는 별개의 Job으로 분리하면 병렬로 동작할 것
- runner가 nCloud 하나밖에 없어 병렬 실행이 안 될듯
- 병렬 실행은 runner가 2개 이상이어야 함
- 해결법
- self-hosted를 쓰지 말 것
- 빌드는 깃허브에서 제공하는 runner를 사용
- 빌드 결과물을 깃허브에 임시 저장 (
github actions artifact upload
) - nCloud는 artifact에 저장된 내용물을 갖다 쓰기만 하고, 빌드는 github에서 제공하는 runner를 사용하면 병렬 빌드로 시간을 많이 줄일 수 있다
- nCloud CPU 사양 (개수 등) 설정이 가능 => CPU 개수가 늘어나면 속도가 좋아질 것이다
- CPU 성능 문제로 느린 것일 수도 있다
- CI/CD는 어렵구나!!!
- https://github.com/boostcampwm-2022/web25-SCOPA/issues/25
- Typescript enum 관련해서 Tree-shaking 관점에서 좋지 않아서 enum 을 사용하지 않는 것을 권장하는 글을 봤습니다.
- 실제로 현업에서도, enum 을 사용하지 않고 있나요?
- 만약 사용하지 않고 있다면, enum 과 같은 열거형 상수를 필요로 할 때 어떤 방식으로 사용을 하시는지 궁금합니다.
- 모노레포?
yarn workspace monorepo
- 클라이언트가 서버
share
폴더를 참조할 수 있고, 서버가 클라이언트share
폴더를 참조할 수 있다
- 현재 파일구조로는 아마~ 참조는 할 수 있음
- 단 현재 파일구조에서는 shared 폴더는 어떤 컨벤션을 따를지, 어떤 typescript 버전을 쓸 지 알 수 없는 상황이다 (클라이언트 - 서버 구조가 분리되어 있는 편)
- 루트 경로에 eslint, tsconfig, prettier 등을 배치해서 컨벤션과 타스 버전을 맞춰놓고, 하위 폴더를 클라이언트 / 서버로 분리하는 구조로 해야 할 듯
- 📃 기획서
- 📂 Backlog
- 📊 ERD, 폴더 구조
- 🗓️ 회의록