Gebruik jij al Infrastructure as code (IaC)?

Tegenwoordig innoveren meer en meer bedrijven terecht in data en software ontwikkeling. Bij Hosted Power juichen we deze evolutie toe en innoveren wij mee, vertrekkend vanuit de infrastructuur. Zo vragen we ons constant af waar software ontwikkelaars en data experten naar op zoek zijn. We zijn ervan overtuigd dat als we deze vragen correct beantwoorden, we ook in staat zijn om nauwe samenwerkingen te bekomen tussen deze rollen.

Door ons altijd open te stellen, leren we meer en meer elkaars taal spreken en zullen onze kwaliteit en snelheid meer en meer verweven raken met jouw data en software.

De grens tussen infrastructuur (operations) en applicaties is al jaren aan't vervagen, hoewel het zelf tot op heden nog twee aparte werelden betreft. Bedrijven die actief inzetten op innovatie, stoppen moeite in het naar elkaar toe laten groeien van Dev (software) en Ops (infrastructuur) teams. Niet dat DevOps een nieuwe terms is, maar de technologieën om deze schakel tussen beide werelden te versterken en op termijn zelfs zal doen vervagen, evolueren aan een rotvaart.

Makkelijk voorbeeld is dat sinds infrastructuurvirtualisatie de standaard is geworden, infrastructuur eigenlijk programmeerbaar is geworden. Ofwel: infrastructure as code.

iac

Wat is infrastructure as code?

Elk bedrijf is afhankelijk van software, en deze software is op haar beurt weer afhankelijk van IT-infrastructuur. Deze infrastructuur mag je zien in de brede zin van het woord. Zo gaat het over netwerken, servers, storage, permissies en security; het hele spectrum.

Software wordt gemaakt met code. Hardware draait tegenwoordig meestal en vaak virtueel in de cloud. Deze combinatie opent deuren. Je kan namelijk je infrastructuur gaan programmeren.

Infrastructure as Code (IaC) of vrij vertaald "programmeerbare infrastructuur" betekent het definiëren en beheren van infrastructuur door middel van code. Zo'n infrastructuur wordt beschreven als objecten met eigenschappen. Vaak worden deze objecten omschreven in YAML, XML of JSON, maar vaak is er ook ondersteuning om dit in je favoriete programmeertaal te doen zoals bijvoorbeeld Python.

Deze "objecten" worden vervolgens losgelaten op een omgeving en de state wordt gesynchroniseerd. Dit is hoe IT-componenten worden aangemaakt, geüpdatet of verwijderd. Je programmeert eigenlijk wat je wilt en synchroniseert dat naar de cloud omgeving, bijvoorbeeld onze Hosted Power cloud, AWS of Azure.

AWS heeft onderdelen die "IaC provisioning service" heten, dewelke AWS frameworks bevatten. Het gaat hier over SAM en AWS CDK. Beide frameworks geven output in Cloudformation, waarmee je eigenlijk een CloudStack creëert binnen een AWS-account. Per stack kan je vervolgens bepaalde acties gaan uitvoeren.

Imperatief of declaratief?

Om de principes van IaC te begrijpen, is het belangrijk dat je het verschil weet tussen imperatief en declaratief.
Met een imperatieve stijl ga je stap voor stap te werk en declaratief gaat enkel je eindstatus vastleggen, zonder hierbij de stappen van punt A naar punt B vast te leggen.

Een declaratieve stijl is in het bijzonder handig als je een OTAP* omgeving hebt. Je hebt voor testredenen namelijk graag dezelfde infrastructuur, zodat je software zich hetzelfde gedraagt.
Als je elke stap zou moeten omschrijven per omgeving, sluipen er geheid fouten in, wat tijdrovend is.

*OTAP: ontwikkeling, testing, acceptatie & productie

Mutable of immutable?

Nog enkele termen die belanrijk zijn als je bezig ben met IaC. Mutable en immutable.

Mutable wil eigenlijk zeggen dat je meer klassiek te werk gaat bij het behandelen van je infrastructuur. Meerdere mensen kunnen wijzigingen aanbrengen en dus ook fouten maken. Issues vereisen research, wat veel geld kan kosten.

Immutable infrastructuur is "onbeweeglijk" en kan eigenlijk niet aanpassen. Dit klinkt beperkend, maar is het niet. Je laat software versie 1 en software versie 2 simultaan naar elkaar draaien, test waar nodig, je stopt met software versie 1 en neemt versie 2 in gebruik. Immatable infrastructuur heeft beveiligingsvoordelen, gedraagt zich schaalbaarder en is vrijer van fouten.

IaC zorgt ervoor dat bedrijven in staat worden gesteld om hun operationele omgevingen efficiënter te beheren.

Infrastructure as a Code

In het kort: Waarom kiezen voor Infrastructure as Code?

  • Jouw developers ontzorgen:
    Code Reviews
    Schaalbaarheid
    Eenvoud
    Versiebeheer
  • Rollbacks
  • Security by design
  • Automatisatie

Met IaC werk je snel en met een hoge kwaliteit. Je verkleint de kans dat er iet misloopt en als er iets gebeurt, kan het snel worden rechtgezet. Dit resulteert in meer snelheid en hoge kwaliteit.

Toepassingen

Het is niet altijd makkelijk om een overzicht te krijgen van de beschikbare frameworks. Daarom lijsten we hierbij enkele veelgebruikte toepassingen op.

  • Terraform: configuratie-orchestratie. Terraform coöordineert de configuratie van complexe omgevingen en clusters
  • Ansible/Chef: helpt je bij het bouwen van infrastructuur en het implementeren en configureren van applicaties
  • Puppet: soorgelijk aan Ansible, maar gebruik makend van de programmeertaal Ruby
  • Helm: deze tool helpt je om Kubernetes omgevingen te managen
  • AWS Cloudformation, SAM & CDK: Manager van AWS infrastructuur
  • Azure resource manager : manager van Azure

Conclusie

Bij Hosted Power is IaC helemaal verweven in elke oplossing die wij bouwen en zijn we bereid om jullie tegemoet te komen als je applicatie specifieke eisen stelt. IaC helpt om kwaliteit en snelheid te leveren, en laat dat net enkele van onze unieke voordelen zijn!

Wil je meer weten over deze onderwerpen?