프로젝트 및 이슈 관리 서비스
| Links: GitHub
개요
개발기간 : 2022.01 ~ 2022.03
인원구성 : 개발자 2명, 디자이너 2명
사용기술 : Express, MongoDB, AWS, Git, Figma
기능 : 주요 프로젝트 생성하여 관리하기, 프로젝트 내부 게시글 등록, 리뷰 및 이슈 등록
수행업무
- 커뮤니티 CRUD기능을 수행하는 Express기반의 API 개발
- MongoDB 데이터베이스 설계 및 ERD 문서 작성
- SHA-256 해시 알고리즘을 활용한 비밀번호 암호화
- JWT를 사용한 로그인 상태 관리 및 자동로그인 기능 개발
- AWS S3를 활용하여 이미지 파일 저장
회고록
본 프로젝트를 수행하며, Mongoose를 이용한 데이터베이스 조회가 빈번하게 발생했습니다. API요청 한 번으로 3개 이상의 Collection을 조회하게 되는데 각각의 요청을 직렬방식이 아닌 Promise를 이용한 병렬처리 방식을 사용하여 서비스 Performance를 높였습니다. 이 과정에서 병렬구조에 관한 이해도를 높일 수 있었습니다.
MongoDB의 데이터 중복 검사를 최소화하기 위해 References구조로 데이버데이스를 설계하였습니다. 이러한 구조를 통해 데이터베이스 수정이 일어날 때 재귀적으로 수정하는 것이 아닌 하나의 Collection만 수정해도 무결성에 어긋나지 않을 수 있었습니다.
하지만, 개발을 진행하며 저장되는 데이터가 구조적이고 일관적이라는 점에서 NoSQL보다는 SQL이 서비스에 적합하다 생각했습니다. 개발일정을 맞추기 위해 SQL로의 전환은 시도하지 못했지만 처음부터 데이터베이스에 저장되는 정보들의 관계를 파악해 MongoDB가 아닌 MySQL을 사용했으면 어땠을까 하는 아쉬움이 남았습니다.