-
system-design-101. REST API vs. GraphQL📖 개발 공부 2024. 6. 9. 20:01
REST API vs. GraphQL
REST
- Uses standard HTTP methods like GET, POST, PUT, DELETE for CRUD operations.
CRUD 작업에 GET, POST, PUT, DELETE와 같은 표준 HTTP 메서드를 사용. - Works well when you need simple, uniform interfaces between separate services/applications.
별도의 서비스/애플리케이션 간에 간단하고 통일된 인터페이스가 필요할 때 잘 작동함. - Caching strategies are straightforward to implement.
구현이 간단한 캐싱 전략. - The downside is it may require multiple roundtrips to assemble related data from separate endpoints.
관련 데이터를 수집하기 위해 별도의 엔드포인트에서 여러 번의 왕복이 필요할 수 있다는 단점이 존재.
GraphQL
- Provides a single endpoint for clients to query for precisely the data they need.
클라이언트가 필요한 데이터를 정확하게 쿼리할 수 있는 단일 엔드포인트 제공. - Clients specify the exact fields required in nested queries, and the server returns optimized payloads containing just those fields.
클라이언트는 중첩 쿼리에 필요한 정확한 필드를 지정하고 서버는 해당 필드만 포함하는 최적화된 페이로드를 반환. - Supports Mutations for modifying data and Subscriptions for real-time notifications.
데이터 수정 및 실시간 알림 구독을 위한 mutation 지원. - Great for aggregating data from multiple sources and works well with rapidly evolving frontend requirements.
여러 소스의 데이터를 집계하는 데 적합하며 빠르게 변화하는 프론트엔드 요구사항에 잘 맞음. - However, it shifts complexity to the client side and can allow abusive queries if not properly safeguarded.
복잡성이 클라이언트 측으로 이동하고 적절하게 보호되지 않으면 악의적인 쿼리가 허용될 가능성이 있음. - Caching strategies can be more complicated than REST.
캐시 전략이 REST보다 더 복잡해질 수 있음.
GRPC 성능
gRPC 메시지는 효율적인 이진 메시지 형식인 Protobuf를 사용하여 직렬화된다. Protobuf는 서버와 클라이언트에서 매우 빠르게 직렬화한다. Protobuf serialization은 작은 메시지 페이로드를 발생시키며 이는 모바일 앱과 같은 제한된 대역폭 시나리오에서 중요하다.
gRPC는 HTTP 1.x에 비해 상당한 성능 이점을 제공하는, HTTP의 주요 개정판인 HTTP/2용으로 설계되었다.- 이진 프레이밍 및 압축. HTTP/2 프로토콜은 간단하며, 보내고 받을 때 모두 효율적이다.
- 단일 TCP 연결보다 여러 HTTP/2 호출의 멀티플렉싱. 멀티플렉싱은 HOL(Head of Line) 차단을 제거한다.
GraphQL은 복잡하거나 자주 변경되는 프론트엔드 요구 사항에 적합한 반면, REST는 간단하고 일관된 계약이 선호되는 애플리케이션에 적합하다.
참고
반응형'📖 개발 공부' 카테고리의 다른 글
system-design-101. CAP 이론 (CAP theorem) (2) 2024.07.14 system-design-101. How to improve API performance? (0) 2024.06.22 Netflix의 BFF에서 GraphQL Federation으로 전환기 (0) 2024.04.14 유데미(Udemy) - Java 멀티스레딩, 병행성 및 성능 최적화 강의 후기 (0) 2024.03.31 JPA N+1 문제 해결 일지 - 답은 JPQL에 있었다. (0) 2024.03.03 - Uses standard HTTP methods like GET, POST, PUT, DELETE for CRUD operations.