[위코드] 2차 프로젝트 회고록

김동규·2022년 8월 13일
1
post-thumbnail

들어가며

위코드에서 두 번째로 진행된 2주간의 프로젝트가 종료되었다. 1차 프로젝트를 한번 경험했던터라 많은 부분에서 달라진 나의 모습을 기대했지만 생각과 달리 쉽지는 않았다. 이제까지 써보지 못한 새로운 기술들을 다뤄야 하는 점도 있었고, 추후에 있을 기업 협업을 준비하는 과정이 함께있어 온전히 개발에 집중하지 못했었다는 점이 있었지만, 이는 모두 핑계일 뿐 이번 프로젝트에 대해 회고를 해보며 또 반성의 시간을 가져보도록 하겠다.

프로젝트 소개

프로젝트명 : Fresh us (Backend 담당)
개발 기간 : 2022.08.01-2022.08.12
팀 구성 : Frontend 4명, Backend 2명
기술스택 : Python, Django, MySQL, Miniconda, Git, Slack, Trello
역할 : 소셜로그인 API, 댓글 CRUD API 구현

2차 프로젝트 또한 1차와 마찬가지로 특정 사이트를 선정하여 모티브를 한 웹 사이트를 개발하는 과제를 수행하게 되었다.

모티브를 하게된 사이트는 싱그러운 집이라는 사이트로 식물, 친환경과 관련된 상품을 판매하고 관련된 장소를 소개하고 공유하는 일종의 SNS를 제공하는 사이트이다. 이전 1차 프로젝트에서 대부분의 팀원들이 커머스사이트를 경험해보았기 때문에 상품을 판매하는 커머스 부분을 추가 구현사항으로 하고 커뮤니티 중심으로 개발을 하는 것으로 기획을 하여 개발의 방향을 잡았다.

프로젝트를 진행하며 여유가 있으면 상품 판매 커머스까지 구현하고 싶었지만, 결국 마감기한의 벽에 부딪혀 커뮤니티까지만 구현할 수 밖에 없었다.

프로젝트 작업물

위에서 언급한대로 이번 프로젝트에서는 사이트의 회원들이 서로 친환경, 식물과 관련된 장소에 대한 포스팅을 하고 이를 공유하는 커뮤니티 사이트에 대해 구현을 하였다. 사이트의 자세한 사항은 아래에서 구현한 페이지 별로 소개하도록 하겠다. (이하 설명은 백엔드 부분을 위주로 설명)

전체적인 코드는 Github를 통해 볼 수 있다.

메인페이지

메인페이지는 크게 특별한 것은 없다. 사진을 마우스 클릭을 통해 넘겨볼 수 있도록 프론트 쪽에서 힘써 주었다.

소셜로그인

카카오 API를 이용하여 소셜 로그인을 구현한 페이지이다. 이번 프로젝트에서 나는 이 페이지를 구현하는 역할을 맡았는데, 이는 처음해보는 부분이라 많은 시간을 투자하게된 어려운 부분이였다. 카카오회원으로 로그인을 하게되면 클라이언트 측에서 카카오 서버에 요청을 보내는 것으로 로그인을 시작하게 된다. 자세한 내용은 카카오 API 공식문서를 참고하길 바란다.

공식문서만을 보고 모두 구현해보려 노력하였지만, 이해하기가 어려워 주변의 도움을 받을 수 밖에 없었다..... 그래도 구현해냈다는 것에 만족한다.

🔗소셜 로그인 구현하기

게시글 등록

게시글을 등록하는 기능을 구현한 화면이다. 등록하는 게시글에는 글의 제목, 카테고리, 해시태그, 위치 정보를 담게된다. 그리고 본문에는 텍스트와, 사진 파일이 담기게 되는데, 사진 파일의 경우 AWS의 S3를 이용하여 클라우드에 사진파일이 담기도록 하였고, 서버의 데이터베이스에는 해당 url을 담아 게시글에 함께 등록되도록 하였다.

초기 기획에서는 게시글의 본문에서 텍스트와 사진이 게시자가 지정한대로 섞여 저장될 수 있도록 구현하고 싶었지만, 기간과 우리의 능력을 생각했을 때 힘들다고 생각되어 사진과 텍스트는 결국 별도로 표현되도록 구현 하였다. 다음에는 꼭 해당 기능을 구현해보도록 연습을 해야겠다.

게시글 목록


게시글 목록 페이지이다. 해당 페이지에서는 우측 상단에 무작위로 추천 게시물이 나오게되고, 해당 추천 게시물들의 위치가 지도를 통하여 나오게 된다. 그리고, 검색 키워드와 카테고리 정보를 통해 필터링하여 원하는 게시물의 리스트를 볼 수 있는 부분이다.

게시글 조회

게시글을 조회하는 페이지이다. 게시물 페이지에 필요한 데이터를 서버에서 전체적으로 전송한다. 이때 이미지는 AWS 클라우드에 저장된 사진파일의 url을 전송하여 게시글에 이미지가 보일 수 있도록 하였다.

그리고 게시글의 정보에 포함된 위치 정보를 이용하여 지도 API를 호출하여 위치를 표현하였다.

댓글

마지막으로 댓글 기능이다. 이 부분도 내가 맡게 되었는데 조금은 골치가 아팠던 부분이다. 처음에는 댓글기능 뭐 별거 아니라고 쉽게 생각했다. 그런데 특정 댓글의 하위댓글을 구현하는 부분에서 문제가 있었다.

댓글과 하위댓글을 포함하여 5개씩 페이지네이션을 구현하려다 보니 여간 어려운게 아니였다. 결국 표현해낸 방법은 반복문을 두 번을 이용하는 방법이였다. 처음에 최신순으로 정렬된 상위댓글을 하나 가져오고, 이에 대한 하위 반복문을 한번 더하여 해당 댓글의 하위 댓글을 정렬하도록 하였다. 이렇게 만들어진 배열을 클라이언트 측으로 보내는 방법으로 구현하였다.

🔗댓글 구현하기

총평

좋았던 점도 있었고, 아쉬운 점도 있었지만 이번 프로젝트는 그래도 나름 만족스러운 프로젝트였다.

우선, 좋았던 점으로는 1차 프로젝트때 제대로 신경쓰지 못했던 팀 활동에 대한 기록(노션)을 꼼꼼하게 했었던 것이다. 물론 팀 활동 노션 페이지에 노력과 정성을 쏟았던 것은 나보다는 우리 팀원들 이였지만 나도 나름 열심히 거들어 만족스러운 기록물이 생긴 것 같다.

노션을 통하여 프로젝트에 대한 간단한 소개와 API명세서, 회의록 등을 꼼꼼하게 정리하여 각 팀원들이 어떤 일을 하고 있고, 어떤 어려움에 직면해 있는지를 알 수 있었고, API명세서를 꼼꼼히 작성한 덕분에 EndToEnd Test를 할 때 혼선이 크게 없어서 만족스러웠다.

이를 통해 앞으로 개발자로서 협업을 하는 방식에 대해 알고 좀 더 성장할 수 있었던 것 같다.

협업에 대해 아쉬운 점이 있다면 Trello Tool에 대한 사용이 미흡했던 것 같다. Trello의 경우 간단한 도구임에도 활용을 하지 못하였다. 앞으로 현업에 나가게 되면 더 복잡하고 심도있는(?) 도구를 많이 사용하게 된다고 하는데..... 조금은 걱정이 되지만 이 또한 내 앞에 닥치게 되면 하게되리....

이 외에도 외부 API 호출, AWS 배포 등 새로운 기능들에 대해 구현해볼 수 있었던 점들이 좋았던 점으로 남는다.

아쉬운 점이라 하면..... 솔직히 크게는 없지만 좀 더 많은 기능들을 구현해보지 못했던 점이 있지만 이는 크게 개의치 않는다. 내 개인적인 기술 수준이 늘어나는 것도 좋지만, 팀원들과 함께 일하는 즐거움이 가져다 주는 즐거움이 큰 프로젝트 였다.

결론은? 나는 매우 만족스러웠다!

profile
Just Do It

0개의 댓글