본문 바로가기
개발/GraphQL , Apollo

GraphQL과 Apollo

by 안뇽! 2022. 2. 28.
반응형

https://d2.naver.com/helloworld/2838729

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

 

 

반응형