📖 2022년 5월 05일
✔️ 오늘 내가 한 일
- board router 수정
- 리팩토링
- 버그 Fix 🪲
💡 TIL ( Today I Learned )
1) DB
처음 프로젝트를 기획하면서 기술스택을 정할 때 지금의 MongoDB를 선택한 것은 익숙함이었다.
하지만 처음 데이터베이스를 선정할 때 고려해야할 우리 데이터의 특성에 대한 고민이 없었다.
비정형으로 수집해서 들어오는 데이터가 많고 한 테이블 내에 모든 데이터가 들어가 있는 경우는 NoSQL를 사용하는 것이 적합했을 것이다.
하지만 우리 데이터베이스는 다음과 같이 이미 8개의 테이블 (컬렉션)이 만들어졌다.
일단 우리 서비스의 메인 기능인 칵테일을 보여주는 파트에서도 '좋아요'와 같은 기능이 붙기 시작하면서 끝없이 populate 되었다.
또한 게시글 기능에서는 정합성 유지를 위해서 Board-Comment-User의 정보가 복잡하게 얽히게 되었고 속도적인 측면에서 오히려 NoSQL의 장점을 활용하지 못하고 있다는 생각이 들었다.
또한 NoSQL을 사용하는 의미가 있나 고민을 했다.
populate는 RDBMS의 Join과 개념이 달라 임의로 연결을 하기 때문에 NoSQL의 샤딩과 같은 개념을 생각하면 좋지 못한 선택이다.
일단 선택한 DB에서 최대한 성능을 올리자!
초반에는 무작정 find()로 찾아와서 다 뿌려주는 형식을 진행했는데 지난 일주일 동안은 데이터 전체를 랜더링하면서 생기는 네트워크 지연을 개선하기 위해 많은 고민을 했다.
그리고 pagination을 구현해서 성능을 개선했다.
이번 경험을 통해 DB를 구축할 때 우리 서비스는 어떤 데이터를 주로 다룰 것인지 고민해야겠다는 것을 깨달았다.
💁♀️ 오늘 느낀 점
Database를 좀 더 공부해야겠다는 생각이 들었고 이번 서비스에 검색 기능을 넣었는데 백엔드에서 구현하기 몹시 까다로웠다.
우리는 이미 Docker 환경에서 배포를 하고 있기 때문에 프로젝트가 끝나고 시간이 된다면 Elastic Search도 공부해보고 싶다.
📌 내일 할 일(계획)
- 리팩토링
- 발표자료 준비
'프로젝트 회고 > 저쪽 손님께서 보내신 겁니다. 🍸' 카테고리의 다른 글
[칵테일 웹 서비스 프로젝트] 15일 차 회고 (0) | 2022.05.08 |
---|---|
[칵테일 웹 서비스 프로젝트] 14일 차 회고 (0) | 2022.05.06 |
[칵테일 웹 서비스 프로젝트] 12일 차 회고 (0) | 2022.05.04 |
[칵테일 웹 서비스 프로젝트] 11일 차 회고 (0) | 2022.05.03 |
댓글