summaryrefslogtreecommitdiff
path: root/content/implementation.tex
diff options
context:
space:
mode:
Diffstat (limited to 'content/implementation.tex')
-rw-r--r--content/implementation.tex37
1 files changed, 26 insertions, 11 deletions
diff --git a/content/implementation.tex b/content/implementation.tex
index 0c31453..b289aa8 100644
--- a/content/implementation.tex
+++ b/content/implementation.tex
@@ -1,20 +1,29 @@
\chapter{Implementation of \mysystem}\label{s:implementation}
-In this chapter we describe the implementation of \gls{my_system}.
-The main contribution of this chapter towards answering \emph{RQ3} is the prototype of \gls{my_system}.
+
+\section{Overview}\label{ss:overview_implementation}
+
+\begin{mynote}
+ The contribution of this chapter is two-fold:
+ \vspace{-0.2cm}
+ \begin{enumerate}[label=\emph{C\textsubscript{\arabic*}}]
+ \item We implement the real-world prototype of \mysystem (see \Cref{ss:detailed_implementation_overview}) realizing key features of the design.
+ \item We engineer \mysystem to enable predictive analytics engines (see \Cref{ss:programming})
+ \end{enumerate}
+\end{mynote}
+
+\section{Detailed Implementation of \mysystem}\label{ss:detailed_implementation_overview}
+In this section we describe the detailed implementation of \gls{my_system}.
After reading one should understand the technical decisions, choice of tools and modifications to existing software necessary for evaluation of \gls{my_system} in \Cref{s:evaluation}.
Any complex system is more than the sum of its parts~\cite{Wikipedia:article/Systems_Thinking}.
-To understand why \gls{my_system} it is crucial to provide a holistic view on the prototype.
-Therefore, the rest of the chapter is structured in a top-down approach: \Cref{ss:implementation_overview}
+To understand \gls{my_system} it is crucial to provide a holistic view on the prototype.
+Therefore, the rest of this chapter is structured in a top-down approach: \Cref{ss:detailed_implementation_overview}
presents the rationale for using the specific software packages, \Cref{ss:data_flow} shows the flow of data within the system, and \Cref{ss:extensions} details the different modifications and new software extensions to \code{OpenDC}.
Lastly, \Cref{ss:programming} carefully explains the design decisions behind the major Python modules.
-
-\section{Overview}\label{ss:implementation_overview}
-
\begin{figure}[t]
\centering
\includegraphics[width=0.85\linewidth]{images/implementation.pdf}
- \caption{The prototype and its components based on the architecture.
+ \caption[The prototype and its components based on the architecture.]{The prototype and its components based on the architecture.
The time-series data flows first to the \texttt{Grafana} (\myCircled{2a}) dashboard, \texttt{PostgreSQL} (\myCircled{3a}) database and \texttt{Redis} (\myCircled{3b}) cache as advised in ~\cite{DBLP:conf/sc/TaheriBPRHDEWPM24}.}
\label{fig:implementation}
\end{figure}
@@ -27,8 +36,15 @@ To store the in-band data we use a \code{Redis} (\myCircled{3b})~\cite{Wikipedia
To enable predictive analytics, we chose a discrete-event simulator, \code{OpenDC}(\myCircled{4a})~\cite{GitHub:software/OpenDC}.
The \code{Analytics Engine} (\myCircled{4b}), \code{Monitoring Service} (\myCircled{4c}), and \code{HTTP Server} (\myCircled{3c}) are described in detail in \Cref{ss:programming}.
-\code{Grafana} (\myCircled{2a})is a state-of-the-art industry tool to visualize dashboards.
-We posit it is crucial to include a user-friendly \gls{ui}.
+\begin{figure}[t]
+ \centering
+ {\includegraphics[width=0.9\linewidth]{images/grafana_panel.pdf}}
+ \caption[Example Grafana dashboard.]{Example Grafana Dashboard with downtime plotted against time.}
+ \label{fig:example_grafana_dashboard}
+\end{figure}
+
+\code{Grafana} (\myCircled{2a}) is a state-of-the-art industry tool to visualize dashboards.
+We posit it is crucial to include a user-friendly performance dashboard.
A number of previous publications on \gls{dt}s find dashboards important~\cite{DBLP:conf/sc/TaheriBPRHDEWPM24, DBLP:conf/wosp/SumanCNTMI24, DBLP:conf/wosp/NicolaeTKLI26}.
We chose \code{Grafana} (\myCircled{2a}) instead of other software packages because of its seamless integration with \code{PostgreSQL} (\myCircled{3a}).
\code{Grafana} (\myCircled{2a}) provides good separation of concerns and compartmentalization as it does not store the displayed metrics itself.
@@ -95,7 +111,6 @@ Should anything unusual occur, the \code{Monitoring Service} notifies the \code{
Then, the \code{Analytics Engine}, ingests the data from the \code{Redis} stream (\myCircled{5}) and analyzes it for further insights.
All insights generated in this way, are sent to the \code{HTTP Server} (\myCircled{4}) to communicate to the system knobs within the datacenter and to the datacenter operators (\grayCircled{1}).
-
\begin{figure}[t]
\input{sources/listing_schema.tex}
\end{figure}