In a service-centric architecture, applications need to know each other’s interfaces to share data, share events, and share commands or replies to interact. These interfaces are modeled as sets of operations and functions that are managed in centralized repositories. This type of architecture creates unnecessary dependencies that form a tightly coupled system. The centralized interface repositories are usually seen as a single point of failure.
In a data-centric architecture, your design focuses on the data each application produces and decides to share rather than on the Interfaces’ operations and the internal processing that produced them.
A data-centric architecture creates a decoupled system that focuses on the data and applications states’ that need to be shared rather than the applications’ details. In a data-centric system, data and their associated quality of services are the only contracts that bound the applications together. With Eclipse Cyclone DDS, the system decoupling is bi-dimensional, in both space and time.
Space-decoupling derives from the fact that applications do not need to know the identity of the data produced or consumed, nor their logical or a physical location in the network. Under the hood, Cyclone DDS runs a zero-configuration, interoperable discovery protocol that searches matching data readers and data writers that are interested in the same data topic.
Time-decoupling derives from the fact that, fundamentally, the nature of
communication is asynchronous. Data producers and consumers,
known as DataWriters and DataReaders, are not forced to
be active and connected simultaneously to share data. In this
scenario, the Cyclone DDS middleware can handle and manage data on behalf of
DataReader applications and deliver it to them when they
join the system.
Time and space decoupling gives applications the freedom to be plugged or unplugged from the system at any time, from anywhere, in any order. This keeps the complexity and administration of a data-centric architecture relatively low when adding more and more DataReader and DataWriter applications.