서버와 클라이언트가 서로 다른 언어로 작성되어도 함수를 호출하듯 데이터를 주고받을 수 있게 하는 통신 도구
서버와 클라이언트가 서로 다른 언어로 작성되어 있어도 마치 같은 프로그램 안에서 함수를 호출하듯 데이터를 주고받을 수 있습니다. gRPC는 이러한 원격 절차 호출을 위한 프레임워크로, 복잡한 네트워크 통신 과정을 투명하게 처리해 줍니다. 덕분에 개발자는 네트워크의 세부 사항에 신경 쓰지 않고, 애플리케이션 로직에만 집중할 수 있습니다.
공유된 C++ 코어와 다국어 지원
이 저장소는 C++로 작성된 공유 코어 라이브러리 위에 여러 언어의 구현을 얹어 놓은 구조입니다. C++, Python, Ruby, PHP, C#, Objective-C 등의 라이브러리는 이 저장소 안에 포함되어 있으며, Java, Go, Node.js, Dart 등은 별도의 저장소에서 관리됩니다. 각 언어의 라이브러리는 개발 단계가 다를 수 있으므로, 사용할 언어에 맞는 최신 상태와 문서를 확인하는 것이 좋습니다. 모든 구현은 동일한 C++ 코어를 기반으로 하므로, 언어 간 일관된 동작을 기대할 수 있습니다.
언어별 설치 방법
gRPC는 각 언어의 표준 패키지 관리자를 통해 쉽게 설치할 수 있습니다.
- Python pip 패키지 관리자를 통해 grpcio 패키지를 설치합니다.
- Node.js npm을 이용해 @grpc/grpc-js 패키지를 설치합니다.
- Go go get 명령으로 google.golang.org/grpc 모듈을 가져옵니다.
- C#/.NET NuGet에서 Grpc.Net.Client와 Grpc.AspNetCore.Server 패키지를 추가합니다.
개발 기여와 문제 해결
gRPC는 오픈소스 프로젝트로, 기여를 환영합니다. 소스 코드 빌드 방법, 테스트 실행 절차, 변경 사항 제출 과정은 'How to contribute' 문서에 자세히 설명되어 있습니다. C++ 빌드 관련 세부 사항은 'Building from source' 문서를 참고하면 됩니다. 사용 중 문제가 발생하면 Troubleshooting 가이드를 확인해 보세요. 또한, master 브랜치의 최신 빌드 성능 수치는 Performance dashboard에서 매일 업데이트되는 그래프로 확인할 수 있습니다.
사용 전 확인 사항
이 저장소는 C++ 코어를 기반으로 하지만, 각 언어 라이브러리의 성숙도는 다를 수 있습니다. 특정 언어의 라이브러리가 아직 개발 중이거나 제한적인 기능을 제공할 수 있으므로, 프로젝트에 적용하기 전에 해당 언어의 문서와 예제 코드를 반드시 검토해야 합니다. 성능 요구 사항이 높은 시스템이라면, 최신 빌드의 성능 대시보드를 참고하여 자신의 사용 사례에 적합한지 판단해야 합니다.