팀 프로젝트 첫 날입니다.
형석님이 아이디어를 말씀해주셨고 다른 팀원 분들도 좋다고 생각해서 기획은 굉장히 빠르게 마무리가 되었습니다.
피그마로 생각들을 팀원들과 공유하며 정리를 시작했고 ERD도 같이 작성을 하고 계셔서 데이터 타입, 네이밍 통일 정도만 수정하여 마무리 지었습니다.
API 명세서를 어떻게 시작해야할까 하다가 민혁님이 API 명세 관련 툴을 써본 적이 있다고 하셔서 해당 내용을 기반으로 작성해나가기 시작했습니다.
API 명세를 작성하다가 의견이 좀 엇갈린 부분이 user와 admin이 있는데 기능을 만들게 된다면 URL 자체를 나눌 것이냐 같은 URL을 쓰고 안에서 판단해서 쓸 것이냐가 있었습니다.
또 전체 게시글 조회 부분에서 페이지네이션을 어떻게 해야될지 고민을 하다가 게임 개발할 때 메일함을 만들었던 기억을 좀 되살려서 URL에 페이지와 사이즈를 받자라는 아이디어를 냈습니다.
의견이 엇갈리는 내용을 정리하기 위해 튜터님을 찾아가서 질문을 하여 좋은 답변들을 많이 받았습니다.
제가 정리를 잘못해서 튜터님의 의도가 잘 드러나지않을 수가 있습니다.
Q. 역할이 User와 Admin이 있는데 URL 자체를 나눌 것인지 같은 URL을 쓰고 안에서 역할을 판단해서 쓸까요?
A. 권한 설정이 주된 것이기 때문에 코드를 깔끔하게 하고싶으면 URL을 빼는게 맞습니다
Q. 페이지네이션하여 각 페이지 당 게시물 데이터가 5개씩 나오게 합니다. URL에 페이지와 사이즈를 받는 것은 어떨까요?
A. 좋지않습니다. URL에 변수 이름으로 구분을 해놨으니 지금은 괜찮아보여도 posts/1/5 <- 어떤 URL인지 알 수 없습니다. Spring Pageable 키워드로 찾아볼 것을 권장드립니다.
Q. User와 Admin을 만드는 과정에서 secret key를 맞게 입력한다면 admin으로 역할을 부여하려고 합니다. 이 과정이 팀원들에게 좋은 반응이 없었는데 괜찮을까요?
이 부분은 저도 머리 속으로 정리가 안된 질문이라 튜터님도 굉장히 혼란스러워 하셨습니다.
A. 일반 유저를 Admin으로 승격시키는 서비스를 만들어도 되고 이메일을 인증하는 식으로 해도 괜찮을 것 같습니다. 만들고자하는 서비스에 맞는 구현 방법이 필요합니다. 단순하게 뭐 좋다 나쁘다로는 얘기를 못해주고 서비스에 맞는 방법을 물어보면 대답을 해줄 수 있을 것 같습니다.
해당 질문 답변을 마친 다음에 팀원들에게 공유하고 API 명세를 좀 다듬은 뒤 역할을 나눴습니다.
지우님이 Organization 도입을 원하셔서 도입을 시도했는데 제가 push에 권한 문제가 계속 발생하여 일단은 제가 만들어놓은 개인 repository에 작업을 시작하려고 합니다.
지우님 말을 듣고나니 다른 팀원 분들의 포트폴리오 때문에라도 팀을 만드는 것이 좋아보였는데 repository 설정을 개인 쪽으로 다 해놔서 그 부분들이 아쉬웠습니다.
중간 피드백을 위해 역할을 나눠야해서 역할을 빠르게 나눈 뒤, 나눈 역할대로 Git issue를 분배 시켰습니다. 많은 작업에 인증, 인가가 필요할테니 제 업무가 최우선이 됩니다.
제 작업이 마무리가 되면 코드, 일정 관리에 힘을 쓰거나 일이 과도하게 몰린 팀원의 일을 나누는 식으로 작업하려 합니다.