Een hectisch en tijdrovend proces waarvoor nu een team van fulltime ingenieurs nodig is om alle kritieke systemen voor een bedrijf te beheren. De focus lag hierbij op betrouwbaarheid en minder op agility en innovatie.
Met het verstrijken van de tijd is het aantal benodigde servers en diensten exponentieel toegenomen. Dit maakt het onmogelijk om door te gaan met het beheren van servers zoals we dat voorheen altijd deden. De introductie van DevOps en concepten als Infrastructure as Code (IaC) bieden hiervoor nieuwe oplossingen.
IaC is de methodologie die wordt gebruikt om datacenters, servers, netwerken, beveiligingsoplossingen, software en websites met code te configureren. Met code kan zoveel mogelijk worden geautomatiseerd en ook gereproduceerd, om zo ook menselijke fouten uit te kunnen sluiten.
Het gebruiken van IaC biedt veel voordelen:
Door de afwezigheid van handmatige interventies en configuratie, zijn implementaties snel, veilig en herhaalbaar.
Elke tool voor versiebeheer zoals Azure DevOps en Github, zorgt voor verhoogde transparantie en maakt het mogelijk dat elk team, overal ter wereld, aan dezelfde code kan werken, waardoor de snelheid om wijzigingen uit te voeren aanzienlijk toeneemt.
De code zelf fungeert als levende documentatie van de infrastructuur die u met IaC heeft ontwikkeld, waarbij elk onderdeel van de infrastructuur met deze code wordt beheerd en aangepast.
Deze aanpak maakt het gemakkelijk om veranderingen in de configuratie te volgen en terug te keren naar een vorige configuratie, mocht dat gewenst zijn.
Omdat alles in en met code is gemaakt, zal elke implementatie via IaC hetzelfde en consistent zijn, in tegenstelling tot handmatige implementaties.
DevOps biedt de mogelijkheid om de hele infrastructuur op een gecontroleerde manier te updaten of in een ‘single go’, met kleinere of grotere updates, zonder nog te hoeven wachten op tijdrovende handmatige handelingen.
Dezelfde code kan worden gebruikt om meerdere omgevingen te creëren, zoals dev, staging en productie. Ook kunnen componenten van deze code worden gebruikt voor het maken van virtuele machines of netwerken.
Kortom, Infrastructure as Code biedt vele mogelijkheden om snelheid, agility en consistentie te verhogen.
Het kan een hele onderneming zijn om Infrastructure as Code te implementeren in een bestaande omgeving, omdat het niet alleen invloed heeft op de huidige configuratie van de infrastructuur, maar ook op huidige integraties en het beheer. Het is sterk aan te raden om te beginnen met IaC op een nieuw project of greenfield omgeving om er vertrouwd mee te raken. Door samen te werken met een Azure Expert MSP zoals Intwo, kunnen we uw specifieke behoeften en uitdagingen in kaart brengen en u ondersteunen tijdens uw overstap naar de cloud.
De eerste stap is het bepalen van de aanpak voor de implementatie en het beheer van de omgeving. Gaat u dezelfde set resources en configuratie implementeren voor meerdere omgevingen, bijvoorbeeld: productie-, acceptatie- en testomgevingen? Is dit een omgeving die vaak wordt bijgewerkt? Gaat u maandelijkse updates uitvoeren voor OS of applicaties binnen de omgeving? Wie gaat code updates en releases uitvoeren?
Afhankelijk van het type omgeving, de doellocatie, de triggers voor het initiëren van veranderingen en de vereiste beheertoegang, wordt de aanpak voor continue integratie en continue implementatie (CI/CD) vormgegeven. Het begrijpen van deze aanpak is cruciaal om de vereisten voor implementatie goed te kunnen duiden. Er zijn een aantal Best Practices voor het definiëren en implementeren van uw IaC aanpak:
Probeer als basisregel elk mogelijk deel van uw vereiste infrastructuur te coderen en te automatiseren. Er zijn verschillende tools beschikbaar voor ook verschillende scenario’s. U kunt bijvoorbeeld de Azure Resource Manager (ARM) template gebruiken om de implementatie van Azure Services te automatiseren, terwijl u PowerShell kunt gebruiken om software op die servers te installeren of Chef/Puppet voor configuratiebeheer. Er zijn ook talloze andere opties zoals YAML, Python, Terraform, Packer, Cloud Foundry die voor u geschikt kunnen zijn.
Het is belangrijk om uw code te schrijven in zo klein mogelijke modules, om deze daarna te combineren met DevOps. Een dergelijke aanpak brengt diverse voordelen met zich mee:
Het gebruik van een tool voor versiebeheer tool zoals GitHub of Azure DevOps biedt de mogelijkheid om wijzigingen in de code of configuratie bij te houden, te beheren en te herstellen als dat nodig is. Versiebeheer helpt zo nodig ook bij het oplossen van problemen en het diagnosticeren van een probleem.
Het is van het grootste belang dat elk stukje code en configuratie wordt getest en beoordeeld. Dit wordt meestal gedaan met preproductie-omgevingen zoals acceptatie en staging om ervoor te zorgen dat alles binnen de gewenste doelparameters valt. Dit biedt de beste garantie dat uw productieomgeving foutloos, stabiel en betrouwbaar zal zijn.
Het belang van documentatie is evident. Het is hierbij echter aan te raden om de code zelf zoveel mogelijk de documentatie te laten zijn. En waarbij de code op een manier is geschreven die gemakkelijk te begrijpen is en op een ordelijke manier van commentaar is voorzien. Als alles geautomatiseerd is, kan verdere documentatie het best beperkt blijven tot alleen operationele kwesties en procedures.
Wanneer de DevOps-methodologie is gedefinieerd volgens de IaC best practices en deze voldoet aan uw specifieke vereisten, is de volgende stap het selecteren van een tool om uw code en implementatie te beheren.
Bij Intwo maken we grotendeels gebruik van Git Repositories en Azure DevOps. Specifiek voor Azure Cloud-omgevingen kan de implementatie en het beheer van volledige omgevingen met de ondersteunende resources worden afgehandeld via ARM-sjablonen en PowerShell-scripts. Azure DevOps is niet de enige optie voor Azure IaC implementaties, maar het is zeker een goede keuze omdat het voorgedefinieerde taken biedt in Azure DevOps pipelines voor ARM en PowerShell, en waarbij nog vele andere Azure en third-party integraties kunnen worden gebruikt.
Zodra een tool (of set van tools) is geselecteerd, begint het testen. Het testen van IaC implementaties is essentieel om vertrouwd te raken met de tooling, scripting, en het updateproces. Er zijn veel hulpmiddelen online beschikbaar om u op weg te helpen, afhankelijk van de tool en uw beoogde linfrastructuur.
Voor veel bedrijven kan de migratie naar de cloud een overweldigende onderneming zijn, of lijken te zijn. Wij helpen u graag om uw specifieke behoeften en uitdagingen in kaart te brengen en u te ondersteunen tijdens uw overstap naar de cloud.
Rest assured. We've got you.
Laten we contact opnemen en samen uw zakelijke uitdagingen aanpakken.