diff options
Diffstat (limited to 'content/implementation.tex')
| -rw-r--r-- | content/implementation.tex | 37 |
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} |
