어제 끝난 것 같은데 벌써 일주일이나 됐네,, 잊어버리기 전에 얼른 회고해야징
1차는 프로젝트의 전반적인 구조가 정해져있었고(주제, 기본 MODEL) 각 팀별로 좀 더 색다른 기능을 추가하는 형식이었다면
2차는 이제 너희가 알아서 해라!! 방식으로 진행이 되었다.
(1차는 2주, 2차는 3주 동안 진행)
큰 주제는 「데이터 분석 웹 서비스 with Kaggle」 였는데
요 "데이터 분석" 이라는 단어가 굉장히 다양하게 해석되어서 애를 먹었었다.
데이터를 분석하는 서비스?
데이터를 분석해서 그 결과를 근거로 서비스를 제공?
어쨌든,
우리는 kaggle 데이터를 분석하여 우리 서비스의 근거로 사용하자!
이렇게 결정했고
kaggle의 literacy, GDP, Education Statistics 자료를 활용하여
문해력 트레이닝 서비스, 문해한 하루 를 만들게 되었다.
호기롭게 주제를 정했으나
기능을 추리고, 와이어프레임을 제작하고 DB 스키마 및 API를 설계하는데 정말 3주를 다썼다. 마지막 주까지 스키마랑 API를 고칠 줄은 몰랐는데 ,,
서비스에서 제공할 크고 작은 기능을 정하는 것부터 화면 설계까지 하려니 일주일은 턱없이 모자랐고, 진행하면서 꾸준히 수정을 했고, 정말 정신이 없었다.
개발팀마다 기획이 왜 있는지 이번에 몸소 체험했다.
3차엔 기획 파트 팀원이 계시겠지요? ㅠㅠ
프로젝트 하면서 가장 피곤하게 했던 바로 API..
RESTful에 대해 정확히 알지 못한 상태에서 endpoint를 나름의 규칙대로 작성하기 시작했는데 그 규칙이 너무 내맘대로였을까? 마지막 주에 코치님의 코드 리뷰를 통해 endpoint를 모조리 수정하게 되었다.
덕분에 RESTful의 느낌을 살짝 맛보긴 했지만 프론트파트 팀원들에게 미안했다. ㅠㅠ
API 문서도 기존에 노션으로 관리를 하다가 마지막 주에 Swagger
로 옮겼는데
10개 정도의 MVP 별 라우터를 Yaml
파일에 모조리 작성하면서
아, API 문서 정리는 그때 그때 하자
라고 수 백번 생각했던 것 같다. ㅎㅎ
프로젝트 스택은 React
, express
, MongoDB
가 메인이었는데
백엔드 파트의 주된 이슈는 이 MongoDB
에서 일어났다.
신에게는
virtual schema
와populate
가 남아있습니다.
굳이 왜 NoSQL을 쓰는지 이해가 안 갈 정도로 Document끼리 관계 설정을 해서 사용했던 것 같다.
1차에는 기능이 엄청 많지 않은 프로젝트여서 MongoDB 좋은데?! 하면서 썼었는데, 기능이 조금 더 많아지니 아주 골치 아팠다.
이렇게밖에 쓰지 못하는 나의 문제이지만 NoSQL,, 너무 어렵다.
문법도 문법이고, 다양한 기능을 custom하기에 지식이 너무 짧아 오류 핸들링이나 기능 추가시 시간을 좀 잡아 먹었던 것 같다.
배포는 docker
로 했고, 다른 백엔드 팀원께서 맡아서 해주셔서 옆에서 구경만 했지만.. 옆에서 보는 것도 어렵고 그냥 어려움.
그치만 배포하시면서도 docker
에 대해 친절하게 설명해주시고 엘리스에서 제공해 준 docker
강의도 있기 때문에! 이 부분은 계속 공부해보려고 한다.
populate를 줄이고, 처리 속도를 높이는 쪽으로 고민을 많이 해봤으나 막바지에 다다르니 구현에 초점이 맞춰져서 효율은 조금 포기했다.
그래도 쓸데없는 동기적 로직을 Promise.all
로 많이 개선했고
어떻게 하면 좋을지에 대한 고민을 한 것만으로도 나름.. 개발에 대한 나의 마음가짐의 발전이라고 생각한다.
서비스에서 제공하는 기능같은 경우 백엔드 혼자서 오롯이 해낼 수 있는 건 없다. 프론트에서 같이 작업을 해줘야하기 때문에 서비스에서 제공하는 기능 외에 어떤 부분을 더 개선할 수 있을지 고민을 많이 했다.
물론 라이브러리와 구글의 많은 개발자님들이 다 해주었지만 winston
과 morgan
을 이용해 운영 중 발생할 이슈에 대비해 로그를 찍도록 구현을 해봤다. 실제 운영하는 서비스에선 로그가 굉장히 중요한 데이터라고 하니 작은 프로젝트에서도 로그를 찍는건 꼭 포함할 예정이다.
Redis
를 사용해보고 싶었고 Redis
를 사용하면 데이터가 캐싱이 되어있는 경우 응답 속도가 훨씬 빠르다고 해서 프로젝트에 적용해보고 싶었으나 Redis
를 적용할만한 기능이 딱히 없어서 사용을 하진 않았다. (우리가 제공하는 기능에서는 웬만한건 DB도 빠를거라고 하셨음)Redis
는 다음 프로젝트때는 꼭 사용해보려고 한다.elastic search
같은 경우는 이미 한번 해본적이 있지만 ..올해도 역시나(앞으로 당분간) 나의 모토는 "도전" 이었기에
겁없이 팀장을 자처했으나 팀에 크게 도움이 되었는지는 잘 모르겠다.
팀원 개개인의 역량이 출중하셨으나 그런 팀원들을 잘 받쳐주지 못한 것 같고
여러 상황에 대해 팀장으로써 올바르게 대처하지 못한 것 같아 개인적으로 아쉬움이 많이 남는 프로젝트였다.
그렇지만 부족한 만큼 배운 것도 많기 때문에 다음엔 더 좋은 모습으로 프로젝트에 임할 수 있을 거라고 믿는다. 😂
회고 끝!