시스템 아키텍트풀스택 아키텍트

내부 및 외부 소비자 통합을 위한 API 구축의 아키텍처 접근 방식을 설명하십시오: 언제 REST, gRPC 또는 GraphQL을 사용해야 합니까?

Hintsage AI 어시스턴트로 면접 통과

답변.

API 아키텍처 스타일의 선택은 소비자의 유형, 데이터 양, 인터페이스 개발 속도 요구 사항 및 확장성에 따라 다릅니다.

  • REST는 사용의 간편함, 캐싱, 라우팅의 유연성이 필요할 때 공개 API에 잘 어울립니다.
  • gRPC는 높은 성능, 엄격한 타입화 및 양방향 데이터 스트리밍이 필요한 경우(예: 데이터 센터 내 마이크로서비스용) 사용됩니다.
  • GraphQL은 소비자가 얻는 데이터의 구성 및 구조를 유연하게 선택할 수 있어야 하는 풍부한 엔터티 계층 구조의 API에 적합합니다.

REST 컨트롤러 예시 (Node.js/Express):

app.get('/api/users/:id', function(req, res) { // ... res.json(user); });

gRPC 서비스 정의 예시 (protobuf):

service UserService { rpc GetUser (UserRequest) returns (UserResponse); }

GraphQL 요청 예시:

query { user(id: "123") { id name posts { title } } }

주요 특징:

  • REST: 표준화된 HTTP 메서드, 확장성의 용이성, 느슨한 타입화.
  • gRPC: 스키마의 엄격성, 높은 성능, 스트리밍 지원, 내부 서비스에 적합.
  • GraphQL: 필요한 데이터만 요청, 요청 수 감소, 인증 및 캐싱 구현의 복잡성.

함정 질문들.

GraphQL을 모든 기업 API에 사용할 수 있습니까?

항상 그런 것은 아닙니다! GraphQL은 복잡한 집계 데이터에 좋지만, 간단한 CRUD 인터페이스나 높은 부하가 있을 경우 REST가 대개 더 쉽고 효율적입니다.

gRPC는 모바일/웹 클라이언트에 적합합니까?

보통은 그렇지 않습니다, gRPC는 HTTP/2 지원이 필요하고 특별한 프록시 없이 브라우저와 통합되지 않기 때문에 프론트엔드에서는 드물게 사용됩니다.

REST API는 항상 다른 것들보다 버전 관리를 쉽게 합니까?

필수는 아닙니다. GraphQL의 버전 관리는 스키마 수준에서 해결되며, REST는 보통 URI나 헤더 변경을 통해 이루어지므로 복잡한 데이터 스키마의 진화에는 항상 편리하지 않습니다.