Skip to content
Permalink
Browse files

07: first rework

  • Loading branch information...
markus2330 committed May 25, 2019
1 parent 47f673c commit bd4936eb933ec3ee38ed4102ac3237c2406a30e1
Showing with 89 additions and 159 deletions.
  1. +3 −3 shared/elektra.bib
  2. +85 −155 slides/07.tex
  3. +1 −1 slides/Makefile
@@ -4496,14 +4496,14 @@ @inproceedings{burgess2006modeling
author={Burgess, Mark and Couch, Alva L},
booktitle={LISA},
pages={131--147},
year={2006}
year={2006},
}

@book{hunt1999pragmatic,
title={The pragmatic programmer},
author={Hunt, Andrew and Thomas, David},
year={1999},
publisher={Pearson}
publisher={Pearson},
}


# vim: tabstop=2 shiftwidth=2 expandtab
@@ -1,9 +1,10 @@
%TODO: add cliffhanger with preview for next time
%TODO: add learning outcome slide
%TODO: recapitulate the team work?
%TODO: differences requirements vs. context

\input{setup}

\date{25.5.2018}
\date{29.5.2018}

\begin{document}

@@ -16,64 +17,95 @@
\end{frame}

\begin{frame}
\frametitle{Organization}
Schedule:
Lecture is every week Wednesday 09:00 - 11:00.

\begin{description}
\item[25.5.2018:] \textbf{team exercise submitted}
\item[1.6.2018:] lecture
\item[8.6.2018:] lecture
\item[15.6.2018:] last corrections of team exercise
\item[22.6.2018:] oral test
\item[06.03.2019:] {\color{gray}topic, teams}
\item[13.03.2019:] {\color{gray}TISS registration, initial PR}
\item[20.03.2019:] {\color{gray}other registrations, guest lecture}
\item[27.03.2019:] {\color{gray}PR for first issue done, second started}
\item[03.04.2019:] {\color{gray}first issue done, PR for second}
\item[10.04.2019:] {\color{gray}mid-term submission of exercises}
\item[08.05.2019:] {\color{gray}different location: Complang Libary}
\item[15.05.2019:]
\item[22.05.2019:] {\color{gray}all 5 issues done}
\item[29.05.2019:]
\item[05.06.2019:] final submission of exercises
\item[12.06.2019:]
\item[19.06.2019:] last corrections of exercises
\item[26.06.2019:] exam
\end{description}
\end{frame}

\begin{assignment}
\frametitle{Tasks for today}
(until 29.05.2019 23:59)

\begin{task}
Continue teamwork and homework.
Make a clear description for what your team partner should do.
\end{task}
\end{assignment}

\begin{assignment}
\frametitle{Tasks for next week}
(until 05.06.2019 23:59)

\begin{task}
Submit teamwork and homework.
\end{task}
\end{assignment}

\begin{frame}
\frametitle{Popular Topics}
\vspace{-0.5cm}
\vspace{-0.55cm}
\setlength{\columnsep}{-1.3cm}
\raggedright
\definecolor{amethyst}{rgb}{0.6, 0.4, 0.8}
\begin{multicols}{2}
\begin{description}
\item[4] validation
\item[14] {\color{red} tools}
\item[9] {\color{gray} testability}
\item[9] {\color{gray} code-generation}
\item[7] {\color{red} context-awareness}
\item[6] {\color{red} specification}
\item[6] {\color{gray} misconfiguration}
\item[6] {\color{gray} complexity reduction}
\item[5] validation
\item[5] {\color{gray} points in time} % (early detection)
\item[5] error messages
\item[5] {\color{gray} auto-detection}
\item[4] user interface
\color{red}
\item[3] tools (benefits?)
\color{gray}
\item[3] testability
\item[3] complexity reduction (when conf. needed?)
\item[3] architectural decisions
\color{black}
\item[2] Puppet
\color{gray}
\item[2] modularity
\item[2] environment variables
\color{gray}
\item[2] documentation
\color{red}
\item[2] configuration specification
\color{gray}
\item[2] command-line args\color{black}
\color{gray}
\item[2] code generation
\item[1] variability
\color{black}
\item[1] self-description
\item[1] round-tripping
\color{gray}
\item[1] early detection
\item[1] introspection
\item[1] dependences
\item[1] auto-detection
\color{red}
\item[1] context-awareness
\color{black}
\item[1] administrators
\item[4] {\color{gray} introspection}
\item[4] {\color{red} design}
\item[4] {\color{gray} cascading}
\item[4] {\color{gray} architecture of access}
\item[3] {\color{gray} configuration sources}
\item[3] {\color{gray} config-less systems}
\item[2] secure conf
\item[2] {\color{gray} architectural decisions}
\item[1] push vs.\ pull
\item[1] {\color{red} infrastructure as code}
\item[1] full vs.\ partial
\item[1] convention over conf %iguration
\item[1] CI/CD
\item[0] {\color{amethyst} documentation}
\end{description}
\end{multicols}
\end{frame}


\begin{frame}
\hspace*{-1cm}\includegraphics[width=\paperwidth]{dot/topics}
\frametitle{Learning Outcomes}
Students will be able to
\begin{itemize}
\item remember basics of context-awareness.
\item remember basic characteristics of key databases.
\item remember the history of configuration management.
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


\begin{frame}
\frametitle{Introspection (Recapitulation)}
@@ -97,78 +129,6 @@
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Code Generation (Recapitulation)}
\begin{task}
Which artifacts can be produced by an code generator?
\end{task}

\pause

\begin{itemize}
\item documentation (to avoid duplication)
\item testing (integration, unit, regression, \dots{} tests)
\item metrics (which configuration settings are used in the source)
\item examples (e.g., defaults)
\item auto-completion/syntax highlighting/IDE support
\item tooling (GUI, Web UI)
\item validation code
\item configuration management tool code
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{KeySet (Recapitulation)}

The common data structure of Elektra:
\vspace{1cm}

\includegraphics{keyset}
\end{frame}

\begin{frame}
\frametitle{Testing (Recapitulation)}
\begin{task}
What do we want to test?
\end{task}

\pause

\begin{itemize}
\item That settings do what they should (devs and admins)
\item That settings are properly validated (devs~\cite{xu2013blame})
\item Regression tests (devs~\cite{qu2008configuration})
\vspace{1em}
\item Are all settings implemented? (devs)
\item Are all settings used in tests? (devs)
\item Are there unused settings in the code? (devs)
\item Do the chosen settings work? (admins)
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{Early detection (Recapitulation)}
\begin{task}
When do we want to detect misconfiguration?
\end{task}

\pause

Phases when we can detect misconfigurations:
\begin{itemize} %[<+-| alert@+>]
\item Compilation stage in configuration management tool
\item Writing configuration settings on nodes
\item Starting applications (load-time)
\item When configuration setting is actually used (run-time)
\end{itemize}

\pause[\thebeamerpauses]

\begin{alertblock}{Problem}
Earlier versus more context.
\end{alertblock}
\end{frame}

\begin{frame}[fragile]
\frametitle{Example Documentation (Recapitulation)}

@@ -199,49 +159,28 @@
\end{alertblock}
\end{frame}


\begin{frame}
\frametitle{Notification (Recapitulation)}

\begin{task}
Why do we need notification?
\end{task}

\pause

\begin{enumerate}
\item to keep transient and persistent configuration settings always in sync~\cite{jin2014configurations}
\item to avoid polling of configuration settings
\item to better integrate into already existing mechanisms (main loops)\footnote{Is one of the main reasons why most framework already integrate configuration settings.}
\end{enumerate}

\ExecuteMetaData[../book/motivation.tex]{req-consistency}
\end{frame}

\begin{frame}[fragile]
\frametitle{Semantic three-way merge (Recapitulation)}

\textbf{Ours:}
\begin{code}[gobble=4,language=CfgElektra]
slapd/threads/listener=4

slapd/pool/enabled=yes;tried to set no
\end{code}
slapd/threads/enable= \
yes # must be enabled for listener

\vspace{1.5em}
\end{code}

\textbf{Theirs:}
\begin{code}[gobble=4,language=CfgElektra]
slapd/pool/enabled=off
slapd/threads/listener=8
slapd/threads/enable = on
slapd/threads/listener = 8
\end{code}

\vspace{1.5em}

\textbf{Origin:}
\begin{code}[gobble=4,language=CfgElektra]
slapd/threads/listener=8
slapd/pool/enabled=on
slapd/threads/enable = true
\end{code}
\end{frame}

@@ -421,12 +360,12 @@ \subsection{}
\end{frame}

\begin{frame}
\frametitle{Decisions}
\frametitle{Design Decisions}

There are many ways to design configuration access but many decisions are only pragmatic and irrelevant with proper key/value abstraction.

\begin{task}
Which decisions are there?
Which design decisions are there?
Why are they (ir)relevant?
\end{task}

@@ -475,16 +414,9 @@ \subsection{}
\item distributed coordination~\cite{ongaro2014search}
\item needs configuration itself
\end{itemize}
\item Kubernetes: ConfigMaps
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{}
Many applications require configuration via some combination of config files, command line arguments, and environment variables. These configuration artifacts should be decoupled from image content in order to keep containerized applications portable. The ConfigMap API resource provides mechanisms to inject containers with configuration data while keeping containers agnostic of Kubernetes. ConfigMap can be used to store fine-grained information like individual properties or coarse-grained information like entire config files or JSON blobs.
\par\raggedleft--- \textup{Kubernetes ConfigMaps}
\end{frame}

\begin{frame}
\frametitle{Elektra}

@@ -561,11 +493,9 @@ \section{History of Configuration Management}
\end{itemize}

\pause
\vspace{3em}
\hspace{-3em}

\setbeamersize{description width=1cm}
\begin{description} %[leftmargin=0cm] %TODO: move left?
\begin{description}
\item[$+$] works very good for many identical stateless machines
\item[$-$] fails if differences between machines are too big
\end{description}
@@ -1,4 +1,4 @@
FILE=06
FILE=07

$(FILE).pdf:$(FILE).tex setup.tex
latexmk $(FILE)

0 comments on commit bd4936e

Please sign in to comment.
You can’t perform that action at this time.