\section*{Resultaten}

Dit hoofdstuk documenteert de resultaten van het onderzoek.


\subsection*{Visie en wensen}

KEMBIT en het Expert Team Networking willen meer werkzaamheden uitvoeren met automatiseringstools, dit blijkt uit de survey afgenomen van het Expert Team Networking en het interview met opdrachtgever.

\begin{figure}[h]
    \centering
    \includegraphics[width=\linewidth]{survey_pie_meer_automatisering_mening.pdf}
    \caption{Antwoord op de vraag over het meer gebruikmaken van automatisering in de dagelijkse werkzaamheden \cite{remmen_onderzoeksrapport}.}
    \label{fig:survey_pie_meer_automatisering_mening}
\end{figure}

In afbeelding \ref{fig:survey_pie_meer_automatisering_mening} is te zien dat het Expert Team Networking gelooft dat automatisering een positief effect heeft op de kwaliteit en tijdigheid van hun dagelijkse werkzaamheden. Daarnaast blijkt uit het antwoord dat medewerkers graag meer gebruik willen maken van automatiseringstools. Als reden wordt voornamelijk voor tijdsbesparing gekozen (afbeelding \ref{fig:survey_waarom_automatiseren}).

\begin{figure}[h]
    \centering
    \includegraphics[width=\linewidth]{survey_waarom_automatiseren.pdf}
    \caption{Waarom medewerkers meer gebruik willen maken van automatiseringstools \cite{remmen_onderzoeksrapport}}
    \label{fig:survey_waarom_automatiseren}
\end{figure}

In de surveyvraag in afbeelding \ref{fig:survey_leren_automatiseren} is gevraagd of werknemers van het Expert Team Networking het gemakkelijk vinden om te leren over hoe ze automatisering toe kunnen passen. Hier geeft ruim de helft van de werknemers aan dat dit niet gemakkelijk is.

\begin{figure}[h]
    \centering
    \includegraphics[width=\linewidth]{survey_leren_automatiseren.pdf}
    \caption{Is het gemakkelijk om te leren over automatiseren? \cite{remmen_onderzoeksrapport}}
    \label{fig:survey_leren_automatiseren}
\end{figure}


\subsection*{Analyse tijdsbesteding}

Om te evalueren waar het toepassen van automatisering het meest effectief kan zijn is een analyse gemaakt van de tijdsbesteding van het Expert Team Networking. Hier wordt gezocht naar werkzaamheden die veel tijd in beslag nemen en met redelijke regelmaat worden uitgevoerd.

Om dit te doen zijn rapportages gemaakt van verschillende statistieken in het IT-servicemanagement systeem van KEMBIT genaamd TOPdesk.

Dit systeem wordt gebruikt voor het bijhouden van tickets, changes en projecten binnen het bedrijf. Hierdoor kunnen rapportages van gegevens in het systeem een indicatie geven van de tijdsverdeling tussen type incidenten en changes van het Expert Team Networking.

In afbeelding \ref{fig:changes_tijd_gemiddeld_categorie} is de totale verdeling van gemiddelde gespendeerde tijd te zien per categorie. Uit deze grafiek blijkt dat de meeste tijd wordt besteed aan changes die behoren tot de 'overige' en 'internet' categorieën.

\begin{figure}[h]
    \centering
    \includegraphics[width=\linewidth]{changes_tijd_gemiddeld_categorie.pdf}
    \caption{Gemiddelde bestede tijd aan changes per categorie (percentage) \cite{remmen_onderzoeksrapport}}
    \label{fig:changes_tijd_gemiddeld_categorie}
\end{figure}

Afbeelding \ref{fig:changes_aantal_categorie} geeft het aantal changes weer per categorie. De volgende zaken kunnen worden geconcludeerd omtrent de tijdsverdeling van changes:

\begin{itemize}
    \item Werkzaamheden met betrekking tot routers en/of modems
\end{itemize}

\begin{figure}[h]
    \centering
    \includegraphics[width=\linewidth]{changes_aantal_categorie.pdf}
    \caption{Aantal changes per categorie (percentage) \cite{remmen_onderzoeksrapport}}
    \label{fig:changes_aantal_categorie}
\end{figure}

In figuur \ref{fig:incidenten_tijd_gemiddeld_categorie} is de gemiddelde bestede tijd aan incidenten per categorie weergegeven.

\begin{figure}[h]
    \centering
    \includegraphics[width=\linewidth]{incidenten_tijd_gemiddeld_categorie.pdf}
    \caption{Gemiddelde bestede tijd aan incidenten per categorie (percentage) \cite{remmen_onderzoeksrapport}}
    \label{fig:incidenten_tijd_gemiddeld_categorie}
\end{figure}

Hier valt op dat incidenten gerelateerd tot Uninteruptable Power Supplies ('UPS') gemiddeld de meeste tijd in beslag nemen. Wanneer men achter kijkt naar de hoeveelheid incidenten die zijn afgehandeld onder deze categorie wordt duidelijk dat deze slechts sporadisch moeten worden uitgevoerd.

\begin{figure}[h]
    \centering
    \includegraphics[width=\linewidth]{incidenten_aantal_categorie.pdf}
    \caption{Aantal incidenten per categorie (percentage) \cite{remmen_onderzoeksrapport}}
    \label{fig:incidenten_aantal_categorie}
\end{figure}


\subsection*{Ansible}

Ansible is een op Python gebaseerde tool waarmee zeer diverse soorten automatiseringen kunnen worden gerealiseerd dankzij een uitgebreid assortiment aan eenvoudig te gebruiken modules en een YAML gebaseerde "Domain Specific Language" \cite{ansible} \cite{remmen_onderzoeksrapport}.

Ansible heeft de volgende voordelen voor het Expert Team Networking:

\begin{itemize}
    \item Een uitgebreid assortiment van modules en plugins specifiek voor het uitvoeren van geautomatiseerd netwerkbeheer.
    \item Een toegankelijke en minder complexe syntax voor het specificeren van gewenste configuraties.
    \item Modulair plugin systeem waarmee de functionaliteiten kunnen worden uitgebreid en koppelingen met andere applicaties in het bedrijf kunnen worden gerealiseerd.
    \item Automatiseringen gemaakt met Ansible kan worden gebruikt in CI/CD toepassingen door bijvoorbeeld AWX. Met deze software kan een bepaald playbook worden gestart op een tijdschema of vanuit een koppeling met een andere applicatie.
\end{itemize}

Het succesvol gebruiken van Ansible in de praktijk heeft ook verschillende uitdagingen voor het team:

\begin{itemize}
    \item Geen general purpose tool. Ondanks de flexibiliteit die Ansible biedt  is de tool niet geoptimaliseerd voor usecases anders dan configuration management. Het gebruiken van Ansible voor andere usecases kan limitaties van de syntax van de tool opzoeken. Dit kan de gemaakte automatisering moeilijk onderhoudbaar maken door de complexiteiten in de implementatie.
    \item Het kan lastig zijn om de gemaakte automatisering met Ansible te testen. 
\end{itemize}


% \subsection*{DevOps}

% DevOps is een term in de ICT waarmee verwezen wordt naar het hanteren van bepaalde werkwijzes bij het ontwikkelen en beheren van infrastructuur \cite{remmen_onderzoeksrapport}. 

% Een van de belangrijkste principes van DevOps is de samenwerking en communicatie tussen software development en operationele teams \cite{jabbari_what_2016}. Het doel van deze samenwerking is een beroep te doen op elkaars ervaring en kennis over hun domein. Hiermee kunnen de teams elkaar helpen met het bereiken van hun doelen.


% \subsection*{Continuous Practices}\label{subsec:continuous_practices}

% Continuous practices zoals continuous integration, delivery en deployment zijn praktijken in de software development sector die ervoor zorgen dat met hoge kwaliteit, regelmaat en betrouwbaarheid nieuwe features en producten kunnen worden uitgebracht \cite{shahin_continuous_2017} \cite{remmen_onderzoeksrapport}. Deze praktijken kunnen ook door de opdrachtgever gebruikt worden. Hierdoor kan de gemaakte automatisering getest en automatisch ingezet worden. Dit maakt het gemakkelijk voor het team om wijzigingen aan te brengen en toe te passen in productie.

% \begin{figure}[h]
%     \centering
%     \includegraphics[width=\linewidth]{continuous_practices.pdf}
%     \caption{Relatie tussen continuous integration, delivery en deployment \cite{shahin_continuous_2017}}
% \end{figure}

% \textbf{Continuous Integration (CI)} betekent het geautomatiseerd uitvoeren van tests op een codebase nadat hier een wijziging heeft plaatsgevonden. Dit motiveert om regelmatig aanpassingen te maken en publiceren \cite{shahin_continuous_2017}.

% \textbf{Continuous DElivery (CDE)} betekent om op een geautomatiseerde manier nadat de continuous integration tests volledig zijn doorstaan de nieuwe release naar een testomgeving wordt gepubliceerd en vervolgens handmatig naar een productieomgeving. \cite{shahin_continuous_2017}

% \textbf{Continuous Deployment (CD)} gaat een stap verder en publiceert changes structureel en geautomatiseerd naar een productieomgeving. Het gebruik van CD impliceert ook het gebruik van CDE. Alleen is de finale stap van het publiceren naar een productieomgeving niet meer handmatig maar automatisch. \cite{shahin_continuous_2017}


\subsection*{Bevindingen}

Na analyse van de situatie van de opdrachtgever en mogelijkheden met betrekking tot het implementeren van netwerkautomatisering in de praktijk zijn verschillende zaken vastgesteld \cite{remmen_onderzoeksrapport}.

\begin{figure}[h]
    \centering
    \includegraphics[width=\linewidth]{root_cause.pdf}
    \caption{Analyse van de situatie van de opdrachtgever met betrekking tot het implementeren van netwerkautomatisering.}
    \label{fig:root_cause}
\end{figure}

\textbf{Ansible niet bruikbaar op de beheerserver.} Het Expert Team Networking voert beheer uit vanuit een centrale server. Deze server maakt gebruik van Windows waardoor Ansible niet zomaar geïnstalleerd kan worden. Dit zorgt ervoor dat het team Ansible niet kan gebruiken in productieomgevingen.

\textbf{Geen integraties met TOPdesk (Asset Management).} TOPdesk en TOPdesk Asset Management is een belangrijk onderdeel van de manier waarop het Expert Team Networking te werk gaat. Het ontbreken van bestaande integraties met Ansible maakt het minder gemakkelijk om Ansible in de dagelijkse werkzaamheden toe te passen. Met name het ontbreken van een manier waarop een Ansible inventory kan worden gemaakt op basis van TOPdesk Asset Management zorgt ervoor dat Ansible niet gemakkelijk gebruikt kan worden in de dagelijkse werkzaamheden.

\textbf{Lasting om te leren.} Het team ervaart dat het lastig is om te leren over hoe ze Ansible toe kunnen passen in de praktijk. De oorzaak hiervan is met name dat het team nog niet weet hoe de tool impact heeft op hun dagelijkse werkzaamheden. Daarnaast is het nog niet gemakkelijk genoeg om de tool simpelweg uit te proberen in de praktijk. Dit komt omdat binnen het bedrijf uitsluitend met AWX gewerkt wordt in plaats van de CLI tool. Dit maakt het lastiger voor het team om gebruik te maken van Ansible omdat he minder gemakkelijk is om nieuwe een nieuwe automatisering te ontwikkelen met AWX. Dit komt door de volgende redenen:

\begin{itemize}
    \item AWX voegt meer nieuwe concepten toe bovenop het gebruiken van Ansible. De gebruikers moeten leren over versiebeheer en moeten daarnaast de taak aanmaken en configureren in AWX. Dit vraagt om een hoge voorafgaande tijdsinvestering.
    \item Het is minder gemakkelijk om automatisering te ontwikkelen bij het gebruikmaken van AWX omdat de feedback loop een stuk minder direct is (commit maken > pushen > syncen in AWX > taak aanmaken in AWX > taak starten > output uitlezen) dan wanneer deze wordt ontwikkeld en uitgevoerd op de beheerserver.
\end{itemize}


\subsection*{Ontwerp}

Gedurende het onderzoek is vastgesteld dat het niet gemakkelijk is voor het Expert Team Networking om Ansible te kunnen gebruiken in de dagelijkse werkzaamheden. Een van de redenen hiervoor is het ontbreken van integraties tussen Ansible en andere applicaties die worden gebruikt door het team.

Dit ontwerp beschrijft een integratie tussen Ansible en TOPdesk Asset Management \cite{remmen_ontwerp}. Asset Management wordt door het team gebruikt om informatie over de hardware in op te slaan.

De integratie moet het mogelijk maken om automatisch de informatie van Asset Management te verkrijgen en beschikbaar te maken binnen Ansible. Hierdoor hoeft deze informatie niet handmatig te worden ingevoerd. Dit kan namelijk zeer veel tijd in beslag nemen door de grote hoeveelheid aan apparatuur en eigenschappen.

Het systeem moet voldoen aan de volgende criteria:

\begin{itemize}
    \item De informatie over de apparatuur is afkomstig uit de centrale bron van alle informatie met betrekking tot hardware binnen KEMBIT.
    \item De informatie moet actueel zijn.
    \item Configureerbare velden. De werknemer kan opgeven welke velden moeten worden meegenomen.
    \item Gebruikers moeten binnen één werkdag kunnen leren werken met het systeem
    \item De implementatie van het systeem is zo eenvoudig mogelijk om het team niet te belasten met het onderhouden van een zeer complexe codebase.
\end{itemize}

Deze criteria hebben tot de volgende ontwerpkeuzes geleid:

\begin{itemize}
    \item Het systeem wordt ontwikkeld als een Ansible Inventory Plugin. Dit zorgt ervoor dat er geen additionele software nodig is om gebruik te kunnen maken van het systeem.
    \item Maakt gebruik van de TOPdesk Asset Management REST API. Met deze API kunnen actuele gegevens worden opgehaald over de hardware.
\end{itemize}

Het systeem is uitgewerkt tot een Proof of Concept om te testen of het ontwerp functioneel is. Deze moet voldoen aan de ontwerpcriteria die eerder zijn toegelicht. Uiteindelijk heeft het Proof of Concept vastgesteld dat het ontwerp mogelijk is en aan de ontwerpcriteria wordt voldaan.


\subsection*{Adviezen}

Op basis van het uitgevoerde onderzoek worden diverse adviezen uitgebracht naar de opdrachtgever met betrekking tot de vervolgstappen om netwerkautomatisering te kunnen bevorderen in de dagelijkse werkzaamheden van het Expert Team Networking \cite{remmen_advies}.


\textbf{Installeren van WSL op de beheerserver.} Dit maakt het mogelijk voor het team om Ansible in de dagelijkse werkzaamheden te gebruiken.

\textbf{Ontwikkelen van nieuwe playbooks met Ansible CLI.} Dit maakt het gemakkelijk voor het team om gebruik te maken van Ansible ten opzichte van AWX door de directere manier van het uitvoeren van playbooks.

\textbf{Investeren in developmentkennis.} Dit stelt het team in staat om nieuwe werkwijzes en technieken te ontwikkelen en gebruiken die automatisering stimuleren en de huidige werkwijze innoveren.

\textbf{Rekening houden met de kwaliteiten van Ansible.} Ansible is niet geschikt als general purpose scripttaal maar specifiek voor het automatiseren van configuration management. Bij het overwegen van het gebruik van Ansible moet worden nagedacht of het de juiste tool is voor de gewenste usecase.

