티스토리 뷰
반응형
✅ GraphQL과 REST의 차이점과 장단점 비교
최근 프론트엔드 개발에서는 REST API를 넘어 GraphQL이 주목받고 있습니다.
면접에서도 “REST와 GraphQL의 차이점은 무엇인가요?”, “언제 어떤 것을 선택해야 하나요?”와 같은 질문이 자주 등장합니다.
이번 글에서는 두 방식의 구조적 차이, 장단점, 그리고 실무 적용 기준까지 정리합니다.
📌 1. 기본 개념
✅ REST API란?
- 자원을 URL로 표현하고, **HTTP 메서드(GET, POST, PUT, DELETE)**를 통해 조작
- 각각의 endpoint는 고정된 응답 구조를 가짐
✅ GraphQL이란?
- 클라이언트가 필요한 데이터만 쿼리로 요청하는 데이터 질의 언어
- 하나의 endpoint(/graphql)에서 다양한 형태의 요청을 처리
📌 2. 요청 및 응답 방식 비교
항목 REST API GraphQL
Endpoint 수 | 여러 개 (/users, /posts) | 하나 (/graphql) |
응답 구조 | 고정 | 클라이언트가 지정 |
데이터 초과/부족 | Overfetch / Underfetch 발생 | 요청한 만큼만 수신 |
버전 관리 | URI 버전 (v1, v2 등) | 불필요, 타입 스키마 기반 |
전송 형식 | 주로 JSON | JSON |
✅ 예시: 사용자 이름과 게시글 제목 조회
🔹 REST 방식
GET /users/1
GET /users/1/posts
- 두 번의 요청 필요
- 응답에 불필요한 필드 포함될 수 있음
🔹 GraphQL 방식
반응형
query {
user(id: 1) {
name
posts {
title
}
}
}
- 한 번의 요청으로 필요한 필드만 조회
📌 3. REST와 GraphQL의 장단점
✅ REST의 장점
항목 설명
단순한 구조 | HTTP 메서드 기반으로 직관적 |
캐싱이 쉬움 | 각 요청은 URI로 구분되어 브라우저 캐시 활용 가능 |
학습 난이도 낮음 | 도구 없이 쉽게 테스트 가능 (Postman 등) |
❌ REST의 단점
- Overfetch / Underfetch 문제 발생
- 리소스 간 관계 조회가 불편
- endpoint가 많아지고 관리가 어려움
✅ GraphQL의 장점
항목 설명
필요한 데이터만 요청 가능 | 네트워크 비용 절감 |
단일 endpoint | 유지보수 간편 |
스키마 기반 개발 | 자동 문서화, 타입 안정성 |
빠른 개발 속도 | 클라이언트 주도 개발 가능 (frontend-first) |
❌ GraphQL의 단점
- 복잡한 캐싱 (endpoint가 하나이기 때문에 HTTP 캐싱 불리)
- N+1 문제 발생 가능 (연관된 데이터 반복 조회)
- 학습 곡선이 존재 (스키마 설계, Resolver 구성 등)
📌 4. 실무에서 겪은 사례
🧪 문제
모바일 앱에서 사용자와 사용자의 주문 정보를 함께 요청하려면
REST 기준으로 /user와 /orders를 두 번 요청해야 하며,
불필요한 데이터도 함께 내려와 성능 저하
✅ 해결
GraphQL 도입 후 다음과 같이 쿼리 작성:
query {
user(id: 1) {
name
orders {
id
status
}
}
}
- API 호출 1회로 모든 데이터 처리
- 네트워크 비용 20% 절감, 로딩 속도 향상
📌 5. 선택 기준: 언제 REST? 언제 GraphQL?
조건 추천 방식
단순한 CRUD API | REST |
SEO 중요 (정적 응답 필요) | REST |
다양한 데이터 조합 필요 | GraphQL |
프론트가 다양한 플랫폼에서 사용됨 | GraphQL |
빠른 프로토타입 개발 필요 | GraphQL |
📌 6. REST ↔ GraphQL 공존도 가능
- 백엔드는 REST 유지, 프론트는 GraphQL Gateway(API Gateway) 도입
- 기존 시스템에 부담 없이 도입할 수 있음
📌 면접에서 이렇게 답하세요
REST는 직관적이고 단순한 구조의 API 설계에 적합하며, 브라우저 캐싱이나 SEO에 유리합니다.
반면 GraphQL은 클라이언트가 필요한 데이터만 요청할 수 있어 네트워크 효율성과 유연성이 뛰어나며,
복잡한 데이터 조합이 필요한 프로젝트에 유리합니다.
실무에서는 REST와 GraphQL을 병행하며, 각 목적에 맞게 선택하여 API 구조를 설계합니다.
GraphQL,RESTAPI,API설계,데이터요청,프론트엔드면접,GraphQL장단점,RESTvsGraphQL,스키마기반API,Overfetch,프론트백엔드연동
'AI + Career' 카테고리의 다른 글
✅ RESTful API의 정의와 좋은 REST API 설계 원칙 (0) | 2025.05.20 |
---|---|
✅ 프론트엔드에서 JWT 토큰을 안전하게 관리하는 방법 (0) | 2025.05.19 |
✅ XSS(Cross Site Scripting)와 CSRF(Cross Site Request Forgery)의 개념과 방지 방법 (0) | 2025.05.14 |
✅ 프론트엔드 코드의 유지보수성과 확장성을 높이기 위한 설계 패턴 (0) | 2025.05.13 |
✅ E2E(End-to-End) 테스트의 필요성과 사용하는 도구 (0) | 2025.05.12 |
※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 파이썬 알고리즘
- Webpack
- llm
- App Router
- 웹개발
- AI챗봇
- fastapi
- 프론트엔드
- SEO최적화
- gatsbyjs
- Docker
- kotlin
- nextJS
- LangChain
- PostgreSQL
- github
- REACT
- 개발블로그
- Python
- NestJS
- rag
- CI/CD
- Prisma
- Next.js
- 프론트엔드면접
- seo 최적화 10개
- Ktor
- nodejs
- SEO 최적화
- 백엔드개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함
반응형