1차 프로젝트 후기 - GITOMP

1

WECODE

목록 보기
2/3
post-thumbnail

💻 프로젝트 소개

  • 위코드 1차 프로젝트로 스톰프 뮤직 홈페이지를 클론하게 되었다. 우리 팀은 백엔드 2명, 프론트 3명이었고, 나는 백엔드를 담당했다.
  • 개발기간 : 2020.12.14 ~ 2020.12.24 (약 2주)
  • GITOMP 백엔드 Github

클론한 사이트

STOMP MUSIC
  • 원본 사이트 링크 : 스톰프뮤직
  • 클론한 웹사이트 영상 👇

🖊️ Project Detail

적용기술

  • Python
  • DJANGO
  • MySQL
  • Bcrypt
  • JWT
  • AWS
  • WSGI
  • NGINX

협업 툴

  • Github
  • Trello
  • Zoom & Google Meeting
  • Aquery Tool

프로젝트에서 수행한 역할

  • 프로젝트 필수 구현 사항 정리 (공통)
  • 데이터 모델링 (Aquery Tool)
  • Mysql DB 구축
  • Fake Data Generation
  • 로그인 & 회원가입 (Bcrypt & JWT 이용)
  • 앨범 카테고리별 조회 API
  • 앨범 리스트 & 상세 정보 조회 API
  • 게시판 & 댓글 CRUD API
  • 필터링 & 페이지네이션

👏 개인적으로 생각한 잘한점

소통 & Conflict 최소화

개발자가 되고 싶은 사람이라면, 당연히 소통이 중요한다는 것을 알고 있어서 그런지 "소통"을 처음부터 신경을 많이 썼다. 처음부터 각자의 의견을 백엔드면 백엔드끼리 / 프론트면 프론트끼리 모아서 종합적으로 필수 구현사항을 최종적으로 어떤 것을 얼만큼 구현할지에 대해서 토론하고, 의견 차이가 있었지만, 필수구현 사항이라고 생각 안되는 부분은 과감하게 컷하고 추후에 시간이 남을때 구현하기로 했던 점이 이 프로젝트가 그나마 유하게 갈 수 있었다고 생각한다. (일단 저희 팀원분들이 너무 성격이 잘 맞아서 그런가 싶기도 하다 😋) 프로젝트가 끝나면서 생각난 것이, 이게 그토록 멘토님들이 말씀하시는 SCRUM 방식의 일부분이지 않을까 생각을 하게 되었다. 프로젝트에서 보여줄 부분을 우선순위 위주로 선정하여, 개발이 어떻게 진행되는지 서로 얘기하니 확실히 프로젝트에 더 집중할 수 있었다고 생각한다.

편하게 물어볼 수 있지만, 내가 먼저 공부하고 질문 !

위에서 나온 "소통"에 대한 상반되는 관점이긴 한데, 팀원끼리 "소통"이 너무 잘되면 모르는 것이 있을때 팀원에게 너무 쉽게 물어보러 가지 않을까 걱정을 하기도 했다. 물론 시간이 너무 부족하고 쉽게 문제해결을 한다는 것이 나쁘다는 것은 아니다. 다만 나는 개발에서 문제가 생겼을 때, 이 순간이 문제에 대한 해결능력을 키울 수 있는 아주 귀중한 기회라고 생각한다! 그렇기 때문에, 이 기회를 다른 팀원들이 너무 쉽게 포기하지 않을까도 생각을 했지만, 다들 모르는 것이 생기면 일단 자신이 할 수 있는 공부와 시도를 해보고도 안될때 팀원과 해당 문제를 공유하는 것을 보고, 이번 프로젝트의 팀원들에게 더 안심하고 일을 맡길 수 있었다.

위기를 기회로 !

이건 일반적인 해프닝으로 끝날 수 있었던 일이긴 하지만 한 번 프론트분이 실수로 무한루프로 내 로컬 서버로 요청을 보는 경우가 생겨서 내 노트북이 순간적으로 멈추는 사건이 있었다. 하지만, 서비스를 설계하면서 절대적인 안정성을 갖춰야하는 서버의 성격을 생각하면, 해당 해프닝은 현업에서도 발생할 수도 있는 상황이라고 생각했고, "해당 문제를 해결하기 위해서 어떤 해결책이 있을까" 라는 생각의 씨앗이 되었다. 그래서 쉽게 공부하고 적용하였던, select_related와 `prefetch_related를 다시 한번 복습하면서 더 효율적인 API (아직 많이 부족하지만 ㅠ)는 어떻게 구성해야되는가에 대해 고민을 많이 할 수 있었다. 또한, 우리 웹사이트는 우리가 customized한 앨범/콘서트 이미지가 정말 많았다. 그 데이터를 DJANGO에서 static 폴더에 저장하여서 python runserver로 불러오고 있었으니 단일 쓰레드로 돌아가는 테스트용 서버의 한계점을 이해할 수 있는 계기가 되었고,"Gunicorn(WSGI)"와 "Nginx(WAS)"같은 웹서버와 WSGI의 공부의 필요성을 느낄 수 있었다. 결국, NGINX + GUNICORN + DJANGO + AWS EC2의 조합으로 배포용 API 사이트를 만들었는데 정말 뿌듯하였다.

😭 아쉬웠던 점

멘토님들과의 소통

이것은 "상세정보"를 구현하면서 받았던 피드백인데,

previous_board와 next_board 의 아이디를 백엔드에서 미리 알고 안내해주는 것은 일반적인 경우는 아닙니다.
보통은 사전에 BoardListView에서 게시물의 순서를 쭉 다 보내주었기 때문에, 프론트에서 현재 게시물을 기준으로 그 직전 게시물과 그 직후 게시물의 id를 찿아내서 표시합니다.

위와 같이 글의 상세정보에서 "다음글"과 "이전글"은 프론트가 처리하는 것이 일반적이라는 것을 처음 알았다. 하지만, 이미 해당 기능은 이미 구현이 완료되어 Github에서 Merge가 된 상태였기도 하고, 무엇보다 프론트 분들의 엄무가 백엔드의 엄무보다 더 많았다고 생각한다. 마지막 발표날까지 애니메이션 하나하나 신경쓰면서 개발하시는 프론트분들을 보고 있자니 저걸 지금와서 프론트분들에게 넘기는 것은 시간적으로 불가능하다고 의견을 나누었기 때문이다. 그렇기 때문에 해당 피드백을 받았음에도 수정을 못하겠다고 멘토님께 설명을 드렸고, 애초에 저렇게 하면 안되는 이유는 (개인적인 생각입니다... 틀린면 지적해주세요~) 이전 게시글과 다음 게시글에 대한 데이터를 한 번더 서버에서 필터링하고 DB에 Query를 날려야되기 때문이라고 생각한다. 사실 이 부분에 대해서 한가지 의문점을 눈치채고 있었다. 왜냐하면 해당 API호출할때 해당 상세내용에 대한 DB Query는 2~3개였고, 이전/다음 글에 대한 DB Query는 2개씩해서 총 4개가 발생하고 있었기 때문이다. 배보다 배꼽이 더 큰 경우인 것이였다... 현업에서는 이렇게 비효율적인 API를 구성할까라는 의심을 하긴 했지만, 내가 아쉬웠던 점은 이 부분을 사전에 멘토님과 얘기하지 않고 저런 피드백을 받을때까지 우리 팀끼리만 얘기를 했다는 점이다. 이 피드백을 설명하여 멘토님이 Merge 해주셨지만, 분명 이 피드백을 들을때까지 내가 사전에 저런 생각을 가지고 있었다는 것을 묵인한 일은 반성해야겠다고 생각한다.

모델링 수정

이건 관점에 따라 다르게 생각할 수 있지만, 나는 애초에 DB 테이블을 수정할 각오로 테이블을 설계하였다. 우리 팀이 추후에 구현할려고 리스트업 한 것 중 최우선은 아티스트 카테고리 구현이였다. 그렇기 때문에, 팀프로젝트의 Github에서 확인 할 수 있겠지만, DB 모델링에서 아티스트 부분은 상당히 부실하게 설계하였다. 이렇게 한 이유는 DB 테이블 수정도 언젠간 한번은 마주할 과제라고 생각하고, 경험을 해본것과 안한 차이의 레벨차이를 알기 때문이다. 나의 원래 계획은 후딱 필수 구현을 끝내고 해당 아티스트 테이블을 수정하면서 DB 테이블 수정을 맛보고 싶었지만, 시간적인 한계가 있었기 때문에 못한 부분이 아쉽다... 현업에서 하면 더 빡셀텐데 ㅠ

시간관리

시간은 한정적이지만, 해야되는 양은 정해져 있다.
얼마나 효율적으로 시간을 썼느냐에 대해서 내가 자신을 돌이켜보았을 때 나의 평가는 "B"이다. 왜냐하면, 더 많은 공부를 할 수 있었고, Trello를 이용해서 프로젝트 관리를 하였다고 하지만 보다 정교하게 프로젝트를 진행했다면 짬(?) 시간을 더 내서 완성도를 더 높일 수 있을것이라고 생각하기 때문이다. 내가 어떤 개념을 접근할 때 그것에 대해 실험적인 방향으로 접근할 때가 가끔 있는데, 먼저 개념부터 알고 접근하면 더 이해도를 높일 수 있었을텐데 라는 아쉬움이 남는다. 잘못된 습관이 생기지 않게 조심해야겠다고 생각한다.

마치며 ... 🌈

위코드에 오기전부터 그렇게나 기대하고 걱정하던 1차 프로젝트가 끝났다. 이번 프로젝트동안 밤도 많이 새고 모니터를 꽉 채운 터미널들 덕분에 눈도 많이 아팠지만, 스톰프뮤직에서 우리가 처음 기획때 구현하고자한 기능은 전부 구현할 수 있어서 너무 뿌듯하다. 이 프로젝트 기간동안의 경험이 추억에서 머물지 않고 앞으로 개발자로 뻗어갈때의 좋은 발판이 되면 좋겠다... 마지막으로 같이 프로젝트를 진행했던 (듬직한 PM) 규빈님, (가만히 내비둬도 잘하는) 병곤님, (우리팀의 홍일점) 소윤님, (믿고보는 백엔드 듀오) 선우님께 감사하다고 전하하면서 이번 포스팅은 끝!🌈

profile
# 개발 # 컴퓨터공학

2개의 댓글

comment-user-thumbnail
2020년 12월 27일

빛 승재님 저는 A++이라고 생각합니다.. 프로젝트 너무 고생하셨습니다 !!!

1개의 답글