-
Notifications
You must be signed in to change notification settings - Fork 1
ORM를 사용한 이유
Jeong Se Ho edited this page Dec 14, 2023
·
2 revisions
6주간 빠르게 프로젝트를 완성하기 위해서 생산성을 높일 필요가 있고 많은 객체와 연관관계가 존재할 것이기 때문에 ORM이 적합하다고 생각함.
- ORM 사용 (TypeORM)
ORM을 사용하지 않고 SQL 쿼리를 직접 작성할 경우 데이터의 column명을 모두 기록하여야 하고, 실수로 속성을 누락할 경우 에러가 발생하기 때문에 코드 작성 과정에서 이와 관련한 디버깅에 시간을 많이 사용하게 되는 문제점이 있었다. 이번 프로젝트에서는 코드 레벨의 로직에 더 집중할 수 있는 환경을 조성하고자 ORM을 사용하였고, Nest와의 호환성이 좋은 TypeORM을 선택하였다. 또한 이번 프로젝트는 SNS기반 프로그램이기에 사용자와 다른 객체들(게시물, 댓글, 팔로우)등과 연관 관계가 많이 존재하고, 업데이트마다 연결된 테이블들이 모두 동기화되어야 하기에 ORM의 cascading 기능을 효율적으로 사용할 수 있을 것이라 생각하였다.
다만 ORM의 경우 쿼리를 자세하게 확인할 수 없고, 복잡한 쿼리를 처리하는데 적합하지 않다는 단점이 있지만, 이번 프로젝트에서는 디버깅에 큰 문제가 되거나 ORM으로 처리하기 힘들 만큼의 복잡한 쿼리를 사용하지 않을 것으로 예상되어 trade-off를 고려했을 때 ORM을 사용하는 것이 효율적일 것이라 판단하였다.
- ORM은 동작 과정에 대한 세부적인 처리와 디버깅이 쉽지 않기 때문에 초기에 설계하는데 많은 노력이 필요할 것이라 생각됨.
- DB 선택 과정
- TypeORM 선택 이유
- Docker 선택 이유
- Github Action 선택 이유
- DB서버와 서비스 서버를 분리한 이유
- 자동완성을 위한 Trie 구조를 제거하고, naver cloud search로 대체한 이유
- 11월 07일 (화) - 프로젝트 설명
- 11월 16일 (목) - 프로젝트 진행하면서 생긴 고민
- 11월 21일 (화) - 멘토분들 피드백
- 11월 28일 (화) - 트러블 슈팅 피드백
- 12월 05일 (화) - 기술적 도전에 대한 고민
- 12월 12일 (화) - 최종 발표 피드백