레거시 코드를 보다보니 루트 리졸버랑 필드 리졸버랑 뒤섞여서 예외 찾기가 힘든데, 데이터로...
# 질문
b
레거시 코드를 보다보니 루트 리졸버랑 필드 리졸버랑 뒤섞여서 예외 찾기가 힘든데, 데이터로더를 적극 활용해서(배치 뿐만 아니라 캐싱도 되니까) 최대한 필드 리졸버로 구현하는건 어떻게 생각하시나요? 문득 괜찮을 것 같다는 생각이 드네요 😃
t
루트 리졸버도 필드 리졸버에요 ㅎㅎ Query 타입의 필드 리졸버인거죠. 혹시 프레임워크 어떤거 사용하시나요?
😀 1
h
b
@Tony Won 아 그렇네요! 지금은 아폴로를 사용하고 있습니다. 단어를 잘못 사용했네요;; 쿼리를 처리할 때 제일 먼저 호출(탑 레벨)되는 리졸버에서 많은 필드를 처리하는것보다 더 잘게잘게 분리하자는 뜻이 였어요 ㅎㅎㅎ
@Hyeseong Kim 오 감사합니다! 역시 이미 있군요 😀
t
쿼리를 처리할 때 제일 먼저 호출(탑 레벨)되는 리졸버에서 많은 필드를 처리하는것보다 더 잘게잘게 분리하자는 뜻이 였어요
@bumkeyy 당연하게도 그게 맞습니다 ㅎㅎ 최상위 Query Resolver에서 JOIN을 해서 내려준다던지 하면 엔티티간의 의존성이 짬뽕되어버려서 구조적으로 안 좋아요. 나중에 엔티티 단위로 Key-value 캐시를 바를때도 힘들구요.
특정 모델(테이블)이 너무 커져서 별도의 Remote Service(HTTP, gRPC 서버)로 분리한달지, 다른 DB(NoSQL, Memcached, Redis)로 옮긴달지 하는 경우에 • 최상위 쿼리 리졸버에서 JOIN한 경우 • 각 필드 리졸버에서 DataLoader로 가져온 경우 어디가 더 유연한지 떠올려보시면 좋을 것 같습니다~
😀 1
혜성님이 올려주신 lazyloader도 좋네요 ㅋㅋ
b
더 나은 방향으로 가고 있는 것 같아 다행이네요 ㅎㅎ 감사합니다!