ADR‐005: 백엔드 스택 선택 이유 - Moadong/moadong GitHub Wiki
작성일: 2025-12-01 | 상태: Accepted
결정일자: 2025-02-02
[문제 상황 설명]
Java Spring를 사용한 이유는 명백했다.
- 백엔드 팀원들이 다들 익숙했던 프레임워크였다.
- 한국의 대표 백엔드 프레임워크였다.
하지만 DB를 선택하는데 큰 고민이 있었다. MongoDB vs Mysql 중에 고민을 하다가 결국 MongoDB를 다음과 같은 이유로 선택했다.
[선택한 해결책]
- 사용자의 요구가 불분명하기에 계속해서 스키마가 변동될 가능성이 높았다.
- 서비스 특성상 데이터를 조회하는 연산이 압도적으로 높을 것으로 판단했고 MongoDB는 최적화된 DB였다.
다른 대안들:
- ❌ Mysql: 스키마의 변동성이 큰 상황에선 적합하지 않았다.
이 결정으로 얻는 장점과 감수해야 할 단점
장점:
- [장점 1]: 스키마가 변동이 있어도 DB 관리에 수월했다.
- [장점 2]: MongoDB Atlas의 무료 플랜으로 편리하게 개발을 진행했다.
단점/트레이드오프:
- [단점 1]: 기존에 익숙하던 JPA의 Entity Validation 부분이 동작하지 않아서 dto 검증을 하는 등 여러 우회를 거쳤다.
- [단점 2]: 스키마의 변동에 유연하다는 것은 검증이 제대로 되지 않는다는 말이라 DB 무결성이 깨져서 원인을 찾는데 오래걸린 경우가 있었다. 이를 해결하기 위해 MongoDB 자체의 제약을 걸거나 1번에서 언급한 dto 검증 방식으로 우회를 해서 처리했다.
- [링크 또는 관련 문서]