diff options
| -rw-r--r-- | appendix/glossary.tex | 1 | ||||
| -rw-r--r-- | content/implementation.tex | 21 | ||||
| -rw-r--r-- | main.bib | 117 | ||||
| -rw-r--r-- | style/style.tex | 4 |
4 files changed, 142 insertions, 1 deletions
diff --git a/appendix/glossary.tex b/appendix/glossary.tex index 3baf8af..d7d5889 100644 --- a/appendix/glossary.tex +++ b/appendix/glossary.tex @@ -16,3 +16,4 @@ \newacronym{fair}{FAIR}{Findability, Accessibility, Interoperability and Reusability} \newacronym{nasem}{NASEM}{National Academy of Sciences, Engineering, and Medicine} \newacronym{cfd}{CFD}{Computational Fluid Dynamics} +\newacronym{ui}{UI}{User Interface} 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} @@ -709,3 +709,120 @@ }", } +@misc{Wikipedia:article/Confluent, + author = "{Wikipedia contributors}", + title = "Confluent --- {Wikipedia}{,} The Free Encyclopedia", + year = "2026", + howpublished = "\url{ + https://en.wikipedia.org/w/index.php?title=Confluent&oldid=1361669280 + }", + note = "This BibTeX citation comes from: \url{ + https://en.wikipedia.org/w/index.php?title=Special:CiteThisPage&page=Confluent&id=1361669280&wpFormIdentifier=titleform#BibTeX_entry + }", +} + +@misc{Wikipedia:article/Redis, + author = "{Wikipedia contributors}", + title = "Redis --- {Wikipedia}{,} The Free Encyclopedia", + year = "2026", + howpublished = "\url{ + https://en.wikipedia.org/w/index.php?title=Redis&oldid=1351092330 + }", + note = "This BibTeX citation comes from \url{ + https://en.wikipedia.org/w/index.php?title=Special:CiteThisPage&page=Redis&id=1351092330&wpFormIdentifier=titleform#BibTeX_entry + }", +} +@misc{Wikipedia:article/Postgresql, + author = "{Wikipedia contributors}", + title = "PostgreSQL --- {Wikipedia}{,} The Free Encyclopedia", + year = "2026", + howpublished = "\url{ + https://en.wikipedia.org/w/index.php?title=PostgreSQL&oldid=1357817665 + }", + note = "This BibTeX citation comes from \url{ + https://en.wikipedia.org/w/index.php?title=Special:CiteThisPage&page=PostgreSQL&id=1357817665&wpFormIdentifier=titleform#BibTeX_entry + }", +} + +@misc{GitHub:software/OpenDC, + author = {Mastenbroek, Fabian and Andreadis, Georgios and Jounaid, + Soufiane and Lai, Wenchen and Burley, Jacob and Bosch, Jaro and + van Eyk, Erwin and Versluis, Laurens and van Beek, Vincent and + Iosup, Alexandru}, + title = {OpenDC}, + note = "This BibTeX citation comes from \url{ + https://github.com/atlarge-research/opendc}. It has been + converted from a \texttt{CITATION.cff} file using \texttt{ + cffconvert} (see \url{ https://citation-file-format.github.io/})", +} + + +@inproceedings{DBLP:conf/wosp/NicolaeTKLI26, + author = {Radu Nicolae and Jules van der Toorn and Stavriana Kraniti and + Houcen Liu and Alexandru Iosup}, + editor = {Roberto Verdecchia and Catia Trubiani and Radu Calinescu and + Ana Lucia Verbanescu}, + title = {OpenDT: Exploring Datacenter Performance and Sustainability + with a Self-Calibrating Digital Twin}, + booktitle = {Companion of the 17th {ACM/SPEC} International Conference + on Performance Engineering, {ICPE} Companion 2026, Florence, + Italy, May 4-8, 2026}, + pages = {142--147}, + publisher = {{ACM}}, + year = {2026}, + url = {https://doi.org/10.1145/3777911.3800634}, + doi = {10.1145/3777911.3800634}, + timestamp = {Wed, 03 Jun 2026 10:10:46 +0200}, + biburl = {https://dblp.org/rec/conf/wosp/NicolaeTKLI26.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org}, + note = {This BibTeX citation comes from \url{ + https://dblp.org/rec/conf/wosp/NicolaeTKLI26.html?view=bibtex}}, +} + +@misc{Wikipedia:article/Graphite, + author = "{Wikipedia contributors}", + title = "Graphite (software) --- {Wikipedia}{,} The Free Encyclopedia", + year = "2026", + howpublished = "\url{ + https://en.wikipedia.org/w/index.php?title=Graphite_(software)&oldid=1357227590 + }", + note = "This BibTeX citation comes from \url{ + https://en.wikipedia.org/w/index.php?title=Special:CiteThisPage&page=Graphite_%28software%29&id=1357227590&wpFormIdentifier=titleform + }", +} + +@misc{Wikipedia:article/Kibana, + author = "{Wikipedia contributors}", + title = "Kibana --- {Wikipedia}{,} The Free Encyclopedia", + year = "2026", + howpublished = "\url{ + https://en.wikipedia.org/w/index.php?title=Kibana&oldid=1342816695 + }", + note = "This BibTeX citation comes from \url{ + https://en.wikipedia.org/w/index.php?title=Special:CiteThisPage&page=Kibana&id=1342816695&wpFormIdentifier=titleform + }", +} + +@misc{Wikipedia:article/Prometheus, + author = "{Wikipedia contributors}", + title = "Prometheus (software) --- {Wikipedia}{,} The Free Encyclopedia", + year = "2026", + howpublished = "\url{ + https://en.wikipedia.org/w/index.php?title=Prometheus_(software)&oldid=1349456026 + }", + note = "This BibTeX citation comes from \url{ + https://en.wikipedia.org/w/index.php?title=Special:CiteThisPage&page=Prometheus_%28software%29&id=1349456026&wpFormIdentifier=titleform + }", +} + +@misc{Wikipedia:article/ProtoBuf, + author = "{Wikipedia contributors}", + title = "Protocol Buffers --- {Wikipedia}{,} The Free Encyclopedia", + year = "2026", + howpublished = "\url{ + https://en.wikipedia.org/w/index.php?title=Protocol_Buffers&oldid=1357670495 + }", + note = "This BibTeX citation comes from \url{ + https://en.wikipedia.org/w/index.php?title=Special:CiteThisPage&page=Protocol_Buffers&id=1357670495&wpFormIdentifier=titleform#BibTeX_entry + }", +} diff --git a/style/style.tex b/style/style.tex index 8e92900..bfed674 100644 --- a/style/style.tex +++ b/style/style.tex @@ -27,4 +27,8 @@ \newcommand\myCircled[1]{\scalebox{0.75}{\Circled[fill color=black,inner color=white]{{\sffamily#1}}}} +\newcommand{\code}[1]{\texttt{#1}} + \newcommand{\BibTeX}{\textsc{B\kern-0.1emi\kern-0.017emb}\kern-0.15em\TeX\xspace} + + |
