Met onze DevOps-methodologie en automatiseringsstandaarden hebben we een van onze prominente klanten, Brunel, geholpen bij de implementatie van een nieuwe service in Azure.
We vertellen u graag meer over deze manier van automatiseren en de voordelen daarvan, en dan met name over het gebruik van Azure DevOps.
Brunel wilde virtuele desktopdiensten om medewerkers over de hele wereld veilig toegang te geven tot een groot aantal regionale en wereldwijde bedrijfstoepassingen. Brunel leverde vergelijkbare diensten met traditionele equivalenten, maar efficiëntie, schaalbaarheid, kosten en flexibiliteit waren de belangrijke punten waarvoor een oplossing moest komen.
Er waren ook een aantal operationele uitdagingen. Naast dat elke regio andere applicaties nodig had, moest ook rekening gehouden worden met:
Het creëren, beheren en bijwerken van de source images was een handmatig en tijdrovend proces dat een IT-afdeling gemakkelijk kan overbelasten.
Gelukkig kunnen deze taken met Azure DevOps en automatisering worden verlicht. Veel terugkerende en repetitieve taken konden we hiervoor automatiseren. Dit stelde ons in staat om veranderingen en updates door te voeren en ook direct nieuwe functionaliteit toe te voegen, wereldwijd en binnen een aantal uur. En dit alles zonder impact op de gebruikerservaring en beschikbaarheid van diensten. Zouden we dit allemaal handmatig hebben gedaan dan zou dit aanzienlijk langer hebben geduurd en veel meer resources hebben gevraagd.
De grootste voordelen voor de klant:
DevOps biedt een lean en agile aanpak voor het opleveren van een infrastructuur of software, waarbij de overgang van ontwikkeling naar operations vrijwel naadloos verloopt.
Zodra is besloten om met DevOps te werken, kan voor de eerste implementatie het best gestart worden met een greenfield omgeving of project. Voordat een toolset wordt gekozen, moet eerst het algemene proces, de teams en de logistiek voor de DevOps-aanpak worden gedefinieerd. Kijk daarna dan ook eens naar de al aanwezige toolsets voor het type omgeving of project. Als u resources inzet in Azure, zijn er al veel tools beschikbaar, met ingebouwde integratie en ook veel documentatie, om implementaties te vergemakkelijken.
Bij Intwo werken we voor nieuwe Azure-implementaties graag met Azure DevOps en Git-repository’s.
Infrastructure as Code (IaC) is het proces van het beheren en inrichten van Azure-services via definitiebestanden (leesbaar door Azure Resource Manager in het geval van Azure Cloud), in plaats van via handmatige interactie. Er zijn verschillende manieren om dat te bereiken op het Azure-platform. Het onderliggende platform staat bekend als Azure Resource Manager.
Azure Resource Manager is de implementatie- en beheerservice voor Azure Cloud. Het biedt de beheerlaag waarmee u op een programmeerbare manier met het platform kunt communiceren om bronnen te maken, bij te werken of te verwijderen.
Azure Resource Manager biedt u diverse mogelijkheden:
Deze mogelijkheden zijn los te gebruiken maar ook in elke mix, afhankelijk van de eisen. Na het kiezen van de gewenste service (ARM Templates, PowerShell, enz.), kunnen de benodigde resources worden geregistreerd en een conventie voor de naamgeving van de resources worden afgesproken.
IaC kan ook worden gebruikt om de levenscyclus van resources te beheren, zoals het creëren, configureren, updaten of verwijderen van resources.
Eenmaal gestart met code, is ook een centrale plaats nodig voor de opslag daarvan. Ook hiervoor zijn diverse opties mogelijk:
Elk platform heeft een aantal unieke kenmerken, maar ze bieden ook allemaal een aantal basisfuncties zoals versiebeheer, branching, repositories en access management.
Wij geven de voorkeur aan Microsoft Azure DevOps, en gaan daar hieronder verder op in.
Ook bekend als ‘repo’. Dit is een plaats waar alle code zich bevindt. Voor diverse projecten kunnen ook diverse repo’s worden aangemaakt.
Branches make it easy to isolate work in progress from completed work, production from testing, and so on.
Het ‘vertakken’ maakt het ook gemakkelijker om werk in uitvoering te isoleren van voltooid werk, productie, testen, enzovoort.
Een goede strategie voor het werken met branches zorgt ervoor dat alle wijzigingen altijd eerst getest en geverifieerd worden voordat ze naar productie gaan. Je kunt de strategie voor het gebruik van branches baseren op een aantal eenvoudige regels:
Verzin een goede conventie voor de naamgeving, zodat iedereen deze makkelijk kan herkennen. Bijvoorbeeld:
Nu we Infrastructure as Code (IaC) gebruiken voor o.a. templates en scripts, hebben we ook een manier nodig om deze code uit te voeren. Dit is waar Azure pipelines zijn waarde bewijst, met het combineren van continue integratie en continue levering, oftewel continuous integration en continuous delivery (CI/CD). Ook het testen kan hieraan worden toegevoegd.
Pipelines kunnen worden gebruikt om voor de infrastructuur diverse mogelijkheden in te stellen, zoals landing zones, services, en configuratie van die services.
U kunt de Azure pipelines op strategische wijze organiseren, bijvoorbeeld door een pipeline te maken om een landingszone uit te rollen, een afzonderlijke voor IaaS implementatie en configuratie, of u kunt pipelines maken voor ontwikkel- en productie-omgevingen.
Pipelines worden verder onderverdeeld in jobs. Er is bijvoorbeeld een job om een netwerk aan te maken, een job om en VPN-gateway aan te maken, enz.
Jobs worden verder onderverdeeld in taken. Een Virtuele Machine (VM) kan worden aangemaakt in een eerste taak. Het toevoegen van deze VM aan een domein kan in de volgende taak plaatsvinden
Voor het automatiseren van elke implementatie zijn credentials nodig. De opslag en het gebruik van deze credentials zijn zeer belangrijk om de toegang tot de omgeving veilig te houden.
Het opslaan van credentials in een Azure Key Vault as Secrets is een goede manier om te bepalen wie waarvoor toegang heeft, voor de tracking daarvan en om ervoor te zorgen dat deze voor de toolset beschikbaar zijn.
Azure DevOps kan op een aantal manieren integreren met Azure Key Vaults. Een eenvoudige manier is door een Library Variable Group aan te maken in Azure DevOps. Het specifieke abonnement, de key vault en de sleutel(s) kunnen vervolgens worden geselecteerd als variabelen voor de pipelines.
Wanneer de variabele groep is gekoppeld aan een pipeline, kunnen de sleutels als variabelen voor elke automatisering fungeren. Aan het begin van de pipeline job worden de waarden van de opgenomen sleutels rechtstreeks opgehaald uit de Azure Key Vault. Deze mogelijkheid voor het rechtstreeks koppelen en ophalen van credentials elimineert de noodzaak om wachtwoorden, gebruikersnamen of certificaten in code of scripts op te slaan.
Azure DevOps biedt handige oplossingen voor beheer. Zo kunnen binnen Azure DevOps ‘boards’ worden gebruikt om bijvoorbeeld werk items, backlogs en issue tracking te beheren. Scrum en agile methodes worden hierbij standaard ondersteund om het werken tussen medewerkers en teams makkelijker te maken. Ook kan met DevOps alles op een centrale plaats worden beheerd, zoals voor technische implementaties en project items.
Over het algemeen stelt Azure DevOps ons in staat om processen makkelijk te herhalen en fouten te minimaliseren, wat de beschikbaarheid en betrouwbaarheid van diensten en een voorspelde uitkomst garandeert. Er zijn veel manieren om een omgeving te automatiseren en te beheren, maar Azure DevOps is hierbij voor ons van toegevoegde waarde gebleken.
Laten we contact opnemen en samen uw zakelijke uitdagingen aanpakken.
Rest assured. We've got you.