2주 First Project 회고

Jogi's 코딩 일기장·2021년 10월 18일
0

블로그 기록이 꽤 오랜만이다. Section 3가 끝난 후 HA 준비와 HA 치루기, 통과 후 포트폴리오가 될 Final Project 전에 연습삼아 해보는 2주짜리 First Project를 진행하게 됐다. First Project에 대한 회고를 진행해보겠다.

팀 배분

지금 우리가 수강하는 32기는 3번의 HA를 거치면서 13명의 수강생이 남게됐다. 그래서 최대 4명의 팀을 구성한다 했을 때, 4명의 한 팀을 제외하면 3명으로 구성된 팀으로 2주 프로젝트를 진행하게 됐다. 우리 팀 같은 경우는 백엔드 2명, 프론트엔드 1명의 구성으로 진행을 하게 됐다.

팀장이 됐다...

팀으로 프로젝트를 진행하게 되면 결국 팀장이 필요하기 마련이다. 그래서 팀장을 정하게 됐는데 나 포함 모든 팀원들이 역시 팀원이 팀장이 되기를 꺼려했다. 그래서 돌림판을 돌렸으나, 결국 내가 팀장이 되어 프로젝트를 진행하게 됐다.

팀장으로서는 부족했다

프로젝트를 진행하며 엔지니어 분들께 알리는 보고서나 팀별 회고 같은 문서는 잘 올렸다고 생각한다. 하지만 개발에 들어서 본인이나 팀원의 역량을 잘 파악하지 못하고 태스크를 분배하게 됐다. 또한 과감해야 할 땐 과감했어야 했는데 나는 그저 팀원들의 편의를 생각하고, 각 태스크에 대한 압박 또한 전혀 주지 않았다. 이렇다 보니 전반적인 프로젝트 진행에 있어서 많이 더뎠던 것 같다. 아직 많이 부족하다고 생각한다.

개발

SR 작성

먼저 개발에 들어가기 전에 SR 작성의 단계를 걸쳤다. 요구사항과 DB 스키마, 와이어 프레임, API 문서, 시스템 아키텍쳐, 팀규칙, 역할 분배 등을 작성하는 단계였다. 어떤 서비스를 만들어볼까에서 시작해서 어떠한 구조와 어떤 스택을 사용해야 할 지 많이 고민을 하게 된 시간이었다. 기존에 있던 서비스와 다른 기능을 생각하는 것이 보통 쉬운 것이 아니었다. 그리고 문서 하나하나 만들어 나가는 것 또한 여간 힘든 것이 아니었다. 생각할 것도 많았으며, 정해진다고 해서 문서가 수정되지 않을 것이란 보장 또한 없으며, 우리가 사용해야 될 스택들에 대한 완벽한 이해가 되지 않았기 때문에 완성도가 있는 문서를 작성하지는 못했다. 그래도 피드백을 통해서 kick이 될 수 있을만 한 기능이 나왔는데 이것은 다른 기본적인 기능들을 구현하는데 시간을 쓰고, 프론트 단과 연결하는데 시간을 많이 소비해서 구현을 하지 못한게 많이 아쉬웠다.

개발 단계

나같은 경우는 처음에는 로그인과 댓글 관련해서 스프링을 이용한 서버 단에서의 개발을 시작했다.

카카오 OAuth 로그인

부트 캠프를 진행하며 배워온 학습 정보와 토큰을 이용해서 로그인을 구현했지만 SR이 수정됨으로써 로그인을 구현했던 것이 사실상 필요가 없어지는 순간이었다. 대신에 카카오 OAuth를 구현해보라는 엔지니어님의 말씀을 따라 카카오 OAuth를 구현하게 됐다. 처음에는 우리가 학습하며 실습한 Github OAuth 코드를 보며 이해를 해봤다. OAuth Sprint를 진행하며 작성한 코드들을 다시 이해를 해보기도 했다. 지금와서 생각해보는 것이지만 해당 Sprint 때 Redirect되는 주소에 대해 제대로 이해하지 못하고 지나간 것 같다. 그래서 이번 카카오 OAuth로 진행하며 이에 대해서 많은 어려움을 겪게 됐다. 또한 많은 블로깅을 하며 방법에 대해 알아봤었는데, 결국에는 카카오 API 문서를 이해하고 제대로 활용할 줄 아는 것이 포인트였다. OAuth를 구현하냐고 많은 시간을 소비했지만, 많은 것을 배울 수 있었던 카카오 OAuth 로그인 구현이었다. 나중에는 이 뿐만 아니라 구글의 OAuth도 구현해봐야 할 것 같다.

로그인 클라이언트 & 서버 연결

사실 로그인을 하면서 또 애를 먹은 부분이 이 부분이었다. 위에서 언급한 Redirect 주소와도 연관이 있다. 일단 처음에는 토큰을 세션으로 관리를 하도록 서버에서 구현을 했다. 이렇게 했더니 클라이언트 단에서는 Redirect되는 주소를 "/"로 했더니 세션아이디가 계속 초기화가 되어 토큰을 사용하지 못하는 상황이 생겼다. 그래서 이를 위해 클라이언트 단에서 세션아이디를 윈도우 로컬스토리지나, 세션스토리지를 이용해서 해결해보려 했으나 다른 오류를 접하게 되어 접게 됐고, 매우 위험한 생각이었지만 토큰을 바디에 담아 클라이언트에 보내고 클라이언트가 액세스 토큰을 관리하도록 하게 하여 해결은 하게 됐다. 하지만 보안적으로 이를 더 보완할 생각을 해봐야 할 것 같다.

댓글 기능 구현

내가 구현하게 된 또 다른 기능은 유저의 댓글 CRUD 기능이었다. 이는 꽤 수월하게 해결할 수 있었다. 부트캠프를 진행하며 스프링과 데이터베이스를 많이 다루게 됐으며, 이 때 배운 지식으로도 충분히 구현해낼 수 있었다. 그래도 아쉬운 점이 있었다면 Controller, Service, Repository의 역할을 제대로 나누지 못했던 것 같다. 나누긴 했지만 지금보면 아쉬워 보이긴 하는 부분이다. 또한 서버 쪽에서는 완료가 됐지만, 클라이언트 단에서 시간 부족으로 보여주지 못한 것이 아쉽다.

결과

결과를 보면 서버에서의 처리를 보이지는 않지만 아쉬운 부분도 많았다. 또한 보이는 것처럼 클라이언트의 UI/UX가 많이 부족하긴 하다. 이는 서버 2명에 클라이언트 1명으로 구성되기도 했고, 시간도 꽤 많이 부족했던 것 같다. 클라이언트 한 분 마저도 원래는 백엔드 지향이었는데, 도전해보고자 하셔서 클라이언트 부분을 하시게 됐다. 이렇게 돼서 서버에서는 기본적인 기능만 구현하고, 서버와 클라이언트를 연결하는 부분을 도와드리게 됐다. 이렇게 2주동안 first project를 진행하며 배우게 된 것은 나는 백엔드를 하고 있지만 프론트엔드도 매우 힘든 작업이 있으며, 고생을 많이 하게 된다는 것을 느꼈고, 또 개발을 하다가 개발에 따른 문서수정을 하고 있었는데 이는 무조건 고쳐야 할 부분이라고 생각한다. 그리고 제일 중요한 것이 팀원과의 소통, 대화가 많이 필요하다는 것을 절실히 깨달은 First Project였다. 다음 Final 때는 이를 많이 보완할 수 있도록 해야겠다.

profile
프로그래머로서의 한걸음

0개의 댓글