GraphQL 개념

이건선·2023년 5월 29일

알아볼것

목록 보기
3/13

탄생 배경

GraphQL은 페이스북이 2012년에 개발하고 2015년에 공개 소스화한 데이터 쿼리 및 조작 언어입니다. GraphQL은 API를 통해 데이터를 조회하고 조작하는 방식을 제공하며, 이를 통해 클라이언트는 필요한 데이터만 정확하게 요청하고 받을 수 있습니다.


특징

  1. 구조: GraphQL은 타입 시스템을 기반으로합니다. 즉, 데이터를 요청할 때 데이터의 형식과 구조를 정의합니다. 타입은 스칼라 타입 (String, Int, Boolean 등) 또는 개발자가 정의한 커스텀 타입일 수 있습니다.

  2. 쿼리와 뮤테이션: GraphQL은 데이터를 조회하거나 변경하는 데 사용되는 두 가지 주요 연산을 가지고 있습니다. "쿼리(Query)"는 데이터를 읽기 위해 사용되며, "뮤테이션(Mutation)"은 데이터를 변경하기 위해 사용됩니다.

  3. 스키마와 리졸버: 스키마(Schema)는 API에서 사용할 수 있는 타입과 연산을 정의합니다. 리졸버(Resolver)는 실제 데이터를 어떻게 가져올지, 즉 쿼리나 뮤테이션 요청이 어떻게 처리될지 정의합니다.

  4. 장점: GraphQL의 주요 장점은 클라이언트가 필요한 정확한 데이터를 얻을 수 있으며, 이를 통해 오버페칭(Over-fetching) 및 언더페칭(Under-fetching) 문제를 방지할 수 있다는 것입니다. 또한 강력한 타입 시스템을 통해 API 문서화를 자동화하고 타입 안정성을 제공합니다.

  5. 단점: 비록 GraphQL이 많은 장점을 가지고 있지만, 복잡한 쿼리가 성능 문제를 일으킬 수 있으며, 전통적인 REST API에 비해 학습 곡선이 높을 수 있다는 단점이 있습니다. 또한, 캐싱 구현이 HTTP 기반 REST API보다 복잡할 수 있습니다.

  6. 라이브러리 및 프레임워크: GraphQL은 다양한 언어와 플랫폼에서 사용할 수 있으며, 자바스크립트, 파이썬, 루비, 자바, C#, PHP 등 다양한 언어에 대한 라이브러리와 프레임워크가 존재합니다. 가장 널리 사용되는 JavaScript 라이브러리는 Apollo와 Relay입니다.


GraphQL은 전통적인 REST API와 달리 하나의 엔드포인트(URL)만 필요로 합니다. 클라이언트는 그 엔드포인트에 쿼리를 보내 데이터를 요청합니다.

예를 들어, REST API에서는 사용자 정보, 게시물, 댓글 등 각각의 정보를 받기 위해 다른 URL(예: /users, /posts, /comments 등)에 요청을 보내야 합니다. 반면에, GraphQL에서는 하나의 엔드포인트에 대해 쿼리를 보내면 서버가 쿼리에 정의된 정보를 모두 가져와 응답으로 반환합니다.

이런 특징은 API의 디자인과 관리를 더 간결하게 만들며, 클라이언트와 서버 간의 통신 효율성을 향상시킬 수 있습니다. 하지만 반대로 이는 모든 요청을 하나의 엔드포인트에서 처리해야 하므로 서버 측에서는 쿼리의 복잡성을 관리하고 최적화하는 데 주의를 기울여야 합니다.

profile
멋지게 기록하자

0개의 댓글