💻데브노트소개
🗄️

REST vs GraphQL: 무엇을 언제 선택할까

데브노트 편집팀·2026.07.10·6분 읽기
X(트위터)
ADVERTISEMENT

"요즘 GraphQL이 좋다던데 무조건 써야 하나?" 아닙니다. 둘은 해결하는 문제가 다릅니다.

REST의 한계: 오버페칭·언더페칭

REST는 엔드포인트마다 정해진 데이터를 줍니다. 그래서 화면이 필요로 하는 양과 어긋납니다.

  • 오버페칭: 이름만 필요한데 사용자 전체 객체가 옴
  • 언더페칭: 화면 하나에 /user, /posts, /comments 여러 번 호출
GET /users/1          -> 필요 없는 필드까지 전부
GET /users/1/posts    -> 추가 요청
GET /users/1/comments -> 또 추가 요청 (N+1 요청)

GraphQL: 필요한 것만 한 번에

클라이언트가 원하는 필드를 명시해 한 번의 요청으로 받습니다.

query {
  user(id: 1) {
    name
    posts { title }
    comments { text }
  }
}

딱 필요한 데이터만, 한 번의 라운드트립으로 받습니다. 모바일처럼 네트워크가 중요한 환경에서 강점입니다.

트레이드오프 비교

항목RESTGraphQL
데이터 양 조절고정클라이언트가 선택
요청 횟수여러 번한 번
HTTP 캐싱쉬움(URL 기반)어려움(POST 단일 엔드포인트)
러닝커브낮음높음(스키마·리졸버)
파일 업로드·단순 CRUD편함번거로움

선택 기준

  • REST가 낫다: 단순 CRUD, 공개 API, 강한 HTTP 캐싱이 필요할 때
  • GraphQL이 낫다: 화면마다 데이터 모양이 제각각, 여러 소스를 합쳐야 할 때, 모바일·복잡한 UI

마무리 체크리스트

  • 문제는 '유행'이 아니라 오버/언더페칭이 실제로 아픈가
  • 캐싱이 중요하면 REST의 URL 캐싱이 강력
  • 복잡한 관계형 데이터·다양한 클라이언트면 GraphQL
  • 둘을 혼용(핵심은 GraphQL, 파일·결제는 REST)해도 좋다

도구가 아니라 문제에 맞춰 고르세요.

#REST#GraphQL#API#백엔드
X(트위터)
ADVERTISEMENT