{"repo":"mercari/grpc-federation","free":true,"listed":false,"github":"https://github.com/mercari/grpc-federation","clone":"git clone https://github.com/mercari/grpc-federation.git","description":"gRPC Federation generates a gRPC server by writing a custom option in Protocol Buffers","language":"Go","stars":384,"topics":["federation","go","golang","golang-library","grpc","protobuf","protocol-buffers","cel","wasm","webassembly"],"license":"MIT","category":"networking-infra","readme_excerpt":"gRPC Federation gRPC Federation auto-generates a BFF (Backend for Frontend) server, aggregating and returning results from microservices using the gRPC protocol, configured through Protocol Buffer options. Public Roadmap is here. Motivation Imagine a system with a backend of multiple microservices. Instead of the client directly communicating with each microservice, it's more efficient to use a dedicated service (BFF - Backend for Frontend) to aggregate information and send it back to the client. However, as the system grows, determining which team should handle the BFF service becomes unclear. This is where Federated Architecture, like GraphQL (Apollo) Federation, comes in. With GraphQL Federation, each microservice has its own GraphQL server, and the BFF focuses on aggregating resources. However, integrating a new GraphQL server into a large system is challenging, especially in systems developed with the gRPC protocol. To streamline, we're exploring the idea of automatically generating a BFF using the gRPC protocol with simple custom options. By leveraging existing Protocol Buffers schema for the BFF, we aim to keep using gRPC while drastically reducing maintenance costs. Why Choose gRPC Federation? 1. Reduce the Boilerplate Implementation Required to Create a BFF 1.1. Automate Type Conversions for the Same Message Across Different Packages Consider defining a BFF using a proto, assuming the BFF acts as a proxy calling multiple microservices and aggregating results. In this","default_branch":null,"files":null,"tree":[],"storefront":"/r/mercari","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/mercari/grpc-federation/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}