About Ditto
Ditto is an edge-sync platform, orchestrating data flow between points A and B across diverse environments, including peer‑to‑peer, client‑server, and hybrid setups.
Edge sync refers to a paradigm where synchronization, or sync for short, happens at the network's outermost part — the edge — where end-user transactional data originates, is processed, and consumed.
This direct approach to data processing and communication within IT and business network architecture is decentralized; that is, it operates without a central authority and instead disperses sync-related tasks across multiple nodes at the edge.
The core product of our platform is a software developer kit (SDK) that you integrate into your app. Once integrated, each device running your app retains a single system database known as a Ditto store. The Ditto store operates locally within the end‑user’s physical environment, such as an iPhone.
Beyond being an SDK, our platform offers a suite of feature-rich tools and services to enhance data processing and communication capabilities in your end-user environment.
The following graphic and corresponding table provide a high-level overview of the platform, along with the standard terminology used throughout the documentation:
Item | Component | Description |
---|---|---|
1 | Small Peer | Your app logic integrated with the Ditto SDK running within the end-user environment, such as a web, mobile, or desktop app, or a Linux-enabled server system. (See Small Peers) |
2 | Big Peer | An optional cloud deployment feature that functions like any other peer within the decentralized network, but with elevated access permissions and advanced platform capabilities. (See Big Peer) |
3 | Authentication Service | The OnlineWithAuthentication API that you use to request your access credentials for peer‑to‑peer authentication. (See Authentication Service) |
4 | HTTP Data API | The API you can use to interact with the mesh-generated data stored in the Big Peer. (See HTTP Data API) |
5 | Change Data Capture (CDC) | The premium upgrade to implement realtime event streaming from Ditto to your third-party database and Apache Kafka topics. (See Change Data Capture) |
A Small Peer refers to the combination of the Ditto SDK providing platform capabilities and its local database, or Ditto store, operating on the end-user device running your app.
Here are a few attributes of a typical Small Peer to give you an idea:
- Static and unchangeable storage, RAM, and CPU resources, for instance, an Apple iPhone 13 with a fixed storage capacity of 256 GB.
- Automatically connects with nearby devices to form a peer-to-peer mesh network through available transport protocols like Bluetooth LE.
Each Small Peer provides local data storage and data processing capabilities and establishes decentralized communication networks, referred to as the peer-to-peer mesh.
Alongside peer‑to‑peer transports like Bluetooth LE, you can incorporate either the Big Peer or your own on-premises server — both easily configured with a URL within your peer‑to‑peer network.
The Big Peer is a platform feature you can opt into, adding to the capabilities of the Small Peer SDK.
While the Small Peer SDK enables complex data connections within local areas, the optional Big Peer cloud deployment is where the transactional edge interfaces with Big Data analytics.
Following is a summary of Big-Peer feature offerings:
- Implementing security protocols to enhance data and network security.
- Providing advanced data processing capabilities.
- Facilitating seamless integration with cloud services.
- Handling large amounts of data through horizontal scaling and automatic critical scaling decisions.
- Ensuring continuous uptime and availability.
The Big Peer operates within the peer-to-peer topology like any other peer participating in the mesh; however, under the rug, the Big Peer functions as a centralized node in the Kubernetes cluster.
Here are some primary functions of the Big Peer:
- Facilitating sync between Small Peers in environments where direct communication is unreliable due to network limitations, security concerns, and other factors. (See Mesh Networking 101 > Flood-Fill Process)
- Ingesting data from external systems into the Ditto ecosystem. (See Big Peer > HTTP API - Getting Started)
- Extracting data from the transactional edge and streaming it to external systems, such as Apache Kafka, for comprehensive Big Data analytics. (See Big Peer > Change Data Capture)
Ditto's security relies on digital identities for peer-to-peer authentication and access control permissions and privileges.
There are two available identity types to choose from:
You're ready to explore and test realtime sync capabilities without the commitment using either a demo app or your own development app. (See 'Hello World' Sync and Authentication)
You've integrated Ditto, integrated a third‑party identity service provider, and are now ready to go into production. (See Authentication)
Ditto provides a stateless HTTP API that you can use to execute one-time operations on the Big Peer store for mesh-generated data ingress, reading, and manipulation.
The HTTP data API is structured on the remote procedure call (RPC) framework, so you can initiate requests as if you're making peer-to-peer local calls, even though the exchange happens over the internet. (See Big Peer > HTTP API - Getting Started)
The Big Peer is your gateway to the broader Ditto ecosystem for streaming and processing data in realtime with Apache Kafka.
Apache Kafka is a distributed streaming platform. For more information, see the official documentation.
CDC is a premium implementation for watching mesh data and, as relevant changes occur, asynchronously syncing with external databases and business intelligence tools.
Leveraging these change events, you can dynamically respond in realtime within your external systems and tools, for instance, update a dashboard to reflect the most up‑to‑date information from the Big Peer. (See Big Peer > Change Data Capture)