Skip to content

support gRPC streams in addition to HTTP #813

@markfisher

Description

@markfisher

/area API
/kind dev

If Elafros defines a gRPC service that passes messages via bidirectional streams, any binding for that gRPC service could be used several ways:

  1. directly within applications that add a binding as a dependency
  2. indirectly via a bridge (e.g. HTTP -> gRPC) provided as a sidecar/ambassador container
  3. in function invokers, so that user code is simply called with an idiomatic stream type for its language

For example:

syntax = "proto3";

package function;

message Message {
	bytes payload = 1;
	map<string, string> headers = N;
}

service MessageFunction {
  rpc Call(stream Message) returns (stream Message) {}
}

Since gRPC traffic can be handled by Istio/Envoy, the management of traffic, policies, etc. should be consistent.

The goal of this issue is to establish the need for the foundational primitive that enables building higher level streaming constructs. From a platform implementer’s perspective, the domain of stream processing can lead to many challenges. It may not necessarily be within the realm of Elafros to address those challenges directly, but Elafros should provide the building blocks that enable streaming systems to be built in a way that aligns with the paradigm shift in developer experience being driven by serverless functions.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions