Apollo+GraphQL의 조합은 Rest, Redux의 단점을 해소하는 조합이다.
GraphQL로 인해 프론트엔드, 백엔드 개발자의 업무 독립성 향상 -> 생산성 향상
우선 GraphQL을 사용함으로 axios를 사용할 필요가 없어진다. 이는 서버에게 '이거 만들어주세요, 저거 만들어주세요' 할 필요가 없어지는 것을 뜻한다.
프론트엔드 개발자가 서버의 컨트롤러를 죄다 파악하고 있는 상황이 아니라면 서버요청이 필요할때마다 서버 코드를 살펴봐야 하는데,
graphQL은 하나의 엔드포인트에서 클라이언트가 원하는 데이터를 뽑아올 수 있는 시스템이라 프론트엔드 개발자의 생산성을 향상시켜준다.
RestAPI 사용시 발생하는 Over,UnderFetching 해소
RestAPI를 사용하다보면 하나의 데이터를 가져오기 위해 불필요한 데이터들도 응답받아야 할 때가 있다.
때로는 모바일,PC환경에 따라 필요한 데이터도 다를 수 있다.
이 과정에서 조건의 분기, 불필요한 데이터 삭제 로직 등 추가 리소스가 요구된다.
GraphQL은 이런 단점을 해소할 수 있다. GraphQL은 Query Language이다.
앞서 이야기 했듯이, 서버에서 하나의 엔드포인트를 뜷어놓으면 클라이언트에서는 매번 필요에 따라, 원하는 데이터만을 원하는 구조로 가져 올 수 있다. ( 서버가 선언한 스키마의 하위 필드에 한해서 )
Apollo로 데이터 캐싱
Apollo는 Query를 통해 전송받은 데이터를 자동 캐싱한다.
이를 통해 서버 부하를 감소시킬 뿐 아니라, 유저에게 더 나은 사용자 경험을 제공할 수 있다.
Apollo 전역 상태 관리
리덕스의 경우 전역 상태 하나 만드는데 action, dispatch, useSelector 등 작성해야 할 코드들이 많다. (불필요한 액션, 리듀서도 생겨난다.)
반면 apollo는 Redux보다 훨씬 적은 리소스로 전역 상태를 만들 수 있다.
참고
https://hellominchan.tistory.com/227
https://d2.naver.com/helloworld/2838729
'개발 > GraphQL , Apollo' 카테고리의 다른 글
useQuery, useLazyQuery와 의존성 (0) | 2022.03.26 |
---|---|
Apollo useMutation - Refetching queries (0) | 2022.03.05 |
apollo에서 Error: Unexpected token < in JSON at position 0 (0) | 2022.02.28 |
Express, graphql로 서버생성 (0) | 2022.02.27 |
Apollo 를 이용한 상태관리 (0) | 2022.02.12 |