2019.11.11 부터 2019.12.07 4주간 진행했던 프로젝트 쌉가능에 대한 회고
소개
- 쌉가능은 대학 캠퍼스내 생활 심부름을 매칭해주는 앱 플랫폼이다.
- 2020년 3월 개강시기에 맞춰 MVP모델 출시를 목표로 진행한 프로젝트이다.
- 총 4명의 인원으로 프론트3, 백엔드1 로 진행하였다.
프로젝트에 대한 소개는 notion페이지에 자세하게 나와 있기 때문에 링크를 공유합니다.
https://www.notion.so/TITI-with-2LUCK-6f1814abcf9a423387190cf339e0a54b
왜 나는 이 프로젝트를 선택하였는가?
- 개발자로서 실제 출시를 목표로 하는 프로젝트를 진행하고 싶었다.
- 이전에 진행했던 2주 프로젝트를 기반으로 더욱 완성도 있는 백엔드 서버를 구축하고 싶었다.
- Node.js - Express - MySQL - RDBMS를 통한 데이터 CRUD 과정을 숙달하고 이해하고 싶었다.
스택
첫번째 목표, AWS S3, EC2, RDS를 활용하여 REST API를 구축하는 것
두번째 목표, 프런트에서 원하는 데이터에 대한 사전 예측을 통한 DB Schema 구현
난 두번째 목표를 위해 더욱 매진했던 것 같다.
프런트의 화면을 구현하는 그 과정이 매우 힘들고 까다로울 것이라고 예상했고, 그로 인한 스트레스로도 4주 프로젝트가 힘들것이라고 예상했다.
그리고 불확실한 데이터로 인한 백엔드와의 마찰을 발생시키고 싶지 않았다.
그래서 과하게 오버-커뮤니케이션 한 경향이 있었다.
- AWS EC2 - Node.js - Express 기반 서버 구현, 배포
- AWS RDS - MySQL - Sequelize 를 활용한 RDBMS 구현
- AWS S3 - Multer - MulterS3 를 활용한 image 데이터 저장
- REST API 구축
- Nodemailer 통한 사용자 메일 인증 구현
- React-Native Expo 를 통한 실시간 알림 제공
과정
- 실제로 데이터 CRUD를 하는 과정에서 어려웠던 점은 없었다.
- 이전에 Node.js - Express - MySQL을 통해서 서버를 구축했던 경험이 있었기 때문에 쉽게 진행할 수 있었다.
- REST API 를 구현하고 싶었다.
- REST API에 대한 이해도가 높지는 않다. 하지만 앞으로 누군가가 보게 될 내 코드가 읽을 수 있다면, 그리고 쉽게 느껴질 수 있다면 하는 바램을 항상 가지고 코드 작성에 임했다.
- 내 코드가 쉽게 읽혀질 것이라고는 생각하지 않으나, MVC 패턴에 맞게 설계를 하였다고 생각한다.
- 그리고 코드의 양이 길어지는 경우 그 안에서도 폴더를 생성해서 각 역할에 맞게 분기했다.
- 채팅은 결국 서버를 통하지 않았다.
- 처음에는 Socket.io를 통해 채팅을 구현하고 싶었지만, 구글의 Firebase의 도움을 받아 채팅을 구현하게 되었다.
- Firebase 까지 서버에서 관리할 필요가 없다는 팀의 판단하에
- 서버 - 유저간 채팅방 개설까지만 관여한다.
- 클라이언트 - 개설된 채팅방의 id값을 바탕으로 구글 firebase에 데이터를 저장하고 실시간 채팅을 구현한다.
- 1:1 채팅 기능만 구현이 되어있어서 현재 어플에서의 채팅 기능이 정상적으로 작동하는 것 처럼 보이나
- 분명히 문제는 있다.
- 서버에서 채팅에 대한 관여를 아예하지 않던가, 서버에서 구글 Firebase에 대한 관리까지 했어야 한다는 생각이 들었다.
- 시간이 촉박했고, 서버에서 관리를 하기 위한 리스크가 크다고 판단하여서, 클라이언트에게 채팅 구현을 넘겼다.
- 과연 Serverless가 무조건적으로 좋은것인가? 에 대한 해답은 아직 찾지 못했으므로, 공부해서 Firebase를 비롯한 Serverless에 대해 이해하고싶다.
DB Schema
결과
MVP 출시를 위한 기본적인 CRUD를 완성했다.
(아래는 프로젝트에 대한 소개영상으로 9분 정도의 시간이 소요된다.)
소개영상 - https://www.youtube.com/watch?v=zjM7Z7uHwLM&feature=youtu.be&t=3283
4주간 진행한 프로젝트의 결과물이며,
백엔드 개발자로 완성한 2번째 결과물이다.
GitHub - https://github.com/Dankimhaejun/Brum-server
회고
이번 프로젝트에서 나는 항상 만족만 있었나?
아니다.
Q.
왜 나는 더 적극적으로 새로운 기술을 받아들이지 않았을까?
A.
왜냐하면 혼자서 백엔드를 맡았어야 했고, 이번 프로젝트의 가장 큰 목표는 MVP출시를 위한 기능 구현이었다.
내가 가장 중요하게 생각했던 부분은
실제 기능 구현 > 새로운 기술 스택 학습
이었고, 실제 기능을 4주안에 모두 구현하기 위해서 기존에 익숙한 스택을 활용했다.
그래서 아쉬웠다. 조금 더 과감했더라면!!
당장의 기능이 구현되지 않더라도, 그걸 두려워하지 않았더라면!!
끝나고 나니 과감하지 못했던 내 자신에 대해 뒤 돌아보게 된다.
처음이라서 무서웠고, 처음이라서 많이 헤맸다.
잘 할 수 있을까라는 두려움에 시작도 못할뻔했다.
하지만 난 시작했다.
앞으로도 수많은 모르는 것 앞에서 두려워하지 않겠다.
시간을 가지고 마음의 여유를 가지고 계속 보겠다. 앞으로 나아가겠다.
나는 더 발전해나갈 것이다.
진행한 프로젝트에 대해 이런 식으로 되돌아보는 것 정말 좋은 것 같습니다.
제가 본받아야 할 부분이 많이 보이네요 포스트 잘 봤습니다!