피드로 돌아가기
Dev.toBackend
원문 읽기
REST, GraphQL, WebSockets, Webhooks의 통신 패턴 차이를 코드와 함께 구체적인 적용 시나리오와 함께 설명한다
REST vs GraphQL vs WebSockets vs Webhooks: A Real-World Decision Guide (With Code)
AI 요약
Context
REST, GraphQL, WebSockets, Webhooks를 동일한 통신 패턴으로 오해하는 경우가 많다. 각 기술은 서로 다른 계층에서 동작하며, 잘못된 선택은 시스템 설계의 근본적 문제를 야기한다.
Technical Solution
- async/await는 통신 패턴이 아니라 I/O 대기 중 다른 요청을 처리하는 방법이다
- REST는 클라이언트가 요청을 시작하고 데이터 변화가 사용자 refresh 주기보다 느린 경우 적합하다
- GraphQL은 모바일, 웹 등 다양한 클라이언트가 다른 형태의 데이터를 필요로 할 때 사용한다
- WebSocket은 사용자가 페이지를 refresh하지 않고 실시간 업데이트가 필요한 경우 적합하다
- Webhook은 외부 서비스가 백엔드에 이벤트를 알릴 때 사용한다
Impact
event loop blocking을 방지하면 500개의 동시 요청이 각각 40ms 대기 중에도 서로를 차단하지 않는다
Key Takeaway
FastAPI에서 I/O가 포함된 모든 함수에는 async def를 사용해야 한다
실천 포인트
웹 애플리케이션에서 클라이언트가 요청 시 마다 데이터를 조회하는 환경에서는 REST를, 다양한 클라이언트가 서로 다른 데이터 형태를 필요로 할 때에는 GraphQL을, 실시간 업데이트가 필요한 경우 WebSocket을 적용하면 각각의 통신 요구사항에 맞는 최적의 해결책을 구현할 수 있다