메모
2023. 12. 8.
N+1 발생을 쉽게 파악할 수 없을까?
들어가며... 진지한 글씨체로 글을 시작해 보자. 얼마 전 나는 "서버 성능 병목은 어디서 발생할까?" 라는 글을 작성한 적이 있다. 그리고 1차 부하 테스트에서 엄청난 성능을 검증한 바가 있는데, 이때까지 나는 단순히 "데이터베이스 리전이 해외고, 서버 자원이 부족해서 그런가 보다." 하고 넘어갔다. 그리고 앱을 사용하면서도 초반 로딩 속도가 조금 느린 것이 단순히 서버 자원이 부족하구나 생각했는데, 오늘 개발하면서 쿼리 로그를 보던 중 N+1이 발생하는 것을 발견했다. 무엇이 문제였는가? Arggregation root가 포함하는 데이터는 풍부한 것이 좋겠지?! 처음 개발을 하면서 코드 컨벤션을 정할 때, 몇 가지 정한 규칙이 있었다. 도메인 객체는 서비스 외부로 퍼지지 않는다. 서비스는 서비스끼리 ..