Skip to content

Refactor events #68

@manuelstein

Description

@manuelstein

We currently use our own internal message format and we're passing events through a local message bus (Java/Thrift queue implementation). CloudEvents provides a common event format and SDKs that support various transport bindings.

The suggestion is to refactor our eventing layer to use CloudEvents and its transport SDKs to pass messages between workers.

Discussion topics:

  • encoding/decoding speed of CloudEvents SDK vs. our custom json parsing (in Java & Python)
  • which choice of encoding between function workers? (python currently only supports json encoding)
  • which transport between function workers
  • integrate with Knative Eventing?
  • mapping to CloudEvents (typing of workflow-internal and external events)

Workers are currently written in the function's language, so we'd need respective SDK support for whatever choice is made on encoding and transport. The respective SDK's performance on serializing/deserializing CloudEvents affects the workflow performance.

  • On the bright side, typed events allow interoperability with other platforms, e.g. users can easier develop functions that consume or produce known event types.
  • Using CloudEvents means the transport and binding can be adapted to use other messaging subsystems where applicable

Metadata

Metadata

Assignees

No one assigned

    Labels

    designThe issue is related to the high-level architectureenv/allTo indicate something that applies to all environments

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions