Skip to content

ZEISS/typhoon

Repository files navigation

typhoon

Release Go Reference Go Report Card Taylor Swift Volkswagen License

An event bridge for applications and services build on an event mesh with a team-oriented self-service control plane.

Design

Every software system has design goals. Properties that it should provide io its users to create value. Typhoon has the following design goals:

  • Team-based self-service control plane. Teams control their own event sources, triggers, and targets. They also control their users their permissions.
  • Event mesh. The system is capable to route events from producers to consumers in hybrid cloud environemts.
  • Streaming. The system is capable to stream events from producers to consumers. That means it is capable of replaying events not only queueing them.
  • Event bridging. The system is capable to bridge events from different sources to different targets, also transforming them. Furthermore, this should use a declarative approach.
  • Scalability. The system is capable to scale horizontally and vertically.
  • Resilience. The system is capable to recover from failures.
  • Security. The system is capable to secure the communication between producers and consumers.
  • Open standards. The system is based on open standards like NATS.io and Knative Eventing.

Overview

Typhoon is built on top of NATS.io and Knative Eventing. It provides a control plane for managing event sources, triggers, and targets. It also provides an API for managing the control plane.

flowchart TB

subgraph controlPlane [Control Plane]
  subgraph api[API]
    subgraph apiAccounting[Accounting]
    end
  end
end

subgraph "Knative Eventing"
  subgraph triggers[Triggers]
    subgraph sources[Sources]
    end
    subgraph transformers[Transformers]
    end
    subgraph targets[Targets]
    end
  end
end

triggers--Communicates via-->eventMesh[Event Mesh]
apiAccounting--Stores data-->externalDatabase[External Database]
apiAccounting--Provides authentication-->eventMesh[Event Mesh]
controlPlane-->ssoProvider[SSO Provider]

sources-->transformers
transformers-->targets

subgraph eventMesh[Event Mesh]
  subgraph NATS
  end
end

subgraph ssoProvider[SSO Provider]
end

subgraph externalDatabase[External Database]
  subgraph PostgreSQL
  end
end

Helm

Helm can be used to install Typhoon to your Kubernetes cluster.

helm repo add typhoon https://zeiss.github.io/typhoon
helm repo update

Install Typhoon to your cluster in a typhoon namespace.

helm install typhoon typhoon/typhoon --create-namespace --namespace typhoon

Development

You can use minikube to run a local Kubernetes cluster.

minikube start

You need to install Serving and Eventing for Knative.

License

Apache 2.0