Zilla APIs from Standard Specifications
Zilla APIs from Standard Specifications
Zilla can leverage standard API schema specifications to configure the settings that define common API interfaces. Zilla will use the details specified in the API spec with sensible defaults to reuse the existing design and reduce complexity.
OpenAPI and AsyncAPI
The Zilla config uses many of the same parameters as the public and open-source interface definition languages OpenAPI and AsyncAPI. Services and tools are available to describe your existing APIs and infrastructure using OpenAPI and AsyncAPI definitions. These specs enable more consistent documentation, versioning, and code generation. Using the openapi and asyncapi bindings enables the use of existing interface specs to configure Zilla.
Zilla leverages the interface definitions in these specs to generate the necessary zilla.yaml
config to implement the defined services. Zilla doesn't generate code that needs to be maintained. Instead, it generates the underlying configuration necessary to implement a functioning interface. Both standard and complex use cases are implemented easily with Zilla.
You can see a working Petstore Demo using OpenAPI/AsyncAPI schemas. Zilla can also define and proxy MQTT endpoints utilizing a pair of AsyncAPI schemas. Check out the Taxi Demo to see a Zilla MQTT proxy defined using AsyncAPI, which is deployed Live using Kubernetes.
OpenAPI
Zilla implements the RESTful APIs defined in the openapi binding. A REST Kafka proxy is defined using the openapi-asyncapi binding. The Kafka configuration is defined with an asyncapi client
binding.
Petstore REST demo | Taxi Hailing demo | openapi.proxy example
AsyncAPI
Zilla implements Event-Driven APIs defined in the asyncapi binding. A Kafka proxy is defined using the asyncapi proxy
binding. The Kafka configuration is defined with an asyncapi client
binding.
Taxi Hailing demo | asyncapi.http.kafka.proxy example | asyncapi.mqtt.kafka.proxy example | asyncapi.sse.kafka.proxy example
Protobuf
The Zilla gRPC Kafka Proxy lets you implement gRPC service definitions from protobuf files to produce and consume messages via Kafka topics.
Zilla can be the gRPC server, routing a service method's request and response messages to and from Kafka topics, or Zilla can fanout messages from a Kafka topic to multiple gRPC clients using the grpc-kafka and kafka-grpc bindings in a zilla.yaml config. Additionally, Zilla can sit on the critical path between a gRPC client and a server. They can communicate as if they are talking directly to each other, while Zilla actually proxies the messages through Kafka.