# apollo
###### tags: `tech sharing`
## 참고 링크
1. [GraphQL 과 Apollo를 사용해보며 중간 정리](https://medium.com/@han7096/graphql-%EA%B3%BC-apollo%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4%EB%B3%B4%EB%A9%B0-%EC%A4%91%EA%B0%84-%EC%A0%95%EB%A6%AC-42981522b188)
2. [Apollo란 무엇인가?](https://hellominchan.tistory.com/227)
3. [React, Apollo, GraphQL](http://blog.illunex.com/react-apollo-graphql/)
4. [Apollo, graphQL 알아보기](https://medium.com/humanscape-tech/apollo-graphql-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0-1eab47c7b1d7)
5. [I Migrated Away from Apollo Client to Vercel SWR and Prisma graphql-request...and You Can Too!](https://dev.to/aryanjnyc/i-migrated-away-from-apollo-client-to-vercel-swr-and-prisma-graphql-request-and-you-can-too-245b)
6. [Next.js에서 ApolloClient 사용하기](https://chanyeong.com/blog/post/2)
## 장점
1. data underfetching, overfetching 문제가 해결된다.
2. schema와 resolver를 만들어놓으면 api를 추가로 만들 필요가 없다?
3. loading, error, success 처리가 간편하다.
4. playground gui에서 테스트가 가능하다.
5. query를 날려 데이터를 가져오면 cache가 된다.
6. apollo가 redux를 대체할 수 있다?
7. 백엔드와 프론트엔드 모두에서 graphQL 명세대로 사용할 수 있다.
8. 설정이 쉽다
9. 다양한 기능 제공
## 단점
1. cache가 되어있는 데이터가 아닌 서버의 업데이트 된 데이터를 가져오기 위해서는 추가적인 작업이 필요하다.
- 캐시에 있는 데이터에 직접적으로 mutation이 끝난 데이터를 추가해서 동기화 시킨다.
- mutation이 끝난 후 다시 쿼리를 불러온다.
2. apollo client와 next.js를 함께 사용하는데 어려움이 있다?