클래스/└ 항해99

<WIL> 주특기(노드) 2주차 진행사항과 N+1 문제

디벅잉 2022. 4. 25. 20:03
728x90

 

🌊

 

 # 7주차 

진행사항

주특기 2-3주차에는 로그인을 포함한 매거진 웹의 API를 만들면서 시작합니다.

이 API를 바탕으로 테스트 코드, 타입스크립트 등을 적용해 나가는 방식으로 진행하고 있습니다.

1주차와 비교해서 큰 차이점은 JWT를 활용한 로그인 구현과 MySQL이라는 관계형 DB를 다루게 된 것입니다.

특히 MySQL을 접하는 것이 DB에 대한 사고를 확장하는데 도움이 많이 된 것 같습니다.

 

테스트 코드

Jest를 활용하여 테스트 코드를 작성하였습니다.

함수 단위의 유닛 테스트 부터 API를 검증하기 위한 통합 테스트까지 하나씩 작성해 가면서 감을 익힐 수 있었습니다.

 

레이지 로딩, 이거 로딩, N+1 문제 (숙제...?)

매거진 웹의 게시글을 로드하면서 댓글까지 한꺼번에 불러오는 쿼리를 작성하는 경우 이거 로딩이라고 합니다.

반면 게시글만 우선적으로 로드하고, 댓글은 나중에 필요할 때 다시 불러오는 경우 레이지 로딩이라고 합니다. 

레이지 로딩의 경우 N+1 문제가 발생합니다. 

게시글을 조회하기 위해 1번의 쿼리를 날리고, 게시글에 달린 댓글을 불러오기 위해 N개의 쿼리를 다시 날려야 하기 때문입니다.

데이터의 성격에 따라 필요한 방법을 선택적으로 사용할 필요가 있어 보입니다.

 

 FULL AHEAD 

 

728x90