De toekomst van DevOps

De toekomst van DevOps

4 June 2020 door in Development DevOps Security

Sinds 2009, het moment waarop de term DevOps is ontstaan, is de filosofie en methode steeds meer omarmd door veel bedrijven, doordat het een duidelijke verbetering oplevert in de geleverde kwaliteit van applicaties. Daarnaast resulteert het vaak in forse kostenbesparingen bij de ontwikkeling en verbetering van applicaties.

De ontwikkeling van DevOps heeft niet stilgestaan. De gebruikers zijn veranderd en veeleisender geworden. De groei van de cloud adoptie of digitale transformatie blijft doorzetten, het aantal beschikbare tools en hun kracht neemt toe, welke de evolutie van DevOps stimuleren. In dit artikel stip ik een aantal actuele ontwikkelingen in DevOps aan.

De integratie van Security in DevOps: DevSecOps

Veiligheid is altijd al belangrijk geweest, maar met het toenemende gebruik van digitale services en de opslag van gevoelige data (medische gegevens, BSN nummers, betaalgegevens, etc.), is het cruciaal geworden. Gebruikers willen weten waar hun gegevens zijn opgeslagen en hoe ze worden beheerd. Daarnaast heeft de introductie van de AVG (GDPR) bedrijven ertoe gedwongen bewust om te gaan met de privacy en veiligheid van gegevens. DevOps mag niet de oorzaak zijn dat deze veiligheid in het geding komt.

Door de gewenste en beloofde snelheid van DevOps en in zekere mate ook Agile development wil je voorkomen dat een project of een belangrijke functie wacht op goedkeuring van een SecOps (security & operations) team. SecOps vertraagt het proces of in het ergste geval wordt een nieuwe functionaliteit afgewezen en dan kan je weer opnieuw beginnen. We willen natuurlijk voorkomen dat al het werk opnieuw gedaan moet worden omdat een of ander “klein” security detail door ontwikkelaars over het hoofd is gezien. Daarom moeten we voor kritieke projecten DevOps integreren met SecOps, waarbij vanaf het begin beveiliging onderdeel is van het proces.

Door vanaf het begin rekening te houden met beveiligingseisen en beveiligingsteams te betrekken, worden risico’s op lekken of vertraging voorkomen. Dit kan worden opgelost door beveiligingstests op te nemen en te automatiseren in de pipeline (of assemblagelijn, hierop kom ik verderop terug in dit artikel). Door security te integreren in het DevOps proces behoud je de snelheid zonder dat het ten koste gaat van de veiligheid (dit heet DevSecOps).

NoOps en DevSecOps

NoOps betekent geen beheer. De groei van serverless en nocode oplossingen en nieuwe automatiseringsmogelijkheden maken NoOps mogelijk. Het idee is om alle onderdelen van het cloudbeheer te elimineren en de integratie tussen ontwikkeling en infrastructuur te verbeteren. De adoptie van dit proces is meestal gedreven door de personeelskosten van DevOps engineers versus developers. De eerste groep is schaars en moeilijk vast te houden.

Het volledig elimineren van het operationele beheer zorgt voor nog meer snelheid en een kortere time to market, maar brengt wel nieuwe uitdagingen met zich mee: monitoring en beveiliging. Als alles is geautomatiseerd en aangedreven wordt door code, wie bewaakt deze zaken dan? De oplossing voor het probleem is opnieuw automatisering. Elk onderdeel moet geautomatiseerd worden, inclusief monitoring en beveiliging.

DevSecOps is daardoor nog belangrijker als je een NoOps-proces hebt.

Van pipelines naar assemblagelijnen

Pipelines zijn nog steeds geschikt voor projecten, maar kunnen in veel situaties beperkend zijn. Wanneer meerdere teams samenwerken en complexe scenario’s beheren met meerdere afhankelijkheden (van applicaties, beveiliging, enz.) is een eenvoudige pipeline niet meer afdoende. Assemblagelijnen zijn een reactie hierop. Deze fungeren als lijm om alle stukken bij elkaar te houden.

Pipelines

Een pipeline voorziet in het eenvoudigste geval voor het ontwikkelen en releasen van twee applicaties (een frontend en de API-backend). Vaak worden ze beheerd door verschillende personen. Het pipeline model is perfect voor het volgen van lineaire modellen (commit> compile> test> deploy) waarbij een project gemakkelijk kan worden weergegeven met een eenvoudige stroom.

DevOps pipeline CI CD

In het diagram zien we de code, goedgekeurd door een pull request door de CI/CD-tool gaat en daarmee gebouwd en getest wordt. In het geval van een fout tijdens de build-naar-testfase moet die worden opgelost vóór de implementatie (deploy fase).

Assemblagelijnen

De nieuwe aanpak is een analogie met de industrie en wordt de ‘assemblagelijn’ genoemd. Net als in de fysieke assemblagelijn of productielijn levert elke afdeling zijn bijdrage, door ‘een stuk’ aan het product toe te voegen.

Bij deze aanpak zijn alle mensen die aan dit proces deelnemen vanaf het begin betrokken en is er vanaf het begin een duidelijke stroom. Op deze manier kunnen meerdere teams en disciplines samenwerken om complexe applicaties en afhankelijkheden te beheren.

Assemblagelijn DevSecOps

We hebben hiervoor een ‘supertool’ nodig die al deze interactie beheert. Gebaseerd op dezelfde analogie van de industrie noemen we het een productie-eiland (Assembly Island). Hiervoor is helaas nog geen heilige graal beschikbaar. Je zal dus met behulp van verschillende tools je eigen “supertool” moeten creëren. Deze tools moeten onder andere de vertrouwelijkheid kunnen controleren van de broncode, of de services up to date zijn en of de code voldoet aan security standaarden.

Infra as Code

Broncode is bijzonder prettig om mee te werken: het bevat een versienummer, kan worden gekopieerd en geplakt, kan via e-mail worden verzonden en als je het twee keer uitvoert onder dezelfde omstandigheden, krijg je hetzelfde resultaat. Historisch gezien geldt dit helaas niet voor infrastructuur: deze is zelden overal hetzelfde, slecht verplaatsbaar en arbeidsintensief om te repliceren.

Tegenwoordig behoort infrastructure as code tot de standaard als je een DevOps proces hanteert. Hiermee definieer je in code je infrastructuur en kan je het infrastructuurbeheer automatiseren. Tools zoals Ansible, Terraform, Juju of een andere configuration orchestration en management tool worden hiervoor ingezet. Een declaratieve beschrijving van de infrastructuur zoals in Kubernetes is zeer handig om te begrijpen hoe dingen werken zonder dat je moet leren hoe serverconfiguraties werken of die te reverse engineren door de configuratiebestanden door te spitten.

Door in het begin van het assemblageproces de infrastructuur op een repliceerbare wijze te automatiseren maak je de volgende stappen eenvoudiger. Daarnaast is het zeer geruststellend dat je eenvoudig een nieuwe omgeving kan creëren voor disaster recovery- en testdoeleinden.

Conclusie

Idealiter wordt elk onderdeel, elke stap die er nodig is om veilig nieuwe applicaties, functies of functionaliteiten live te zetten en te onderhouden geautomatiseerd. Tevens moet automatisering continu doorontwikkeld worden om de steeds veranderende vraag van de klanten en markt zo goed mogelijk te kunnen beantwoorden. De complexiteit neemt toe, maar door juist elke stap te fragmenteren zoals in een LEAN productielijn wordt het aanpassingsvermogen hoger en de controle verhoogd.

DevOps, DevSecOps of NoOps; het gaat niet om de termen, het gaat om de filosofie die erachter zit. Betere integratie van het geheel in een gestroomlijnd en transparant proces.


Kwaliteit. Betrouwbaar. Betrokken.
  • 24/7 service support
  • Nederlandse datacenters
  • ISO 27001 gecertificeerd
Bel me terug