From b978d84962060726b08ae6a87d7453c1f6463b03 Mon Sep 17 00:00:00 2001 From: FITAHIANA Nomeniavo joe <24nomeniavo@gmail.com> Date: Fri, 8 Nov 2024 11:24:24 +0300 Subject: [PATCH] docs: grpc annoucement blog (#872) - - #### Migration notes ... - [ ] The change comes with new or modified tests - [ ] Hard-to-understand functions have explanatory comments - [ ] End-user documentation is updated to reflect the change --- .../GrpcMetatype.drawio.png | Bin 0 -> 22574 bytes .../index.mdx | 110 ++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 docs/metatype.dev/blog/2024-09-26-introducing-grpc-runtime/GrpcMetatype.drawio.png create mode 100644 docs/metatype.dev/blog/2024-09-26-introducing-grpc-runtime/index.mdx diff --git a/docs/metatype.dev/blog/2024-09-26-introducing-grpc-runtime/GrpcMetatype.drawio.png b/docs/metatype.dev/blog/2024-09-26-introducing-grpc-runtime/GrpcMetatype.drawio.png new file mode 100644 index 0000000000000000000000000000000000000000..d62e1b535dd9be6ad8c1715994d7d47e7c5e4f23 GIT binary patch literal 22574 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 literal 0 HcmV?d00001 diff --git a/docs/metatype.dev/blog/2024-09-26-introducing-grpc-runtime/index.mdx b/docs/metatype.dev/blog/2024-09-26-introducing-grpc-runtime/index.mdx new file mode 100644 index 000000000..b5773abc5 --- /dev/null +++ b/docs/metatype.dev/blog/2024-09-26-introducing-grpc-runtime/index.mdx @@ -0,0 +1,110 @@ +# Introducing gRPC Runtime + +We're excited to announce the new gRPC Runtime feature in Metatype, further enhancing our platform's ability to create versatile and powerful backends through typegraphs. + +## What is gRPC? + +gRPC, or **g**oogle **R**emote **P**rocedure **C**all, is a high-performance, open-source communication framework initially developed by Google. It enables **efficient and fast communication between microservices** in a distributed system, making it ideal for modern backend architectures. + +Unlike traditional HTTP APIs that use JSON, gRPC relies on **Protocol Buffers** (protobufs) for serializing data, which are more compact and faster to process. This approach allows gRPC to support high-throughput, low-latency communication, which is crucial for applications where speed and efficiency matter, such as in real-time data processing or large-scale distributed systems. + +Key benefits of gRPC include: +- **Cross-language support**: gRPC supports multiple programming languages, allowing services written in different languages to communicate seamlessly. +- **Strong type safety**: Protocol Buffers ensure type-safe communication, catching errors early and improving reliability. +- **Bidirectional streaming**: gRPC allows for client and server streaming, enabling continuous data transfer in both directions, ideal for applications like real-time analytics. + +In short, gRPC is well-suited for high-performance, scalable backend systems where speed and type safety are essential. + +## Why gRPC Matters for Metatype + +Metatype is a platform that enables developers to create **typegraphs**—strongly-typed, composable backend structures that can support multiple protocols and runtime environments. With the introduction of the gRPC Runtime, Metatype allows developers to incorporate gRPC services into these typegraphs, further enhancing the platform’s versatility. + +By integrating gRPC, Metatype empowers developers to: +- **Expose gRPC services via GraphQL or HTTP endpoints**, making them accessible to clients in a way that best suits their needs. +- **Compose gRPC services with other backend components**, such as databases or other APIs, to create powerful and cohesive backend systems. + +## Diagram: gRPC and Metatype Integration + +
+ ![gRPC and Metatype Integration Diagram](./GrpcMetatype.drawio.png) +
+ + +*Metatype’s gRPC Runtime allows developers to integrate gRPC services into their typegraphs, enabling seamless interaction with gRPC services in the backend.* + +## Introducing gRPC Runtime in Metatype + +The new gRPC Runtime is the latest addition to Metatype's suite of runtimes, joining existing options like the HTTP runtime. This expansion allows you to incorporate gRPC services into your typegraphs, further enhancing the versatility of your Metatype-powered backends. + +## Key Technical Details + +### Architecture +The gRPC Runtime integrates seamlessly with Metatype's existing architecture. It acts as a bridge between your typegraph and external gRPC services, allowing you to incorporate gRPC calls alongside other runtime operations in your backend logic. + +1. **GrpcRuntime Class**: The main interface for defining gRPC interactions within your typegraph. +2. **proto_file**: Path to the .proto file that defines the gRPC service. +3. **endpoint**: The gRPC server address in the format `tcp://:`. +4. **call method**: Creates a typegraph function for gRPC method calls. + +### Implementation + +Here's how the gRPC Runtime fits into a Metatype typegraph: + +```python +from typegraph import Graph, Policy, typegraph +from typegraph.graph.params import Cors +from typegraph.runtimes.grpc import GrpcRuntime + +@typegraph( + cors=Cors(allow_origin=["https://metatype.dev", "http://localhost:3000"]), +) +def create_grpc_typegraph(g: Graph): + # The GrpcRuntime acts as a bridge between your typegraph and external gRPC services + grpc_runtime = GrpcRuntime( + # proto_file: Path to the .proto file that defines the gRPC service + proto_file="proto/helloworld.proto", + # endpoint: The gRPC server address in the format tcp://: + endpoint="tcp://localhost:4770" + ) + + # Expose the gRPC service within your typegraph + # This allows you to incorporate gRPC calls alongside other runtime operations + g.expose( + Policy.public(), + # call method: Creates a typegraph function for gRPC method calls + # It uses the full path to the gRPC method: /package_name.service_name/method_name + greet=grpc_runtime.call("/helloworld.Greeter/SayHello"), + ) + +# The typegraph can now be exposed via GraphQL or HTTP, +# allowing clients to interact with the gRPC service through Metatype's unified interface +``` +This implementation demonstrates how the gRPC Runtime integrates with your typegraph, allowing you to: + +1. Define gRPC service connections using the GrpcRuntime class +2. Expose gRPC methods as part of your typegraph +3. Combine gRPC functionality with other Metatype features and runtimes + +By structuring your gRPC interactions this way, you can seamlessly incorporate gRPC services into your larger Metatype-powered backend, alongside other data sources and business logic. + +## Benefits for Developers + +1. **Unified Backend Structure**: Incorporate gRPC services alongside other protocols and data sources in a single, coherent typegraph. +2. **Type Safety**: Leverage Metatype's strong typing system in conjunction with gRPC's protocol buffers for end-to-end type safety. +3. **Flexible Exposure**: Easily expose your gRPC services via GraphQL or HTTP endpoints, allowing clients to interact with them using their preferred protocol. +4. **Composability**: Combine gRPC calls with other runtime operations, database queries, or business logic within your typegraph. + +## Getting Started + +To start using the gRPC Runtime in your Metatype project: + +1. Ensure you have the latest version of Metatype installed. +2. Prepare your .proto files for the gRPC services you want to integrate. +3. Set up your typegraph as shown in the example above, incorporating the GrpcRuntime. +4. Configure your Metatype backend to expose the typegraph via GraphQL or HTTP as needed. + +## Conclusion + +The addition of the gRPC Runtime to Metatype further solidifies its position as a comprehensive platform for building robust, type-safe backends. By allowing seamless integration of gRPC services alongside other protocols and data sources, Metatype empowers developers to create versatile and powerful backend systems with ease. + +For more detailed documentation, code examples, and best practices, check out our [official Metatype docs](https://metatype.dev/docs)#.