diff options
| author | mjkwiatkowski <mati.rewa@gmail.com> | 2026-07-03 13:20:24 +0200 |
|---|---|---|
| committer | mjkwiatkowski <mati.rewa@gmail.com> | 2026-07-03 13:20:24 +0200 |
| commit | eaddaf19a9bce0bb3232e5135b1c672ece5f2ec7 (patch) | |
| tree | 542c819ffbe5fc047166e21a0c45b51026af23d3 /content | |
| parent | f0268138b5b29c5c3c098fb74aa92f5e21074213 (diff) | |
feat: adding the overview text in section 5
Diffstat (limited to 'content')
| -rw-r--r-- | content/implementation.tex | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/content/implementation.tex b/content/implementation.tex index f55aef1..424103c 100644 --- a/content/implementation.tex +++ b/content/implementation.tex @@ -11,7 +11,26 @@ presents the rationale for using the specific software packages, \Cref{ss:data_f \section{Overview}\label{ss:implementation_overview} At the onset of the project, we decided \gls{my_system} will use only state-of-the-art software, deployed in the industry or evaluated in peer-reviewed scientific publications. -In order to facilitate visualizations and interactive dashboards, we decided to use \texttt{Grafana}~\cite{Wikipedia:article/Grafana}. +In order to facilitate visualizations and interactive dashboards, we decided to use \code{Grafana}~\cite{Wikipedia:article/Grafana}. +To enable the flow of data into the digital twin, we use \code{Kafka}~\cite{Wikipedia:article/Confluent}. +To store the in-band data we use a \code{Redis}~\cite{Wikipedia:article/Redis} cache, and for out-of-band data we use a \code{PostgreSQL}~\cite{Wikipedia:article/Postgresql}. +To enable predictive analytics, we chose a discrete-event simulator, \code{OpenDC}~\cite{GitHub:software/OpenDC}. +The \code{Analytics Engine}, \code{Monitoring Service}, and \code{HTTP Server} are described in detail in \Cref{ss:programming}. + +\code{Grafana} is a state-of-the-art industry tool to visualize dashboards. +We posit it is crucial to include a user-friendly \gls{ui}. +A number of previous publications on digital twinning find dashboards important~\cite{DBLP:conf/sc/TaheriBPRHDEWPM24, DBLP:conf/wosp/SumanCNTMI24, DBLP:conf/wosp/NicolaeTKLI26}. +We chose \code{Grafana} instead of other software packages because of its seamless integration with \code{PostgreSQL}. +\code{Grafana} provides good separation of concerns and compartmentalization as it does not store the displayed metrics itself. +Instead, it queries the \code{PostgreSQL} database in real-time~\cite{Wikipedia:article/Grafana}, unlike \eg \code{InfluxDB}. +Good alternatives to \code{Grafana} are \code{Kibana}~\cite{Wikipedia:article/Kibana}, \code{Prometheus}~\cite{Wikipedia:article/Prometheus}, and \code{Graphite}~\cite{Wikipedia:article/Graphite}. + +\code{Kafka}, particularly \code{Kafka} developed by Confluent~\cite{Wikipedia:article/Confluent} is a battle-tested message broker that provides versatile capabilities to transfer huge volumes of data with little latency, in real-time. +We decided to use \code{Confluent Kafka} instead of \code{Kafka} developed by the Apache Foundation, because of it's masterful connector system allowing to easily add sources and sinks (\eg \code{PostgreSQL} sink, \code{Redis} sink, \code{OpenDC} source). +Additionally, as opposed to \code{Apache Kafka}, \code{Confluent Kafka} comes equipped with a \code{Schema Registry}. +The \code{Schema Registry} is a important component that allows the storage of database and cache schemas for easy retrieval. +With \code{Schema Registry}, we ensure that the data stored in \code{PostgreSQL} tables and in \code{Redis} streams contains the exact same schema. +Moreover, \code{Schema Registry} is compatible with versatile data interchange formats, such as \code{ProtoBuf}~\cite{Wikipedia:article/ProtoBuf}. \section{Data Flow}\label{ss:data_flow} |
