| .. This work is licensed under a |
| .. Creative Commons Attribution 4.0 International License. |
| .. http://creativecommons.org/licenses/by/4.0 |
| .. |
| .. Copyright (C) 2021 Bell Canada |
| |
| ========================= |
| CPS Temporal Architecture |
| ========================= |
| |
| CPS Temporal is a dedicated service, **distinct** and **decoupled** from CPS |
| Core. CPS Temporal service is an **independently deployable** unit. |
| |
| Integration between Core and Temporal is **event notification based, |
| asynchronous, send and forget**. By doing this, we are avoiding the dependency |
| from CPS Core on CPS Temporal and its API. It reverses the |
| dependency, which makes more sense from a conceptual point of view. |
| |
| For each data modification handled by CPS Core, |
| |
| * CPS Core is **publishing**, to a dedicated topic, an event representing the |
| data configuration or state. |
| * CPS Temporal is **listening** to the same topic for the event and is |
| responsible to keep track of all data over time. |
| |
| In the future, some other services can be created to listen to the same topic |
| to implement additional functionalities or storage forms. |
| |
| The event messaging system for this integration is **Kafka**, whose running |
| instance is deployed independently from CPS. It could be either: |
| |
| * the ONAP Kafka instance from ONAP Strimzi component, |
| * or any specific Kafka instance deployed independently from ONAP |
| |
| The following diagram is the C4 Model representing CPS System Containers: |
| |
| .. image:: /_static/images/cps-temporal-c4-container.png |
| :alt: C4 Model Diagram: Containers for CPS Software system |