[GQL] 사용 후기

바나나·2024년 12월 22일

GQL

목록 보기
1/3

기간이 얼마 안됬지만 GQL을 쓰고나서 개인적인 후기
spring 에서 DGS 사용

2개의 도메인에서 GQL을 사용해봤습니다.
1. 관리자 도메인
2. 커머스 도메인

결과만 얘기해보면 커머스에서는 좋은 경험이었습니다. 관리자에서는 좀 불편한 부분이 있었습니다.

장단

실무에서 사용하면서 느꼈던 점

장점

  • GQL 자체가 1번의 요청에 여러 정보를 사용할때 여러 정보를 가져올때 좋다. 예시로 상품 정보를 가져올때 리뷰, 판매자 정보, 상품 정보(금액, 할인, 쿠폰 등...) 처럼 여러 정보를 가져올때 한번의 요청으로 가져올 수 있다.
  • 이미 개발된 query가 있는 경우 편하다. 추가 개발이 필요 없이 프론트엔드에서 해당 쿼리만 추가해서 가져올 수 있다. (이게 제일 좋았음)
  • API 스팩이 편하다. GQL 스키마에 request, response 가 정의 되어 있어 명시적으로 확인 가능하다.

단점

최초 설정

기존에 설계된 서비스에 반영시에 최초에 설정할 query가 많다.

N+1

list 형태로 된 데이터를 가져올때 DB에 조인된 데이터의 경우 성능을 고려하며 개발할때 복잡도가 높아진다.

N+1 이슈 DGS-N+1 문서의 경우 1개의 대한 간단한 처리만 되어 있지만, 복잡도가 높아지고 1 row에 더 많은 join이 들어가는 경우 복잡도가 높아진다.

아래는 샘플 쿼리입니다.
이때 상품 정보가 100개 있다고 할때 totalSalesAmount, reviewCount, seller는 DataLoader를 활용해서 가져와야 합니다.
실제는 아래처럼 간단한 쿼리로 요청하지 않았고 여러 조건을 걸어서 요청을 합니다. 특정 기간에 추가된 상품 중에 특정 판매자 같은 조건이 붙는 경우 복잡도가 더 올라갑니다.

query GetProductList {
 getProductList {
   id
   name
   totalSalesAmount # 총 판매 금액
   reviewCount # 총 리뷰 수
   seller {
     id
     name
     contactInfo {
       email
       phone
     }
   }
 }
}

반반

  • 도메인 모델링이 필수적으로 되야한다. 도메인 분리되면서 좋은점도 있지만, 필수로 필요하다는 점에서 사용하는 사람마다 다를수 있다. (개인적으로 장점이라 생각)

기타

파일 업로드

profile
Java/Kotlin Spring 개발자 황재명입니다.

0개의 댓글