[Apollo] Apollo란 무엇인가?
(글쓴날 : 2020.04.24)
* 이 글은 Apollo에 대한 단순 소개 글입니다.
Apollo란?
1) Apollo 소개
Apollo란 GraphQL의 클라이언트 라이브러리 중 하나로 GraphQL을 사용한다면 거의 필수적으로 사용하는 상태 관리 플랫폼입니다.
다른 선택지로 GraphQL을 개발한 Facebook에서 직접 만든 Relay가 있지만, 학습 비용이 높고 React 계열만 지원한다는 단점이 있으며, 그에 반해 Apollo는 유연하고 러닝 커브가 높지 않을뿐더러 Front-End 프레임워크 삼대장?인 React, Agular, Vue를 동시 지원한다는 점에서 인기가 높은 것 같습니다.
* GraphQL에 관해 궁금하시다면 ☞ [GraphQL] GraphQL이란 무엇인가?
특히, 뷰에서 React를 쓸 경우 조합이 금상첨화가 되는데, 그 악명 높은 Redux를 Apollo로 대체가 가능해집니다.
(GraphQL과 Apollo를 쓰면, REST API와 Redux를 없애버릴 수 있습니다...)
또한, Apollo 자체는 플랫폼에 종속적이지 않으므로 앞으로 GraphQL과 함께 웹 및 모바일 시장을 장악하겠다는 당찬 야망을 가지고 있습니다.
* All your data, managed in one place
* Apollo를 사용 중인 기업 (신생 기술인 만큼 기존 서비스들의 플랫폼 이전을 장려하는 상황인 것 같습니다.)
2) Apollo 특징
제가 직접 사용해보며 공감한 Apollo의 특징은 다음과 같습니다.
(1) Query 및 Mutation 직접 전송
단순해 보이지만, 이는 클라이언트를 이용하는 주요 이유 중 하나이자, 엄청난 파급효과를 일으킵니다.
Query 및 Mutation을 Apollo에서 전송함으로써 얻는 이점은 바로, API 서버에서 데이터를 가져오기 위해 번거로운 네트워크단의 HTTP 요청을 신경 쓸 필요가 없어진다는 것입니다.
좀 더 직설적으로 말하면, fetch 혹은 axios를 사용할 필요가 없다는 뜻입니다! (FormData() Good BYE!! 와우~.~)
(2) 전송받은 데이터 캐싱
Apollo는 Query를 통해 전송받은 데이터를 자동으로 캐싱 합니다.
그에 따라, 클라이언트의 반복 요청을 줄여 서버 부하를 줄일 수 있을 뿐만 아니라, 서비스를 이용하는 사람들에게 더 나은 사용자 경험을 제공할 수 있습니다.
또한, 크롬 브라우저에서 Apollo Client Developer Tools 익스텐션을 설치하면, 개발 환경에서 캐시 상태와 정보를 즉시 확인이 가능하므로 무척 편리합니다.
* Apollo Client Developer Tools
(3) Local state 관리
Apollo를 사용하면, GraphQL 서버에 Query, Mutation, Resolver를 작성하듯이, 동일하게 클라이언트에서도 클라이언트 만의 Local state를 만들어 Query, Mutation, Resolver의 사용이 가능합니다.
이는 서버에서 받아온 데이터와 클라이언트에서 관리하는 데이터를 병합할 수 있음을 의미하며, 이를 이용해 효율적인 프로그래밍과 데이터 관리가 가능해집니다.
단, GraphQL 서버에 지정되어 있는 type 중에서 필드를 생성해야만 하며, 클라이언트에서 생성한 Local state는 서버에 전송되지 않아야 하므로 @client 키워드를 사용해 제어해야 합니다.
여기까지, GraphQL의 짝꿍 Apollo에 대하여 알아보았습니다.
저도 어서 빨리 Apollo를 숙달하여 GraphQL을 보다 능숙하게 다룰 수 있도록 해야겠습니다.
Apollo의 경우 공식 문서가 매우 잘 되어 있으므로 공부해보고 싶으시다면...
* Apollo 공식 홈페이지 : Apollo 공식 홈페이지
위의 Apollo 공식 홈페이지를 참조하시면 되겠습니다.
감사합니다!
'Deprecated' 카테고리의 다른 글
[Baekjoon Online Judge] 백준 1927번 최소 힙(C++, Python) (0) | 2020.04.25 |
---|---|
[Baekjoon Online Judge] 백준 11279번 최대 힙(C++, Python) (0) | 2020.04.25 |
[Baekjoon Online Judge] 백준 2631번 줄세우기(C++, Python) (0) | 2020.04.24 |
[Baekjoon Online Judge] 백준 1915번 가장 큰 정사각형(C++, Python) (0) | 2020.04.24 |
[Baekjoon Online Judge] 백준 1937번 욕심쟁이 판다(C++, Python) (0) | 2020.04.23 |