본문 바로가기

기술들/Codestates

코드스테이츠 Final, 4주 프로젝트를 마치며 😭..

[ Intro ] 

First 프로젝트를 마치고 하루 쉬고 Final프로젝트에 들어갈 때, 와.. 이거 어떻게 하지..ㅋㅋㅋ라는 생각이 엊그제 같은데..라는 뻔한 소리가 나올 만큼 시간이 정말 훅 갔다. 빠르다 빨라.. 이번 역시 그동안의 과정에서 있었던 일에 대해 느꼈던 점들을 나열해보려고 한다. 지금 당장은 쉬고 싶은 마음이 크지만, 회고를 마무리해야 조금 편하게 쉴 수 있을 것 같다. (조금만 쉬자..!) 🥱

 

[ SR ] 

 아이디어 선정시간에 정말 다양한 의견들이 오고 갔다. 가장 기억에 남는 아이디어는 팀원분이 말해주신 것이었는데, 축구스타 손흥민이 토트넘에서 골을 기록한 위치나 자세들을 축구장에 기록해놓고 유저가  클릭하면 그때의 행동 데이터(축구공을 찬 속도, 발 각도 등)들을 볼 수 있게 해서  손빠(?)들을 공략하자는 아이디어였다. 나도 축구를 정말 좋아하기 때문에 그때 당시.. 와 이거 진짜 참신한데? 혹시나 비슷한 서비스가 있을까? 하고 구글링 해봤는데 토트넘 공식 홈페이지에서 이미 제공하고 있는 서비스였다. 내가 이때 살짝 꽂힌 프로젝트가 있었는데 코드 스테이츠 전전 기수가 진행했던 맥주 사이트였다. 듣지도 보지도 못한 다양한 맥주들의 정보를 알 수 있는 사이트였는데 우리도 이런 식으로 맥주와 같이 여러 종류가 있는 콘텐츠를 하나 정해서 그것에 대한 정보를 열람하거나 추천해줄 수 있는 사이트를 만드는 게 좋지 않을까 하고 살짝 제안을 해봤는데, 모두가 잠깐 생각을 해보더니 팀장님이 그럼 칵테일을 콘텐츠로 하면 어떻냐고 제안을 했고, 우리 모두 와 이거다! 하고 결정을 하게 됐다. 그렇게 술알못 4명이 술 정보 사이트를 시작하게 된 것이었다.  😳

 

 아이디어도 정했겠다.. 바로 UI설계에 들어갔다. 우리 팀장님이 이 분야에 있어 정말 남다른 감각을 보여주셨는데, Figma로 목업 샘플을 정말 깔끔하고 이쁘게 되도록 진행을 하셨다. 이때 제작한 목업 샘플이 지금 우리가 만든 것과 정말 똑같다능.. 뭔가 디자인이 확실히 정해지니 앞으로 프로젝트를 어떻게 진행해야 할 것인지 그림이 그려졌고 명확하게 느껴졌다. DB설계 역시 빠르게 마무리를 했는데, 두 번째 하다보니 테이블에 어떤 칼럼이 와야 하고 다른 테이블 간의 관계를 어떻게 설정을 해주어야 할지 자신감이 생겼다.  😎

 

 그리고 포지션 선정시간..! 이번 역시 Back-end를 도맡았다. First 때와의 차이는 단독으로 맡은 점이다. 내가 능력이 있어서는 절대 아니고, 우리 서비스가 UI적으로 집중을 많이 해야 하는 서비스로 기획을 했기 때문에 프론트에 3명이 필요했다. 또한 서비스가 server와 인터랙션 하는 부분이 백엔드 두 명이 처리할 만큼 그렇게 많은 것도 아니었다. First때 이미 경험을 했던 것이지만 혼자 맡은 만큼 신경 써야 할 부분이 많아서 새로운 스택을 쓰진 않았다. 지금은 조금 후회되는 부분인데, 그때 당시에는 어느 정도 서버가 빠르게 api로직을 작성해서 클라이언트가 테스트를 빠르게 해 볼 수 있게 해야 한다고 생각의 포커스가 맞춰져 있었다. 그래도 리스크가 있더라도 한 번 도전을 해봤으면 어떨까 하는 아쉬움이 있다.. 다음엔 이런 상황일 때 리스크가 있더라도 꼭..! 도전해보고 싶다.  🤔

 

[ It's Coding time ] - 세팅  🖥

 코딩을 하기에 앞서, API 정리에 나섰다. First때는 API문서를 만드는데 Gitbook을 사용했다면 이번에는 Notion에다가 정리를 했다. 기획당시에 그렇게 할게 많아 보이지는 않았는데, 정리를 하고 보니 처리할 api양이 꽤 되었다. 그렇지만, First때 경험을 했던 부분도 있었기 때문에 그리 걱정 되진 않았다.

 제일 처음 RDS를 생성해서 DB환경 세팅을 했고, Sequeilize로 DB diagram에 만든 Table을 참고해서 테이블을 생성했다. First때 이 부분을 맡아서, 정말 많은 시행착오를 겪었었는데, 이번에는 실수 없게 꼼꼼히 진행을 해나갔다. 그리고 MVC패턴으로 각 폴더와 파일의 기능을 명확히 해서 나중에 유지 보수하기 쉽도록 구성했다. First때 이 폴더 구성 쪽은 내가 맡지 않았던 부분이라 공부를 해가며 진행을 했다. 확실히 혼자 한 부분을 도맡아 한다는 것이 비록 서비스에서 비중이 크지 않을지라도, 많은 책임감이 필요함을 느꼈다.  

 

[ It's Coding time ] - oAuth 구현방법을 선택하기까지의 의사결정 과정과 시행착오 🗝

 API 로직을 작성하면서 가장 고민을 많이 했던 부분이 oAuth를 활용한 소셜 로그인을 구현하는 것이었다. First때 역시 소셜 로그인 기능이 있었는데 이 때는 프론트 팀원분이 클라이언트 단에서 React로 소셜 로그인 기능을 구현해주셔서 하지 않았었다. 이번에는 내가 맡게 되었는데, 소셜 로그인을 구현하기 위한 선택지는 여러 가지가 있었다.

 첫번째로는 firebase 플랫폼을 이용하는 방법이었다. 이 플랫폼을 이용해 보기 위해 약간의 공부를 해보면서 이 플랫폼을 이용하면 소셜 로그인을 간편하게 구현할 수 있다는 점을 알게 되었다. 그러나 해외 플랫폼이다 보니 국내 소셜 로그인은 지원하지 않았고 우리 서비스가 카카오와 네이버 로그인을 하기로 결정을 했었기 때문에 firebase를 선택하지 않았다.

 두번째로는 passport라는 nodejs 미들웨어를 사용하는 방법이었다. 이 미들웨어는 일반 로그인 및  거의 모든 소셜 로그인을 지원하는 방법이었는데 역시 이 passport를 사용하지 않은 이유는 passport에 대한 완벽한 이해가 필요하다고 생각했기 때문이었다. 완벽하게 이해하기 위해서는 어느 정도 시간 투자를 해야 하는데, 이번 프로젝트에서 백엔드 포지션을 단독으로 맡게 되다 보니까, 로그인 이외에 api처리들도 빠르게 진행을 했어야 했고 또한 이 방법이 oAuth자체에 대한 공부보다는 이 passport라는 미들웨어에 더 집중하게 되는 공부를 하는 게 아닌가 하는 생각이 들었다. 그래서 고심 끝에 이 방법 또한 선택하지 않았다.

 세번째는 내가 선택한 방법으로 정석대로 카카오와 네이버에 나와 있는 공식문서를 보고 진행을 하는 것이었다. 이 방법을 선택한 이유는 oAuth의 flow를 한 단계 한 단계 거쳐보면서 oAuth에 대한 이해를 높일 수 있을 것이라고 생각했다.

 실제 구현을 하면서 가장 많은 에러가 났던 부분은 redirect uri를 제대로 설정해주지 않아서 생기는 에러였다.  redirect uri가 어떤 역할을 하는지는 알겠는데 어디로 설정을 해야 하는지 감을 잡을 수 없었고, 또한 코드상으로 uri를 정했다고는 해도 naver, kakao 개발자 홈페이지에도 반드시 설정을 해주어야 했다. 소셜 로그인과 씨름해보면서 알게 된 점은 소셜 로그인 로직이 100% 정해져 있는 건 아니었다. redirect uri를 어디로 설정해야 할지를 내가 고민을 했던 것처럼 이것 또한 정해져 있는 부분이 아니었고 내 의도대로 알맞게 설정하면 되는 부분이었다. 즉, oAuth의 몇 가지 핵심적인 부분만 잘 지키면 그 이외에 부분들은 내 입맛대로 구현할 수 있다. 그렇지만 다음에는 편한 방법을 쓸 것이다.. 

 

[ It's Coding time ] - 배포환경 테스트  📈

 이번 Final때 우리 팀이 가장 잘했던 일을 꼽으라면 배포 환경을 빠르게 적용해서 어차피 맞닥뜨렸야 했을 에러들을 일찍 고민해보고 해결했다는 점이다. local에서의 테스트를 빠르게 마무리하고 EC2를 생성해서 api테스트를 해봤는데, 역시 local에서는 드러나지 않던 에러들이 속속들이 발견됐다. 우리 팀은 3주 차에 이 과정을 진행해서 빠르게 Bug fixing을 했고 다른 부분에 더욱 집중할 수 있었다. 

 

[ What I felt? ] - 소통에 관하여  📢

 백엔드로써 효율적인 설계와 코드를 짜는 것도 중요했지만 가장 중요한 점이 소통임을 느꼈다. 백엔드 포지션을 맡으면서 api처리하는 코드를 짤 때, 클라이언트단 팀원분들과 소통을 해야 하는 부분이 많았는데, 이때 나의 생각이나 의견을 잘 정리해서 전달을 하는 것이 프로젝트의 진행속도를 높이고, 팀원 간의 신뢰를 쌓을 수 있는 것임을 알게 되었다. 또한 내 의견을 잘 전달하는 것뿐만 아니라 상대방이 말하는 것을 잘 이해하는 것도 중요하다고 느꼈다. 난 평소 이해가 확실히 안 가도 소통이 잘 되는 모습을 보여주기 위해 일단 '알겠다'라고 하는 습관이 있었는데, 협업 프로젝트를 진행해보면서 이 습관이 굉장히 좋지 않은 것임을 알 수 있었고 이해가 안 간다면 소통하는 자리에서 확실히 이해하고 넘어가는 것이 당장엔 소통이 안된다고 느껴질지라도 더 좋은 행동임을 이번 프로젝트를 통해 깨달을 수 있었다. 항상 이 '소통' 부분이 부족하다고 느꼈던 나였지만 이번에 만난 팀원분들 모두 소통을 너무 잘해주셔서 이 부분에 있어 많이 배울 수 있었다.

 믿음직하신 우리 팀장님과 찐능력자 팀원분들 덕에 프로젝트 마무리를 잘한 것 같다. 리더십의 정석을 보여주셨던 우리 팀장님과 요청하는 것마다 다 만들어오고 새벽 밤을 지새우는 열정을 보여주신 찐 능력자 팀원분들 덕분에 정말 많은 동기부여가 됐다.

감사해요우!!   🙏 🙏

 

 

노션링크

깃헙링크

배포링크