week2 멘토링 일지 - boostcampwm2023/web04-ALGOCEAN GitHub Wiki

week2 멘토링 일지

✔️ 결론 및 To Do

✔️ 아젠다 및 질문

FE & BE 공통

프로젝트 현황

API 명세

URL URI Method Description Querystring Request Body Response Body 비고 (Status Code 외)
/questions /questions/lists GET 페이지 별 질문 리스트 (필터링, 정렬, 검색 가능) page는 1, sortByCreatedAt는 desc가 기본값임 일부 Querystring만 전달해도 됨 tag, programmingLanguage, isAdopted, page, sortByCreatedAt,sortByViewCount,sortByLikeCount, title   { [{ id, title, nickname, tag(문제 사이트), createdAt, programmingLanguage, isAdopted, viewCount, likeCount }, ...] }, totalPage} 200, 500
/questions /questions/finds/:title 삭제 예정 질문 리스트랑 통합했지만 호환성을 위해 내비 둠 이 API 사용하는 곳이 있다면 변경해주세요 GET 질문 검색 title을 포함하고 있는 질문들의 리스트를 반환 page는 1이 기본 값 page   [{ id, title, nickname, tag(문제 사이트), createdAt, programmingLanguage, isAdopted, viewCount, likeCount }, ...] 200, 500
/questions /questions/today GET 오늘의 질문       redirect(302)
/questions /questions/hot GET 급상승 질문       redirect(302)
/questions /questions/random GET 랜덤 질문       redirect(302)
/questions /questions POST 질문 등록   { title, content, tag, programmingLanguage, originalLink, draftId } {id} 201, 400
/questions /questions/:questionId GET 단일 질문 보기     { id, title, nickname, tag(문제 사이트), createdAt, programmingLanguage, isAdopted, viewCount, likeCount, isLiked } 200, 404
/questions /questions/:questionId PUT 질문 수정   { title, content, tag, programmingLanguage, originalLink }   200, 400, 404
/questions /questions/:questionId DELETE 질문 삭제       채택 안 한 것만 삭제 가능
/questions /questions/drafts POST 임시글 생성     {id} 201, 500
/questions /questions/drafts/:id GET 임시글 읽기   { title, content, tag, programmingLanguage, originalLink } {id} 201, 500
/questions /questions/drafts/:id PUT 임시글 업데이트   { title, content, tag, programmingLanguage, originalLink }   200, 500
/questions /questions/drafts/:id DELETE 임시글 삭제       200
/answers /answers/:questionId GET 질문별 답변 목록     [{ userId, nickname, answerId, content, videoLink, isAdopted, createdAt, isLiked }, ...] 200, 404
/answers /answers POST 답변 등록   { content, videoLink }   201, 400
/answers /answers/:answerId PUT 답변 수정   { content, videoLink }   200, 400, 404
/answers /answers/:answerId DELETE 답변 삭제       200, 400
/answers /answers/adopt POST 답변 채택   { answerId }    
/likes /likes POST 좋아요   { type: "question" 또는 "answer", id } {1 또는 0} 200 또는 201

FE

📌 FE는 이번 주 예비군 훈련으로 인해 1명이서 개발을 진행했습니다.

👉 [FE 2주차 dev 서버](https://web04-algocean-fe-dev.vercel.app/)

FE 2주차 PR 목록

FE 2주차 개발 일지

질문 목록

  • 팀원의 부재, 백엔드의 API 개발 의존성 등에 의해 프론트엔드 개발 속도가 현저히 느린 것 같습니다. 협업에서는 백엔드와 프론트엔드간의 실제 개발 진행 속도 차이가 어떻게 되나요? 프론트엔드 개발이 백엔드와의 의존성을 줄이기 위해서 어떤 방법을 사용하시나요?

  • 공통 컴포넌트를 구현할 때 의존성, 유연성 측면에서 멘토님이 꼭 신경쓰시는 것이 어떤 것이 있으신가요? 페이지네이션 컴포넌트를 예시로 설명해주시면 더욱 감사하겠습니다.

  • 프로젝트를 진행하는 과정에서 학습한 내용, 발생한 에러 등에 대해 개발 일지를 작성하고 있습니다. (상단의 FE 2주차 개발 일지 참고) 학습 내용, 발생 에러 외에도 개발 일지를 작성하기 좋은 내용이 있을까요? 또 개발 일지를 더 보완해서 작성할 수 있는 방법이 있을까요?

  • 그 외의 프로젝트 전반 진행 상황과 관련하여 신경써봐야 할 것, 개선해야 할 점에 대해 말씀해 주시면 감사하겠습니다 ☺️

BE

BE 2주차 PR 목록

BE 2주차 개발 일지 - [백엔드 초기 설정](https://www.notion.so/d605902a67054b95a7797703e7a7cd1f?pvs=21)

질문 목록

  • 협업 경험이 적어서 PR을 승인하기 전까지 팀원의 코드를 읽고 리뷰를 하는데 어떤 부분을 중점적으로 보아야 할 지 잘 모르겠습니다. 어느 정도 개선이 가능한지 여부를 모르기 때문에 이런 생각이 들었는데요. 보통 어느 정도로 리뷰를 하는지 예시 또는 경험을 알고 싶습니다.

  • 서버 및 네트워크 구성도 피드백

[인프라](https://www.notion.so/2ce8ce5395124624bd2dc104e09f2ce0?pvs=21)

✔️ 멘토링 내용

저번주 말씀해주신 내용 : 일정 산정

  • 일정 산정 제대로 되지 않은 것 같음(왜? → 일이 조금씩 밀림)

  • 다같이 일정을 못맞추게 되면 감정의 싸움으로 갈 수도 있음

  • due date동안 할 수 있을 만큼 하자 (일정 추정)

  • 전체 6주동안의 목차를 작성하자 (책은 목차 없이 쓰여질 수 없음)

  • 일정에 버퍼를 두자 계산된 시간에 1.3 혹은 1.5를 곱하자(누군가 감기 걸릴 수도 있음)

  • MOCK API를 백엔드에서 프론트엔드로 주는 것을 고려해보기(백엔드가 안주면 다른 방법을 찾아보기)

    [Mock Service Worker](https://mswjs.io/)

  • 요구사항을 정리해서 먼저 구현해줄 것을 요청하는 걸 추천

  • 컴포넌트의 의존성을 완전히 끊어야함(props만 가져다 쓸 수 있게) 의존성 줄이는게 가장 먼저임

  • 유연성은 스펙(?)을 명시

  • 개발일지를 작성하는 이유 (일지는 왜 작성하지? → 본인이 정의하기)

    • 나와 타인의 성장을 위한 상생
  • 일정 추정의 스케쥴링 (담당자까지)되어 있어야 함

  • TDD 꼭 해보기

  • 스웨거 적용하기 (실서버에 배포된 API 명세)

  • 개발 환경 세팅을 처음에 다 해야함

    • CI / CD
    • naming convention 정하기
    • Swagger 사용
    • Release Note 사용
    • Mock API 제공 방식
  • 코드 리뷰

  • 인프라 구축 → 과하지 않은지 고민할 필요가 있음.

    • subnet을 사용해서 얻는 장점을 고민해보자
  • 개발 phase 나누기 local, dev, (test), prod

  • 버전 태깅 (태그를 통한 릴리즈 작성)

✔️ 체크리스트

  • 기술적 도전 과제를 중심으로 기획서와 백로그 및 feature list 등이 완비되었다.
  • 기술 스택의 선정 이유 혹은 구현 방식에 대해 나만의 근거를 가지고 설명할 수 있다.
  • 이번주 스프린트 계획을 세웠고, 목표한 만큼 구현하고 있다.
  • 다른 팀원의 과제가 무엇이고 왜 그 일을 하고 있는지 설명할 수 있다.
⚠️ **GitHub.com Fallback** ⚠️