본문 바로가기

ComputerScience/Network

[Network] REST API vs GRAPHQL

REST API vs GRAPHQL

이미지 출처: https://github.com/ByteByteGoHq/system-design-101?tab=readme-ov-file#rest-api-vs-graphql

 

REST와 GraphQL은 둘 다 데이터를 노출하고 현대적인 응용 프로그램을 구동하는 데 사용되는 두 가지 API 접근 방식입니다. 그러나 각각은 특정 상황에서 더 적합한 선택일 수 있습니다.

REST

  • CRUD 작업에 대해 GET, POST, PUT, DELETE와 같은 표준 HTTP 메서드를 사용합니다.
  • 별도의 서비스 또는 응용 프로그램 간에 간단하고 일관된 인터페이스가 필요한 경우에 잘 작동합니다.
  • 캐싱 전략은 구현하기가 간단합니다.
  • 하지만 관련된 데이터를 별도의 엔드포인트에서 가져오기 위해 여러 Round-Trip이 필요할 수 있습니다.

GraphQL

  • 클라이언트가 필요한 정확한 데이터를 쿼리하기 위한 단일 엔드포인트를 제공합니다.
  • 클라이언트는 중첩된 쿼리에서 필요한 정확한 필드를 지정하고, 서버는 해당 필드만 포함된 최적화된 페이로드를 반환합니다.
  • 데이터 수정을 위한 변이 및 실시간 알림을 위한 구독을 지원합니다.
  • 여러 소스에서 데이터를 집계하는 데 용이하며, 빠르게 변화하는 프론트엔드 요구 사항과 잘 작동합니다.
  • 그러나 복잡성을 클라이언트 측으로 이동시키고, 적절한 방어 수단이 없으면 남용 가능성이 있습니다.
  • 캐싱 전략은 REST보다 더 복잡할 수 있습니다.

이미지 출처 :  https://blog.apollographql.com/graphql-vs-rest-5d425123e34b

위 사진은 REST는 별도의 엔드 포인트를 사용하며, GraphQL은 단일 엔드포인트를 사용하는 차이를 보여줍니다.

 


두 접근 방식 중 어떤 것이 더 나은 선택인지는 응용 프로그램 및 개발 팀의 특정 요구 사항에 따라 다릅니다. 

GraphQL은 복잡하거나 빈번하게 변경되는 프론트엔드 요구 사항에 적합하며, REST는 간단하고 일관된 계약이 선호되는 응용 프로그램에 적합합니다.

어느 한 API 방식이 모든 상황에 완벽한 해결책은 아닙니다. 요구 사항과 Trade-off를 신중하게 평가하여 올바른 스타일을 선택하는 것이 중요합니다. 

참고 자료

https://github.com/ByteByteGoHq/system-design-101?tab=readme-ov-file#rest-api-vs-graphql

 

GitHub - ByteByteGoHq/system-design-101: Explain complex systems using visuals and simple terms. Help you prepare for system des

Explain complex systems using visuals and simple terms. Help you prepare for system design interviews. - GitHub - ByteByteGoHq/system-design-101: Explain complex systems using visuals and simple te...

github.com