금요일인 8월 28일부로 첫번째 프로젝트가 마무리되었다...
진짜 발표 직전까지 마무리작업을 진행해서 심장이 쫄깃해졌었다.
프로젝트 전반에 관해서 느낀점을 정리하는 글을 써보려고 한다.
글 솜씨가 정말 없지만, 열심히는 써봐야지ㅋㅋ
프로젝트 구성
- 목표 웹 사이트 - 호주의 유명 차 브랜드 T2
- 프로젝트 진행 기간 - 2020.08.18 ~ 2020.08.28 (12일간)
- 팀 구성 - 총 6명(프론트 4명 + 백엔드 2명)
프로젝트 목표
- 처음으로 진행하는 프론트엔드 + 백엔드 프로젝트로서 목표 사이트를 클로닝 하면서 서로간의 소통을 경험하는 것
- 주어진 일정에 맞게 작업을 진행하고 프로젝트를 관리해보는 것
- Scrum 방식의 개발 방법론을 실제로 적용해보는 것
- 프로젝트 진행을 도와주는 여러 도구를 사용하는 것에 익숙해지는 것
- 목표 기능을 구현해 보는 것
- 회원가입 및 로그인
- 장바구니 및 위시리스트
- 제품 필터링
- 제품 검색
- 리뷰 정보
프로젝트 진행
- 백엔드 1주차 (2020.08.18 ~ 2020.08.21) 작업
- 페이지 전체 데이터 모델링
- 프론트엔드 팀의 구현 목표 확인 및 필요한 데이터 크롤링
- 모델링을 토대로 DB 구성 및 크롤링 데이터 업로드
- 구현 목표 중 가장 기초적인 기능인 회원가입, 로그인 기능 구현 및 테스트
- 기능 구현을 위한 데이터 중 누락된 데이터 재 크롤링 및 DB 업로드
- 백엔드 2주차 (2020.08.24 ~ 2020.08.28) 작업
- 기능 구현을 위한 데이터 중 누락된 데이터 재 크롤링 및 DB 업로드
- 장바구니 및 위시리스트 기능 구현 및 테스트
- 제품 정보에 관한 기능 구현 및 테스트
- 리뷰 기능 구현 및 테스트
- 검색 기능 구현을 위한 Elastic Search 적용 및 테스트
- 프론트엔드 결과물과 연결 작업
- 서버 배포를 위한 AWS EC2 인스턴스 세팅
- DB 관리를 위한 AWS RED 인스턴스 세팅
- 백엔드 API 엔드포인트 구성
- User App - user
- 회원가입 - /join
- 로그인 - /login
- 위시리스트 - /wishlist
- 장바구니 - /shoppingbag
- Product App - products
- 전체 제품 - /
- 제품 상세 정보 - /<int>
- 제품 필터링 - /refine
- Review App - reviews
- 제품에 대한 리뷰 전체 - /
- 특정 제품의 리뷰 - /<int>
- User App - user
프로젝트 결과
프로젝트 완료 후 느낀점
- 가장 먼저 느낀 점은 최초 목표를 정할 때에 확실하게 해야 한다는 것을 느낄 수 있었다. 백엔드와 프론트엔드 간의 생각이 굉장히 다른 점, 최초 목표 설정을 다 같이 알고 있어야 했는데, 그러질 못해서 일정 중간중간 추가적인 회의가 필요했고, 백엔드 입장에서는 생각하지 못한 추가적인 크롤링 작업이 진행되는 경우가 있었다. 내가 느꼈던 원인은 페이지에 어떤 기능을 구현하는데에 있어서 어떤 정보가 필요한지에 대한 명확한 합의가 없었던 것 때문이라 느꼈다.
- 두번째는 모델링을 할 때에 여러 관계를 잘 생각해야 한다는 점을 느낄 수 있었다. 성능과 편의성이라는 관계에서 어떻게해야 둘을 적당하게 만족시킬 수 있는지를 잘 생각하면서 모델링을 진행하고, 그에 따른 DB 구성에 들어가야 이후 작업에서 덜 피곤할 것 같다는 생각이 들었다. 이번 프로젝트의 경우는 목표 웹 페이지가 차를 파는 사이트였기 때문에 옵션과 분류가 너무 다양하다보니 모델링도 모델링인데 그걸 실제로 구현하는 데에도 굉장히 어려웠던것 같다.
- 세번째는 개인적인 반성이다. 백엔드 팀원이셨던 건규님이 정말 잘해주셔서 덕분에 꽤 여유롭게 프로젝트를 진행할 수 있었는데, 여유가 있음에도 불구하고, 기능을 구현할 때 "돌아가면 그만"이라는 안일한 자세를 가지고 있었다. 그 결과는 작동은 어떻게 되지만 예외처리가 굉장히 부실하고 위태로운 서버가 되어버렸다. 이 프로젝트는 단순한 교육과정이 아닌 추후에 내 포트폴리오로 사용할 것이라는 걸 다시 되새기면서 지속적인 리팩토링을 진행해야겠다.
- 네번째 느낀점도 개인적인 반성이다. 프로젝트 진행 2주차로 접어들면서 프론트엔드 팀의 작업물과 연동을 테스트해보는 시간이 생기게 되었는데, 그 과정에서 나도모르게 좋지않은 태도를 보인것 같다. 회원가입/로그인 연동 테스트에서 개인적으로는 간단하게 연결될 것이라고 생각했는데, 예기치않게 시간이 조금 길어진 탓에 조금 날카롭게 프론트엔드 팀원을 대한 것 같다... 다시한번 죄송합니다. 상원님, 규영님. 언제나 여유롭고 침착할 순 없지만 평정심을 유지하기 위해서 계속 노력해야 할 것 같다. 가뜩이나 성질이 급한편이라서 더욱 주의해야함을 느꼈다.
- 다섯번째 느낀점은 조금 혼란스러웠던 것인데, 바로 RESTful API에 관한 것이었다. 프로젝트 진행 도중에 관련된 세션을 듣고나니, urls 네이밍을 완전히 엉망으로 했다는 결론에 이르렀는데, 막상 갈아엎기에는 조금 무섭기도하고, 일단 프로젝트 완성을 목표하자는 생각으로 다음에는 확실하게 하자 라는 생각을 했다. 다음 프로젝트에서는 RESTful한 API 엔드포인트 구성을 위해서 더욱 노력해야겠다고 느꼈다.
- 여섯번째 느낀점은 다른분들은 Git 사용에 꽤나 머리아파 하는 것 같았는데, 나는 다행히도 그렇게 느끼진 못했다. 다만 브랜치 네이밍에 있어서 Django의 App 이름 기준으로 할 지, 기능을 기준으로 할 지에 대한 생각을 조금 하게 되었다. 이번에는 App이름을 기준으로 했는데 이러다보니 views 파일에 대한 수정사항이 겹치는 경우가 생겨서 조금 번거로웠다. 다음부터는 Git 사용에 대한 기준도 최대한 확실하게 정할 필요가 있다고 느꼈다.
다음 프로젝트를 위한 마음가짐
- 이번 프로젝트에서 진행보지 않은 새로운 기능을 담당해보도록 의견을 내야겠다.
- 구현 기능에 대한 정보를 확립할 수 있도록 나부터 확실하게 파악하고 다른 팀원들과 공유하자.
- 코드 컨벤션, 코드 내에서의 네이밍 룰등을 확실하게 확립하고 철저하게 지키도록 노력하자.
- RESTful API 구현을 위해서 노력하자. 이거 생각보다 엄청 어렵다...
- Git 관리에 대한 기준을 확립하자.
- 예외처리는 빡셀 수록 좋다. 따라서 빡세게 구성하자.
- 이번 프로젝트에서는 유닛 테스트를 간단하게 구성해도 괜찮았지만 다음 프로젝트부터는 아니므로 염두에 두자. 애초에 이번 프로젝트에서도 모든 View에 유닛 테스트를 적용하지 못했다.
'wecode > 기타' 카테고리의 다른 글
두번째 웹 프로젝트를 끝냈다. (0) | 2020.09.13 |
---|---|
위코드 Codekata - 2 (0) | 2020.08.30 |
위코드 Codekata - 1 (0) | 2020.08.17 |