GraphQL

GraphQL이 탄생한 이유

GraphQL은 페이스북에서 마주한 문제를 해결하기 위해 탄생했습니다. 페이스북은 당시 데스크톱 환경을 대상으로 만들어진 서비스를 모바일 환경으로 옮기고자 하였고, 이 때 여러가지 문제가 발생했습니다.

필요한 데이터가 서로 조금 다르다

많은 데이터를 한 번에 제공할 수 있는 데스크톱 환경과는 다르게 제한된 화면에서 정보를 제공해야 하는 모바일 환경에서는 데스크톱 환경과는 다른 데이터가 필요했습니다. 기존에 만들어진 API 에서는 모바일에서 필요한 데이터보다 많은 양의 데이터를 보내주거나 때로는 부족한 데이터를 보내주기도 했습니다. 이는 제한된 전력을 사용하고 느린 네트워크를 가지고 있는 모바일 환경에서는 매우 치명적인 문제로 다가왔습니다. 많은 양의 데이터는 긴 로딩 시간을 필요로했고, 부족한 데이터는 여러 번의 요청이 필요했기 때문입니다. 또한 같은 모바일 환경이라도 안드로이드에서 필요한 데이터와 아이폰에서 필요한 데이터가 조금씩 다른 경우도 있었습니다.

필요한 데이터를 한 번에 정확하게 요청하기

페이스북은 이에 대한 해결책을 그래프에서 찾았습니다. 데이터 간의 관계를 그래프로 표현해 요청 수를 줄이고, 클라이언트가 정확히 필요한 데이터를 Graph Query Language 로 표현할 수 있도록 했습니다. API 사용자는 GraphQL 를 사용해 필요한 데이터를 정확히 요구하고 API 서버는 백엔드의 서비스와 커뮤니케이션해 적합한 데이터를 만들어 응답합니다.

query {
  user(login: "seheon99") {
    name
  }
}
{
  "data": {
    "user": {
      "name": "Seheon Yu"
    }
  }
}