Dit is een vertaling van een blog geschreven door Backblaze, lees hier de Engelse versie.
Onlangs hebben we aangekondigd dat Backblaze B2 Cloud Storage een provider voor het Terraform registry heeft gelanceerd om ontwikkelaars te ondersteunen in hun Infrastructure as Code (IAC) -werkzaamheden. Met de Backblaze Terraform provider kan je B2 Cloud Storage-resources rechtstreeks vanuit een Terraform-configuratiebestand inrichten en beheren.
Deze blog is geschreven naar aanleiding van een reactie op onze GitHub-repository van Gert-Jan van de Streek, medeoprichter van Avisi, een Nederlands softwareontwikkelbedrijf. Na het plaatsen van zijn reactie ontstond er een gesprek waaruit deze blog is ontstaan. We spraken met Gert-Jan om erachter te komen hoe zijn team IaC-processen uitvoert en de Backblaze Terraform provider gebruikt om efficiëntie, nauwkeurigheid en snelheid tijdens de DevOps-lifecycle te verhogen. We hopen dat deze inzichten ook handig zijn voor andere softwareontwikkelaars die IaC overwegen in hun werk.
Wat is Infrastructure as Code (IaC)?
IaC ontstond in de late jaren van 2000 als een reactie op de toenemende complexiteit van schaalbare softwareontwikkelingen. In plaats van infrastructuur te leveren via de gebruikersinterface van een provider, kunnen ontwikkelaars de infrastructuur voor applicaties ontwerpen, implementeren en uitrollen met dezelfde tools en best practices die ze gebruiken om software te schrijven.
Opslag inrichten voor ''Apps That Fill Gaps''
Het team van Avisi ziet softwareontwikkeling als een sport. Hun langetermijnvisie is net zo groot en gedurfd als die van een deelnemer aan de Olympische Spelen: het beste softwareontwikkelbedrijf van Nederland zijn.
Samen met twee studievrienden heeft Gert-Jan Avisi in 2000 opgericht. Ze zijn gespecialiseerd in projectbeheer op maat, procesoptimalisatie en ERP-softwareoplossingen, en bieden ondersteuning bij implementatie, installatie en configuratie, integratie en maatwerk, en training en ontwikkeling van plug-ins. Ze bouwden het bedrijf op door zich te concentreren op security, privacy en kwaliteit, waardoor zij projecten aan konden gaan met openbare nutsbedrijven, zorgaanbieders en organisaties zoals de Koninklijke Notariële Beroepsorganisatie (KNB) - instanties die stabiele, veilige en private productieomgevingen eisen.
Met dezelfde focus is Avisi bezig met productontwikkeling, de bedrijfstak die Gert-Jan leidt, waar ze ''apps that fill gaps'' creëren. Met deze slogan omschrijft hij de apps die zijn team publiceert in de Atlassian en monday.com Marketplace. ''We weten dat er veel ontbreekt in de tooling van Atlassian and monday.com, omdat we het zelf ook tijdens onze dagelijkse werkzaamheden gebruiken. Ons doel is om deze ontbrekende functionaliteiten aan te bieden- apps to fills gaps'', zegt hij.
Met meerdere ontwikkelomgevingen voor elke applicatie, wordt het beheren van opslag een onderhoudsprobleem voor geavanceerde DevOps-teams zoals die van Avisi. Stel dat Gert-Jan 10 applicaties heeft om uit te rollen. Elke applicatie heeft test-, staging- en productieomgevingen en elke applicatie moet uitgerold worden in drie verschillende regio's. Dit betekent dat er 90 individuele opslagconfiguraties, 90 kansen om een fout te maken en 90 keer het werk is om één bucket te leveren.
Infrastructuur in geavanceerde DevOps-omgevingen: een voorbeeld
10 applicaties x 3 omgevingen x 3 regio's = 90 opslagconfiguraties
Door de best practices van DevOps te volgen, schrijft Avisi herbruikbare code, waardoor veel handmatige handelingen en ruimte voor fouten worden geëlimineerd. “Het was erg belangrijk voor ons om IaC te hebben, zodat we niet rondklikken in gebruikersinterfaces. We hebben stabiele test-, staging- en productieomgevingen nodig waar we niet voor verrassingen komen te staan”, legt Gert-Jan uit.
Terraform versus CloudFormation
Gert-Jan had al geëxperimenteerd met Terraform, een open-source IaC-tool ontwikkeld door HashiCorp, toen Avisi besloot een deel van hun infrastructuur te verplaatsen van Amazon Web Services (AWS) naar Google Cloud Platform (GCP). Het Avisi-team gebruikt Google-apps voor bedrijven, dus de migratie maakte het configureren van toegangsrechten eenvoudiger.
Natuurlijk werken Amazon en Google niet altijd goed samen - CloudFormation, de eigen IaC-tool van AWS, wordt niet op alle platforms ondersteund. Omdat Terraform open-source is, kon Avisi IaC implementeren met GCP en een breed scala aan integraties van derden, zoals StatusCake, een tool die ze gebruiken voor URL-monitoring.
Backblaze B2 + Terraform
Op hetzelfde moment dat Avisi een deel van hun infrastructuur van AWS naar GCP verplaatste, besloten ze een extra openbare cloudprovider in te richten om als off-site opslag te dienen als onderdeel van een 3-2-1-strategie (drie kopieën van gegevens op twee verschillende media, waarvan één off-site). Gert-Jan implementeerde Backblaze B2 en noemde positieve recensies, betaalbaarheid en het Europese datacenter Backblaze als belangrijke beslissingsfactoren.
Veel van Avisi's klanten zijn gevestigd in de Europese Unie en zijn vaak onderworpen aan vereisten voor dataopslag die bepalen dat data op specifieke geografische locaties moeten blijven. Backblaze stelde Gert-Jan in staat om een 3-2-1-strategie te realiseren voor klanten waarbij data-opslag in de EU voorop staat.
Toen Backblaze een provider naar het Terraform-register publiceerde, begon Avisi onmiddellijk met het inrichten van Backblaze B2-opslagbuckets met Terraform. “De Backblaze-module op Terraform is puur goud”, zegt Gert-Jan. “Het zijn ongeveer vijf regels code die ik kopieer uit een ander project. Ik configureer het, hernoem een paar variabelen, en dat is het.”
Real-time opslagsynchronisatie met Terraform
Gert-Jan schreef de cloudfunctie om te synchroniseren tussen GCP en Backblaze B2 in Clojure, een functionele programmeertaal die bovenop Node.js draait. Clojure compileert naar Javascript, dus het werkt in zowel Java-omgevingen als Node.js of browseromgevingen. Dat betekent dat de taal zowel aan de serverzijde als aan de clientzijde beschikbaar is voor Avisi.
De cloudfunctie heeft ervoor gezorgd dat off-site tiering bijna onmiddelijk kon plaatsvinden. Nu wordt ieder nieuw geschreven bestand opgepakt door de cloudfunctie en overgebracht naar Backblaze. ''Je moet je comfortabel voelen bij hetgeen dat je uitrolt en waar je het uitrolt. Omdat het code is, doet de Backblaze Terraform provider het werk voor mij. Ik vertrouw erop dat alles op z'n plek is'', aldus Gert-Jan.
Eenvoudigere lifecycle regels en Code Reviews
Naast het verminderen van handmatige handelingen en het vergroten van de nauwkeurigheid, maakt de Backblaze Terraform provider het instellen van lifecycle regels om te voldoen aan controlekaders zoals de General Data Protection Regulations (GDPR) / Algemene Verordening Gegevensbescherming (AVG) en SOC 2-vereisten veel eenvoudiger. Gert-Jan heeft één herbruikbare module geconfigureerd die voldoet aan de regelgeving en kan op elk project dezelfde configuraties toepassen. In een SOC 2-audit of wanneer klanten willen weten hoe hun gegevens worden verwerkt, kan hij eenvoudig de code voor de Backblaze B2-configuratie leveren als bewijs dat Avisi back-ups bewaart en adequaat versleutelt in plaats van schermafbeeldingen van verschillende gebruikersinterfaces te verzenden.
Het gebruik van Backblaze via de Terraform provider stroomlijnde ook codebeoordelingen. Voorafgaand aan de Backblaze Terraform provider hadden de teamleden van Gert-Jan minder inzicht in de opslag die was opgezet en worstelden ze met de naamgeving van ecosystemen. "Met de Backblaze Terraform provider is mijn code volledig reviewbaar en dit is een groot pluspunt", legde hij uit.
Opslagbeheer vereenvoudigen
Door IaC-praktijken te omarmen en de Backblaze Terraform-provider te gebruiken, kan Gert-Jan zich specifiek richten op de groei van het bedrijf in plaats van honderden opslagbuckets met de hand in te stellen. Hij bespaart zo'n acht uur per omgeving wat op basis van het bovenstaande voorbeeld neerkomt op een totale besparing van 720 uur. "Terraform en de Backblaze-module hebben de tijd die ik aan DevOps besteed met 75% teruggebracht tot slechts een paar uur per app die we uitrollen, zodat ik genoeg tijd heb om mij bezig te houden met mijn bedrijf." zei hij.