Bondy

Always-on communication management
for devices, applications and services

Bondy implements the open Web Application Messaging Protocol providing connectivity amongst all elements of a distributed application, such as mobile and web apps, IoT devices and backend services, offering both Remote Procedure Calls and Publish & Subscribe communication patterns

Details

Bondy acts as a message router for you apps, services and microservices, providing both Remote Procedure Calls (RPC) and Publish and Subscribe (PubSub) communication patterns in a single platform over HTTP, WebSockets and TCP/IP. As a result Bondy delivers the features of a service mesh and an event mesh combined.

As opposed to most messaging technologies which offer Request-Reply based on their PubSub backend, Bondy implements Routed RPC as a first class citizen which allows it to offer additional RPC features like load balancing, fail-over, sharding, timeouts/deadlines, retries, circuit breaking and distributed tracing.

Bondy offers multi-protocol client authentication and authorization security. Its embedded eventually consistent Role-based Access Control subsystem replicates security data across the cluster and offers OAUTH2 and WAMP-based authentication schemes. Bondy also offers and extensible authentication layer allowing the integration of external authentication services e.g. LDAP.

Bondy can publish data to external systems which allows to complement the scalability and always-on capabilities of Bondy with the data durability and batch processing capabilities of external message brokers and databases e.g. Kafka, RabbitMQ.

Bondy offers extensive WAMP and REST APIs to control a Bondy cluster, and integrates with distributed tracing and telemetry services. It also provides liveness and readiness probes to be used with orchestration systems e.g. K8s.

Benefits

Avoid the need to use a combination of protocols to support PubSub and RPC in your microservices or translate those to REST/HTTP for you web and mobile apps. With Bondy all elements of the application can communicate using a single underlying WAMP API while still leveraging different transports and encodings per client and even declaratively define a REST/HTTP API internally and externally.
A Bondy cluster can scale to hundreds or thousands of nodes by leveraging different network topologies for communication. A full mesh topology guarantees only one hop is required to reach any node in the cluster, while more scalable topologies can maintain smaller groups of interconnected nodes to enable the whole cluster to grow larger while intelligently reducing the number of hops required.
Bondy embeds a REST/HTTP Gateway which can host multiple APIs defined declaratively using a JSON specification format. The specification allows the developer to map a REST verb and noun to a WAMP action e.g. map a POST to a WAMP RPC Call. The Gateway offers seemless integration to Bondy’s security subsystem exposing an OAUTH2 API. API Specifications are synchronised to all Bondy nodes in real-time.
Bondy can be deployed anywhere from resource-constrained x86/ARM edge devices to private, hybrid and public clouds running bare metal, virtualisation or containers.

Features

Bondy is open source software licensed under the Apache License Version 2.0. The source code is available at: https://gitlab/leapsight/bondy.
Bondy was designed from the ground up as a distributed router and broker. It can leverage different network topologies for data replication and routing allowing it to scale to thousands of nodes. Bondy is written in Erlang/OTP which offers unprecedented soft real-time, high concurrency and self-healing capabilities. A single node can handle millions of concurrent client connections.
Bondy offers dynamic message routing automatically and efficiently delivering RPC and PubSub messages between clients connected to separate nodes in the cluster. Clustering formation is automatic and self-healing which saves operators the hassle of maintaining cluster connectivity.
Bondy replicates state across the cluster using a masterless architecture (all nodes are equal) and a gossip-based eventually consistent reliable state dissemination protocol which keeps state synchronised across nodes in the cluster without compromising availability. In addition, Bondy uses active anti-entropy to repair missing or divergent state as a result of node failure, physical data loss or corruption, and quickly bring additional nodes up-to-date. The combination of these features allow Bondy to be highly available even under network partitions, message loss and node failures.
Bondy implements the Web Application Messaging Protocol (WAMP) v2.0. WAMP is a routed protocol that provides two messaging patterns: Publish & Subscribe (PubSub) and routed Remote Procedure Calls (RPC) over TCP/IP or WebSockets, and offers data transcoding support for several formats. Having a core that supports both RPC and PubSub allows Bondy to evolve to a multi-protocol RPC and PubSub router. As a result, Bondy already provides a REST/HTTP Gateway to declaratively define and deploy REST APIs that dynamically translate to the underlying WAMP counterparts.
Bondy can be deployed anywhere from resource-constrained x86/ARM edge devices to private, hybrid and public clouds running bare metal, virtualisation or containers. Bondy provides out-of-the-box automatic clustering formation based on DNS which allows deploying a cluster on one go.

Use Cases

Cloud
Messaging

  • Act as as a service mesh for services of any size offering not only messaging but also routed RPC.

IoT
and Edge

  • Use Bondy to capture sensor/telemetry data and or send commands to actuators

No-coding
REST API

  • Expose your internal RPC and PubSub APIs to external REST/HTTP clients easily and without coding.

Case Studies

Case Study strix B2C

In March 2018 Leapsight designed and implemented an Internet of Things (IoT) platform for Strix. Since then, Strix has been in production managing more than 150,000 connected cars and several thousand smart home devices across three countries.