GraphQL

이정훈·2024년 9월 27일

GraphQL

목록 보기
2/13

GraphQL이란

GraphQL은 쿼리 언어이면서 API를 위한 런타임입니다.
여기서 API를 위한 런타임이라고 하였는데 GraphQL은 쿼리 언어를 처리하는 기능도 포함하기 때문입니다.

GraphQL은 웹 서비스의 API를 만들거나 사용하기 위해 사용됩니다.

GraphQL을 이용하면 클라이언트는 API를 통해 원하는 정보를 예상할 수 있는 형태로 정확히 요청할 수 있습니다.
또한 Rest API와 비교했을 때 더욱 효율적이고 유연한 데이터 요청이 가능합니다.

GraphQL에서는 클라이언트가 쿼리를 서버로 보내 데이터의 구조를 정의할 수 있습니다.
서버는 해당 쿼리 요청 사항대로 데이터 포맷을 만들어 보내줍니다.

GraphQL은 무엇을 해결하는가?

GraphQL은 다음과 같이 공통적으로 API를 만들때 발생하는 문제를 해결합니다.

  • Over-fetching
    REST API는 클라이언트가 원하는 정보보다 많은 정보를 받게 만듭니다.
    이것은 대역폭을 낭비하게 만들고 성능도 낮추게 됩니다.
    GraphQL는 클라이언트가 필요로 하는 특정 데이터만 가져갈 수 있게 만들어주기 때문에 이러한 문제를 해결해 줍니다.

  • under-fetching
    REST API에서는 클라이언트가 자주 여러개의 요청을 서로 다른 엔드포인트에 보내서 필요한 정보를 모을 필요가 있습니다.
    이는 결과적으로 추가적인 지연율과 복잡성을 가지게 만듭니다.
    GraphQL은 클라이언트가 단 하나의 요청으로 필요한 모든 정보를 가져오게 만들어 줍니다.

  • Inefficient versioning
    REST API에서는 각 API 버전에 따라 새로운 엔드포인트를 만들어야 했습니다. 이는 API를 무겁게 만들고 유지보수 하기 힘들게 만들었습니다.
    GraphQL은 새로운 필드와 타입만을 추가하여 시스템의 버전 변경이 매끄럽고 부드럽게 이루어집니다.

  • Lack of flexibility
    REST API는 고정되어 있는 경우가 많습니다. 이 말은 클라이언트가 API를 통해 제공되는 데이터 구조로만 작업을 해야한다는 것입니다.
    GraphQL은 클라이언트가 정확이 필요로 하는 정보를 요청하면서 예측 가능한 형태로 데이터를 받을 수 있습니다.

  • Microservice Communicating
    마이크로서비스 간의 데이터 통합에 있어서 큰 장점이 있습니다.
    GraphQL Federation이나 Supergraph는 여러 마이크로서비스의 데이터를 하나의 GraphQL API로 통합하여 제공할 수 있는 방식입니다.
    이를 통해 GraphQL은 단 한번의 쿼리로 여러 마이크로서비스들에 쿼리할 수 있습니다.

Thinking in Graphs

Thinking in Graphs는 GraphQl을 이용할 때의 마인드 셋이나 접근법을 의미합니다.
이는 GraphQL의 형식으로 데이터를 이루고 쿼리하는 것을 말합니다.

GraphQL에서 데이터는 graph로 표현됩니다.
그래프에서 노드는 객체를 표현하고 간선은 노드 간의 관계를 표현합니다.
이 그래프를 통해 GraphQL은 유연하고 직관적인 데이터 쿼리를 제공합니다.

profile
기록으로 흔적을 남깁니다.

0개의 댓글