thumbnail
백엔드에서의 API 통신 선택
Web / Server
2025.08.29.

📌 백엔드 (Backend)

REST vs GraphQL vs gRPC

언제 어떤 방식을 선택해야 하는가


1. 서론: API 통신의 진화

백엔드와 프론트엔드, 혹은 서비스 간의 통신을 위해 가장 중요한 요소는 API 설계 방식입니다.
오늘날 대표적으로 사용되는 방식은 다음 세 가지입니다.

  • REST (Representational State Transfer)
  • GraphQL
  • gRPC (Google Remote Procedure Call)

각각은 다른 철학과 설계 원칙을 가지고 있으며, 서비스 규모와 요구사항에 따라 적합성이 달라집니다.


2. REST (Representational State Transfer)

개념

  • 2000년대 초반부터 널리 사용된 아키텍처 스타일
  • **리소스(자원)**를 중심으로 한 설계 (/users, /posts/:id 등)
  • HTTP 메서드(GET, POST, PUT, DELETE)를 활용

장점

  • 단순하고 직관적 → 학습 비용이 낮음
  • HTTP 표준 기반 → 인프라 친화적
  • 캐싱, 로깅, 보안 등 다양한 에코시스템 지원

단점

  • Over-fetching: 필요 없는 데이터까지 불필요하게 가져옴
  • Under-fetching: 원하는 데이터를 얻기 위해 여러 번 호출 필요
  • 대규모 API 스펙 관리 어려움

사용 사례

  • CRUD 기반 서비스 (게시판, 전자상거래)
  • 빠른 프로토타이핑 및 범용 API

3. GraphQL

개념

  • 2015년 Facebook에서 공개
  • 클라이언트가 필요한 데이터 구조를 직접 정의해서 요청 가능
  • 단일 엔드포인트(/graphql)에서 다양한 쿼리 처리

장점

  • Over-fetching / Under-fetching 문제 해결
  • 스키마 기반 → 강력한 타입 시스템 제공
  • API 문서화 및 개발자 경험(DX) 향상 (GraphiQL, Playground)

단점

  • 서버 구현 복잡도 증가
  • 캐싱이 어렵고, N+1 쿼리 문제 발생 가능
  • 단순한 API에는 오히려 과한 선택

사용 사례

  • 복잡한 UI를 가진 프론트엔드 (대시보드, SNS)
  • 다양한 클라이언트(Web, iOS, Android)에서 동일 API 활용

4. gRPC (Google Remote Procedure Call)

개념

  • Google에서 개발한 고성능 RPC 프레임워크
  • Protocol Buffers (protobuf) 기반 직렬화 사용
  • HTTP/2 기반 → 멀티플렉싱, 스트리밍 지원

장점

  • 빠른 직렬화/역직렬화 → 성능 우수
  • 양방향 스트리밍 가능 → 실시간 서비스에 적합
  • 명확한 인터페이스 정의(IDL) → 타입 안정성 보장

단점

  • 디버깅 및 테스트 도구 부족 (REST만큼 친숙하지 않음)
  • 브라우저 직접 지원 제한 (프록시 필요)
  • 초기 학습 및 인프라 설정 부담

사용 사례

  • 마이크로서비스 간 통신
  • 실시간 스트리밍 서비스 (채팅, IoT, 게임)
  • 대규모 트래픽이 요구되는 백엔드 시스템

5. 비교 정리


구분 REST GraphQL gRPC


철학 리소스 기반 클라이언트 주도 쿼리 함수 호출 기반

전송 HTTP/1.1 HTTP/1.1 (대부분) HTTP/2 + Protobuf 프로토콜

성능 보통 보통~좋음 매우 우수

학습 낮음 중간 높음 난이도

캐싱 용이 어려움 상대적으로 어려움

적합 사례 범용 API, 간단한 복잡한 UI, 다양한 마이크로서비스, CRUD 클라이언트 지원 실시간 스트리밍


6. 선택 기준 (Best Practice)

  1. REST
    • 소규모 프로젝트, 단순 CRUD, 빠른 개발이 필요한 경우\
    • 캐싱 및 HTTP 친화성이 중요한 경우
  2. GraphQL
    • 다양한 클라이언트에서 세밀한 데이터 제어가 필요한 경우\
    • 복잡한 UI/대시보드, 모바일 최적화가 필요한 경우
  3. gRPC
    • 마이크로서비스 아키텍처, 내부 서비스 간 통신\
    • 대규모 트래픽, 낮은 지연시간이 중요한 경우\
    • 실시간 스트리밍 서비스(채팅, IoT, 게임)

7. 심화 관점: 전문가 토론 포인트

  • 보안
    • REST/GraphQL: OAuth 2.0, JWT와 친화적\
    • gRPC: TLS 기반 보안은 기본이지만 세션 기반 인증은 직접 구현 필요
  • 모니터링 및 운영
    • REST는 성숙한 툴이 많음 (APM, 로깅, API Gateway)\
    • GraphQL은 Observability가 상대적으로 미흡 → Federation 필요\
    • gRPC는 분산 트레이싱(Jaeger, OpenTelemetry)과 잘 어울림
  • 아키텍처 트렌드
    • 단일 서비스 → REST 권장\
    • 대규모 프론트엔드/모바일 지원 → GraphQL 권장\
    • 마이크로서비스/실시간 처리 → gRPC 권장

8. 결론

API 설계에는 정답이 없습니다.
서비스의 성격, 팀의 역량, 운영 환경에 따라 최적의 선택이 달라집니다.

  • 빠른 개발과 범용성: REST
  • 클라이언트 친화적 데이터 제어: GraphQL
  • 고성능·실시간·마이크로서비스: gRPC

👉 결국 중요한 것은 **기술 자체보다 “문제를 해결하는 적합성”**입니다.


Thank You for Visiting My Blog, Have a Good Day 🌿

© 2024 Developer LIM.