[GraphQL] Apollo란?

koline·2023년 11월 14일
0

GraphQL

목록 보기
2/8

Apollo


Apollo는 대표적인 GraphQL의 라이브러리 중 하나로 GraphQL을 사용한다면 거의 필수적으로 사용하게 된다. 공식 문서에서는 슈퍼그래프라고 소개되는데, 여기서 슈퍼그래프란 조직의 데이터와 서비스의 통합 네트워크를 구축하기 위한 개발자 플랫폼으로, 모두 단일 분산 GraphQL API 로 구성할 수 있는 라이브러리라는 뜻이다. 즉 새로운 API 서버를 구축 하든, 기존 API를 쿼리하든, 전체 조직을 슈퍼 그래프로 이동하든 상관없이 Apollo가 제공하는 도구를 이용해 GraphQL과 상호 작용할 수 있다.

다른 선택지로 GraphQL을 개발한 Facebook에서 직접 만든 Relay가 있지만, 학습 비용이 높고 React 계열만 지원한다는 단점이 있는 반면, 그에 반해 Apollo는 유연하고 러닝 커브가 높지 않을뿐더러 훨씬 폭넓은 Front-End 프레임워크들을 지원한다.




전역 상태 관리


Apollo의 가장 큰 장점으로 거론되는 것중 하나가 전역 상태관리를 지원함으로써 무려 Redux를 대체할 수 있다는 것이다. 특히 Apollo는 server-side 라이브러리인 apollo-server와 client-side 라이브러리인 apollo-client를 연동하여 사용하기 때문에 양 단의 데이터를 병합할 수 있다는 뜻이다.

공식문서의 설명에 따르면 apollo-client의 InMemoryCache 기능을 사용해 각기 다른 컴포넌트들이 caching 된 쿼리 결과를 함께 참조함으로써 전역상태관리가 가능해진다.

이 방법외에 다른 방법도 소개되는데 apollo-server와 유사한 방식으로 local resolver를 정의하는 방식이 있는데 이는 곧 core module에서 제외될 예정이라고 한다. 그 외에도 Reactive variables를 사용하는 방식도 있다. useReactiveVar hook을 사용하는 방식인데, apollo-client에서 자동으로 변화를 탐지하여 전역에 변경된 value를 뿌려주는 방식이다. 당연히 Apollo Client cache에는 저장은 안된다. 물론 Redux를 사용하는 등 Apollo의 캐싱을 통한 상태 관리 외에 다른 방법을 사용하는 것도 더 효율적일 수 있고 GraphQL에 익숙하지 않다면 러닝커브도 줄일 수 있겠지만, 특별한 이유가 있는게 아닌 이상 Apollo를 쓰려면 Apollo가 의도한 방식으로 쓰는게 좋다고 생각한다.

profile
개발공부를해보자

0개의 댓글

관련 채용 정보