항해99/WIL

[항해99] 1주차 미니프로젝트 - WIL

프로아마추어 2022. 5. 15. 14:04

 

서론

항해99의 첫 일정이 시작되었다. 4명으로 이루어진 팀으로 팀 편성을 하여 미니 프로젝트를 만들어야 했다. 프로젝트 기간으로 4일 밖에 주어지지 않았기에 어색한 인사를 뒤로 사이트 기능, 화면 설계, DB설계, API 작성에 접어들었다. 개발 단계에서는 팀원끼리 의사소통을 활발히 하여 배포 단계까지 무사히 이르를 수 있었다.

 

기획 및 설계 단계

개발환경은 Python IDE인 pycham을 사용하였다. 주요 기능이 데이터를 크롤링하는 것이었기 때문이다.

 

화면설계는 디자인 협업 툴로서 figma를 사용하였다.

 

https://www.figma.com/?fuid=

 

Figma: the collaborative interface design tool.

Build better products as a team. Design, prototype, and gather feedback all in one place with Figma.

www.figma.com

 

데이터베이스는 MongoDB Atlas를 사용했다.

https://account.mongodb.com/

 

MongoDB Cloud

MongoDB Cloud is a unified data platform for modern applications and includes a global cloud database, search, data lake, mobile, and application services.

www.mongodb.com

 

각 기능에 대한 API설계를 위해 기능설명, url, request, response 항목에 대한 문서 작업은 google sheet에서 작성하였다.

https://www.google.com/intl/ko/sheets/about/

 

Google Docs

Google Docs. 좋아하는 사람 52,483명 · 이야기하고 있는 사람들 121명. News and updates about Google Docs, Sheets, Slides, Sites, Forms, and more!

www.facebook.com

 

내가 맡은 기능

나는 로그인, 회원가입 페이지를 맡게되어 사용자 로그인 여부를 알 수 있는 JWT에 대해 공부하고 이를 적용하여 웹 사이트에 반영하였다.

 

협업 프로젝트 버전관리를 위해 source tree툴을 다루었는데 git에 대한 이해도가 깊지 않을 뿐더러 팀원 간의 역할 분배가 기능 중심이 아닌 페이지 중심으로 진행되다 보니 push, pull 그리고 merge 과정에서 충돌이 잦았다.

 

우여곡절을 겪으며 마지막 4일차에 접어들었을 때 pull request, 브랜치 생성에 어느정도 익숙해져 수월한 모습으로 프로젝트를 마무리할 수 있었다.

 

트러블 슈팅

1. 협업하는 과정에서 하나의 파이썬 파일에서 flask 서버를 구동하여야 했는데 분리되어 있던 팀원들의 파이썬 파일을 합치는 과정에서 소스가 방대해서 그런지 자꾸 에러가 발생하였다. 이 상황을 타개하기 위해 blueprint라는 패키지를 사용하여 라우팅 함수를 관리함으로서 해당 이슈를 해소할 수 있었다. 

 

https://wikidocs.net/81510

 

2-03 블루프린트로 라우팅 함수 관리하기

`[완성 소스]` : [github.com/pahkey/jump2flask/tree/2-03](https://github.com/pahkey/jump2flask/tree/2 ...

wikidocs.net

 

2. 로그인 기능에 JWT개념을 사용하고 있었다. 로컬 환경에서 이상 없던 로그인이 서버 환경에서는 에러가 발생했다. 이래저래 말이 많았는데 결론은 JWT의 decode 메서드를 사용하지 않아 발생한 이슈였다. 로컬상의 테스트와 실제 서버에 배포한 후 테스트를 진행하는 결과가 꼭 같지는 않다는 것을 알게 되었다.

 

미니프로젝트 링크

https://github.com/Yudove/mini-project-team9

 

GitHub - Yudove/mini-project-team9: 9조 미니프로젝트

9조 미니프로젝트. Contribute to Yudove/mini-project-team9 development by creating an account on GitHub.

github.com

 

느낀점

아무래도 나도 개발 실력이 부족하지만 다른 조원들은 거의 처음 개발에 발을 들인 것 같았다. 모두의 의견을 수렴하긴 하였지만 상황이 상황이다보니 내가 주도하여 프로젝트를 진행하게 되었다.

 

프로젝트 제출일이 되었을 때 시간을 여유있게 가져갔다고 생각했음에도 불구하고 막상 서버에 배포를 하니 알 수 없는 에러가 발생했다.

 

로그인이 정상 동작하지 않는 것이었다. 내가 맡은 기능에 대한 문제였고, 내 문제도 제대로 확인하지 못하고 다른 팀원들을 도우려고 했다는 사실이 부끄럽게 느껴졌다.

결과적으로 이슈를 잘 해결하여 기준 제출 시간을 오버해서 마무리를 지었다. 개발 공수를 짤 때 더 여유있게 계산을 하고 트러블 관리에 대한 장치를 의도적으로 만들어놔야겠다는 깨달음을 가지게 되었다.

 

더불어 프로젝트 개발 전 API설계에 대해 철저히 작성을 하지 못했고 이 마저도 따르지 않아 팀원들 간의 소스에 대해 혼선이 많이 발생했다. 프로젝트 전 설계 단계의 대한 중요성을 다시금 상기하게 되었다.

 

무엇보다 혼자서만 개발 공부를 하다가 실제로 의견을 주고 받으며 프로젝트를 해보니 너무 재밌었다. 2주차 알고리즘, 3주간의 주특기 교육이 끝나고 착수하게 될 프로젝트에 나의 아이디어와 개발 능력을 기여하고 싶다.