Via de self service portal van een IaaS-cloud kun je servers deployen zonder je druk te maken over de onderliggende infrastructuur. Maar wil je ook het beheer van virtuele servers uit handen geven, dan kan dit helaas niet met een druk op de knop. Want daar moeten allerlei tools voor geïnstalleerd en geconfigureerd worden. Dat gebeurt niet automatisch en dus ben je op jezelf aangewezen. Ziedaar het probleem waar een team van ontwikkelaars en beheerders van KPN een oplossing voor ging bedenken en bouwen.

Het doel is dat klanten zelf hun servers via een nieuw self service portal volledig geautomatiseerd bij de cloud-provider in beheer kunnen brengen. Dit wordt ook wel Cloud-enabled Managed Hosting genoemd. Het ontwikkelen van dit systeem is enorm complex en een ware ontdekkingstocht voor ontwikkelaars en beheerders.

Geautomatiseerd beheer

Straks moeten klanten hun gegevens van hun cloud-abonnement kunnen ingeven, waarna het nieuwe systeem automatisch een verbinding met de Iaas-cloudomgeving zal opzetten. Daarna moeten ze in een overzichtelijke GUI zien welke servers er allemaal in draaien. "Vervolgens kunnen ze aangeven welke servers ze bij ons in beheer willen geven", vertelt Geerd Kakes, consultant bij KPN. "Dat vindt vervolgens volledig geautomatiseerd plaats. Het enige wat ze zelf hoeven te doen, is via een weblink een agent op het systeem laden en op install kikken. De rest gaat vanzelf."

Onder water wordt een puppet-agent geïnstalleerd, die verbinding maakt met de puppet-master. "De installer voor de puppet-agent wordt on the fly gegenereerd en werkt alleen op het betreffende systeem." Het beheer kan dus nooit naar een verkeerd systeem uitgerold worden. "Vervolgens worden de agents van de tools uitgerold, waarna de server beheerd kan worden. Wij bouwen een veilig en volledig geautomatiseerd systeem, waarbij je als klant altijd in control bent. Je regelt alles zelf via het self service portal."

Hoge complexiteit voor de techneut en eenvoud voor de klant

Omdat er veel tools nodig zijn om een systeem te beheren, is het een complexe uitdaging om dit systeem te bouwen en alles naadloos te laten samenwerken. Denk aan zaken als patching, puppets, monitoring, centrale opslag van logbestanden, het doorgeven van alerts, het installeren van agents en het uitvragen van de IAAS-omgeving via het self service portal. Geerd Kakes: "Wat wij doen is al deze technologie aan elkaar knopen en dat is een behoorlijk grote uitdaging. We bouwen een heel complex systeem met gigantisch veel verbindingen en tegelijkertijd moet het systeem voor de klant en eindgebruiker gebruiksvriendelijk zijn. Je hebt als ontwikkelaar dan ook veel kennis van de achterliggende technologieën nodig en daarnaast de ontwikkelvaardigheden om het allemaal met elkaar te verbinden."

Wat het voor ontwikkelaars extra leuk maakt, is dat vanaf scratch is begonnen. Je hebt dus niet te maken met legacy-systemen. "We maken tijdens de bouw ook een duidelijke keuze. Alle tools die wij gebruiken moeten over een API beschikken, zodat we ze kunnen koppelen. Want anders zijn de beheerprocessen niet te automatiseren. Als een tool niet cloud ready is, beginnen we er gewoon niet aan."

Nieuwste technologieën

Bij de bouw van het systeem worden de nieuwste technologieën gebruikt. "Voor de back end ontwikkelen we in Node.JS en Angular.JS gebruiken we voor de front end", vertelt Geerd Kakes. "Javascript is momenteel sterk in opkomst voor het ingewikkelder programmeerwerk. Je kunt er heel snel in ontwikkelen en er complexe taken efficiënt mee uitvoeren. Door de lage overhead wordt de infrastructuur ontlast."

Daarnaast moet je als ontwikkelaar snel een andere taal kunnen oppakken als dat nodig is voor een bepaalde tool. "Je moet je snel kunnen aanpassen om mee te gaan met nieuwe ontwikkelingen. Behalve dat doe je hier veel kennis op over IT-infrastructuur, het beheer van IT-omgevingen en hoe je dit alles kunt automatiseren. Met als doel het bouwen van een systeem dat eenvoudig is in het gebruik voor de klant."

Agile en Devops

Er wordt gewerkt volgens continuous integration. De volledige pijplijn van ontwikkeling tot en met productie is geautomatiseerd en ingericht via Jenkins, Jira en Bit Bucket. Geerd Kakes: "Ontwikkelde code wordt automatisch deployed naar de juiste omgevingen voor unittests, integratietests, acceptatie en uiteindelijk productie. Als ontwikkelaar kun je daardoor heel snel nieuwe functionaliteit beschikbaar maken en wijzigingen doorvoeren."

Verder wordt er agile gewerkt via Devops. "Ontwikkeling en beheer ligt bij hetzelfde team. We moeten dus wel beide werelden kennen en snappen. Dankzij Devops zijn we agile en in staat om continu door te ontwikkelen. Hierbij is het extra belangrijk dat we kwaliteitsprincipes hanteren. Zo zorgen we ervoor dat we niet alleen snel kunnen ontwikkelen, maar dat wat we opleveren ook voldoet aan eisen die gesteld worden aan betrouwbaarheid en kwaliteit."

Vervolgstappen

Eind dit jaar staat een pilot gepland om het systeem te testen met klanten, waarna het naar verwachting begin tweede kwartaal 2016 beschikbaar komt. Maar daarmee is het werk nog lang niet afgerond. "We zijn relatief eenvoudig begonnen met het besturingssysteem. Hierna pakken wij de firewalls op, het back-upplatform, de databases en daarna is disaster recovery aan de beurt. Zo gaan wij steeds een stapje hoger in de keten."

Houd jij ook van complexe uitdagingen? Klik dan hier om aan de slag te gaan als DevOps engineer bij KPN.