본문 바로가기
ASAC

[ASAC 06] GraphQL

by suhsein 2024. 8. 27.
728x90

이 글은 ASAC 06기를 수강하며 강의 자료 참고 및 추가 자료 수집을 통해 작성된 글입니다.

GraphQL

REST API 작성 시 다음과 같은 문제점들에 처할 수 있다.

  1. 데이터에 따른 API 작성예를 들어 유저 정보에는 사용자 이름, 아이디, 주소, 전화번호 등을 포함 할 수 있으나, 어떤 클라이언트는 사용자 이름만(simple)을 필요로 할 수 있고 또 다른 클라이언트는 모든 유저 정보(detail)를 필요로 할 수 있다.
  2. 클라이언트마다 관심사가 다르기 때문에, 100명의 클라이언트에게는 100개의 관심사가 존재하게 된다.
    그리고 백엔드 개발자는 클라이언트의 관심사에 따라서 각기 다른 100가지 API를 작성해야 할 지도 모른다.
  3. 데이터는 simple과 detail로 나뉠 수 있다.
  4. 메서드에 따른 API 작성그렇다면 백엔드 개발자는 4(컨트롤러) * 5(메서드) = 총 20개의 API를 작성해야 한다.
  5. 만약 4개 서비스가 있다면 서비스마다 컨트롤러를 만들어야 하므로, 4개 컨트롤러가 필요하다. 
    그리고 각각의 컨트롤러에서 메서드마다 API를 만들어야 한다면, GET, POST, PUT, PATCH, DELETE 총 5개의 API를 컨트롤러마다 만들어야 한다.

이렇게 하나의 서비스에 대해서 수십, 수백개의 REST API를 작성하는 것은 상당히 비효율적인 일이다.

 

REST API는 어떤 데이터를 반환할 지에 맞추어 백엔드 개발자가 설계했었지만, GraphQL(Graph Query Language)는 어떤 데이터를 반환할지 백엔드 개발자가 결정하지 않는다.

 

클라이언트가 관심사에 따라서 쿼리를 하면 그에 따라서 반환되는 API가 결정된다.

728x90

'ASAC' 카테고리의 다른 글

[ASAC 06] SEO, 웹 페이지 성능 Core Web Vital  (1) 2024.08.27
[ASAC 06] 네트워크, DNS  (0) 2024.08.27
[ASAC 06] MSA와 API Gateway  (0) 2024.08.27
[ASAC 06] REST API  (0) 2024.08.27
[ASAC 06] 웹  (0) 2024.08.27