웹의 대중화와 표준화 필요성 속에서 Roy Fielding은 2000년 REST 아키텍처를 제안했습니다. REST는 클라이언트-서버 패턴 기반의 네트워크 애플리케이션에 최적화되어 있으며, 느슨한 결합, 텍스트 기반 통신, 상태 비저장, 표준화된 HTTP 오퍼레이션, URI를 통한 리소스 식별을 특징으로 합니다.
2016년 Google이 공개한 gRPC는 HTTP/2와 프로토콜 버퍼(Protocol Buffers)를 활용하는 오픈소스 원격 프로시저 호출(RPC) 시스템입니다. gRPC는 인증, 양방향 데이터 전송, 크로스 플랫폼 코드 생성 등 다양한 기능을 제공하며, 주로 마이크로서비스 및 모바일/웹 백엔드 통신에 활용됩니다. 핵심은 프로토콜 버퍼를 통해 서비스와 메시지 구조를 언어 중립적으로 정의하고 이진 형식으로 데이터를 직렬화하는 것입니다. gRPC는 단일 요청-응답 외에 서버/클라이언트/양방향 스트리밍 통신 방식을 지원합니다.
발표자는 Ruby 환경에서 gRPC 구현 과정을 시연하며, .proto
파일 정의를 통한 코드 자동 생성과 이를 활용한 서버 및 클라이언트 구축의 간결함을 보여주었습니다. 원격 호출이 로컬 메서드처럼 느껴지게 합니다.
gRPC의 주요 장점은 다음과 같습니다. 첫째, 프로토콜 버퍼의 deprecated
및 reserved
키워드를 활용하여 API 버전 관리가 용이하고 하위 호환성 유지가 쉽습니다. 둘째, HTTP/2와 프로토콜 버퍼의 효율적인 이진 직렬화 덕분에 REST API보다 7~10배 빠른 성능을 제공합니다.
반면, gRPC의 단점으로는 구현 복잡성이 꼽힙니다. Ruby 개발자에게는 REST API에 비해 학습 곡선이 높고, 이진 메시지 특성상 디버깅이 더 어렵습니다.
gRPC는 모든 시나리오에 적합한 것은 아니며, 특정 상황에서 강점을 발휘합니다. 빠른 개념 증명(PoC) 개발, 다국어 환경 시스템 연동, 마이크로서비스 아키텍처, 내부 시스템 간 고성능 통신, 저대역폭 네트워크(예: IoT) 환경에 특히 유용합니다. 새로운 기술 도입 시 ‘Innovation Token’ 개념을 활용하여 신중하게 접근할 것을 권장했습니다.