Skip to main content

Softwareprofessionals staan erom bekend dat ze goede namen bedenken voor dingen die eigenlijk gewoon logisch zijn. “Platformengineering” is een recent voorbeeld, waarbij gevestigde principes worden gecombineerd met de innovatie van cloudnative raamwerken.

In de kern draait platformengineering om het verenigen van softwareontwikkeling door een consistente, beheerde toolset te gebruiken en zo de basis te leggen voor een hogere teamproductiviteit. Meer volwassen sectoren weten dit al tientallen jaren.

Wat is platformengineering?

Platformengineering is het ontwerpen, bouwen en beheren van de onderliggende software-infrastructuur en systemen voor applicaties en diensten. Het omvat het beheren van fysieke en cloudgebaseerde infrastructuur, het automatiseren van processen, het integreren van verschillende tools, het waarborgen van beveiliging en naleving, het bewaken van prestaties en het handhaven van een hoge beschikbaarheid en mogelijkheden voor herstel na calamiteiten.

Continue Reading for Free

Create a free account to finish this article, plus get ongoing access to timely insights and practical resources.

Dit vakgebied is cruciaal voor het waarborgen van robuuste, schaalbare en veilige technische omgevingen die efficiënte applicatieontwikkeling en implementatie mogelijk maken.

Platformengineering markeert de overgang van geïsoleerde inspanningen naar een geharmoniseerd ecosysteem, waardoor de ontwikkelaarservaring en operationele efficiëntie verbeteren.

Get regular tech leadership wisdom for delivering better software and systems.

De verschuiving van individuele uitmuntendheid naar collectieve deskundigheid

Een individuele ontwikkelaar, of ‘softwareambachtsman’, kan een collectief aanvankelijk overtreffen met zijn aangepaste toolkit. De eisen van een groeiende softwareonderneming geven echter al snel prioriteit aan de kunst van teamwerk—communicatie, samenwerking en het strategisch delen van tools en processen.

Platformengineering is een geavanceerd antwoord op deze schaalbaarheidsproblemen. Het omvat het samenstellen en beheren van een reeks applicaties en tools die als gemeenschappelijke basis dienen, zodat ontwikkelaars kunnen innoveren door bestaande modules te integreren en daarop voort te bouwen.

De rol van een platformengineeringteam is het creëren van een intern ontwikkelaarsplatform (IDP) dat de beperkingen van traditionele applicatie-ontwikkeling overstijgt door raamwerken zoals Kubernetes op te nemen en een zelfbedieningsomgeving te stimuleren die ontwikkelaars meer mogelijkheden geeft.

Het ambachtsprincipe is ook van toepassing op testen: een deskundige, automatiseringsbekwame verkennende tester is waarschijnlijk de meest effectieve QA-specialist die je kunt vinden. De uitdaging ligt echter in schaalbaarheid. Testautomatisering bestaat vaak in silo’s, waarbij individuen oplossingen ontwikkelen met tools zoals Selenium op hun eigen manier. Het vertrek of de promotie van deze personen leidt er vaak toe dat hun opvolgers bestaande systemen volledig opnieuw moeten opbouwen, omdat zij de tools mogelijk op een andere manier gebruiken. 

Gedeelde testplatforms: samenwerking bevorderen

Een gedeeld testplatform zou daarentegen productieve samenwerking tussen professionele testers, zakelijke gebruikers en ontwikkelaars mogelijk maken. Zo’n platform, zoals Copado's Robot Testing, zou niet alleen het delen en hergebruiken van tests, gegevens en resultaten vergemakkelijken, maar ook transparantie bij de kwaliteitsbeoordeling bevorderen. Met infrastructuur als code (nog zo’n hippe naam voor iets dat gewoon logisch is) kunnen testomgevingen efficiënt in de cloud worden geïmplementeerd, waardoor alle belanghebbenden op verzoek toegang en transparantie krijgen.

In het tijdperk van microservices moet de functionaliteit van afzonderlijke componenten, georkestreerd door platforms zoals Docker en Kubernetes, worden onderzocht op cognitieve belasting en gebruikersimpact. Hier komen de principes van Site Reliability Engineering (SRE) om de hoek kijken. Ze zorgen ervoor dat systemen betrouwbaar zijn en dat operationele teams beschikken over robuuste waarschuwingshulpmiddelen zoals Puppet en monitoringoplossingen om de waarneembaarheid te handhaven.

Uitdagingen van platformengineering

Ondanks de duidelijke voordelen kent platformengineering ook uitdagingen. Het vereist nauwgezet beheer en voortdurende ontwikkeling. Veel deskundige productbedrijven hebben moeite om een gemeenschappelijk platform voor hun producten te ontwikkelen, waardoor het onrealistisch is om te verwachten dat IT-afdelingen deze mogelijkheden van nature bezitten. Daarom winnen brede, hoogwaardige applicatieplatforms, zoals Salesforce, en ontwikkelaarsplatforms, zoals Git of Azure DevOps, terrein. Hetzelfde gebeurt met testplatforms, maar iets langzamer.

Omdat applicaties worden opgebouwd door componenten van een gedeeld platform samen te voegen, worden de kwaliteit en robuustheid van dit platform van het grootste belang. Elk probleem met het platform kan mogelijk gevolgen hebben voor alle applicaties die erop zijn gebouwd. Daarom moeten het platform en de applicaties zich gelijktijdig ontwikkelen, waarbij het platform altijd vooroploopt om stabiliteit te waarborgen.

Het testen van het platform moet worden gescheiden van het testen van de applicaties, ongeacht of je in productie test of niet. Het eerste is doorgaans technischer en richt zich op unittests, API's, schaalbaarheid en prestaties, terwijl het tweede meer op bedrijfsprocessen is gebaseerd en van nature end-to-endtesten omvat.

Kwaliteit gedurende de volledige levenscyclus van het platform waarborgen

Naarmate organisaties cloud-native benaderingen invoeren, is de robuustheid van hun platform van het grootste belang. Elk probleem binnen het platform kan verstrekkende gevolgen hebben. Daarom is een duidelijke afbakening tussen platformtesten en applicatietesten cruciaal. Deze scheiding maakt een gerichte aanpak van schaalbaarheid en prestaties mogelijk, waarbij het eerste zich richt op de technische aspecten, zoals API's, en het tweede op de functionaliteit voor eindgebruikers.

Software en tools voor platformengineering uitgelegd


Binnen platformengineering beheren en stroomlijnen verschillende softwaretools de processen die betrokken zijn bij het bouwen, implementeren en onderhouden van infrastructuur en applicaties.

Neem een tool als Postman. Postman werd oorspronkelijk ontwikkeld als zijproject om API-workflows tijdens ontwikkeling en testen te vereenvoudigen en is een uitstekende tool voor individuele testers. Wanneer het echter wordt geïntegreerd in een workflow voor continue integratie/continue levering (CI/CD), worden de mogelijkheden ervan aanzienlijk uitgebreid en krijgt het een breder doel binnen een cloudplatform. Het maakt snel en eenvoudig testen van API's mogelijk en geeft de gebruiker onmiddellijk feedback.

Naarmate het team groeit, worden de beperkingen van Postman duidelijk. Hoewel de tool uitstekend is voor handmatig testen en verkennen, schiet deze tekort in samenwerkingsomgevingen waar geautomatiseerde, herhaalbare en schaalbare tests nodig zijn. Naarmate een software-operatie uitbreidt, worden aspecten zoals communicatie, delen en hergebruik cruciaal, waarbij ze vaak belangrijker worden dan de prestaties van een individu.

Andere belangrijke tools voor platformengineering zijn:

  • Tools voor containerisatie
    • Docker: voor het maken, implementeren en uitvoeren van applicaties in containers.
    • Kubernetes: een platform voor containerorkestratie om de implementatie, schaalvergroting en werking van applicatiecontainers in clusters van hosts te automatiseren.
  • Tools voor infrastructuur als code (IaC):
    • Terraform: wordt gebruikt om infrastructuur veilig en efficiënt op te bouwen, te wijzigen en van versies te voorzien.
    • Ansible: een opensourcetool voor softwareprovisioning, configuratiebeheer en het implementeren van applicaties.
    • Puppet: nog een populaire tool voor configuratiebeheer.
  • Tools voor continue integratie/continue implementatie (CI/CD):
    • Jenkins: een opensource-automatiseringsserver die wordt gebruikt om onderdelen van softwareontwikkeling te automatiseren.
    • GitLab CI/CD: biedt een gestroomlijnde manier om fasen van de levenscyclus van applicatieontwikkeling te automatiseren.
    • CircleCI: biedt continue integratie en levering om ontwikkelteams te helpen code snel uit te brengen.
  • Tools voor monitoring en observeerbaarheid:
    • Prometheus: een opensource-monitoringsysteem met een tijdreeksdatabase.
    • Grafana: voor het visualiseren en monitoren van metrieken.
    • Elasticsearch, Logstash en Kibana (ELK Stack): populair voor het loggen en visualiseren van gegevens.
  • Cloudserviceproviders:
    • Amazon Web Services (AWS): biedt een breed scala aan cloudservices.
    • Microsoft Azure: biedt cloudcomputingservices.
    • Google Cloud Platform (GCP): biedt een reeks cloudcomputingservices.
  • Versiebeheersystemen:
    • Git: een gedistribueerd versiebeheersysteem voor het bijhouden van wijzigingen in broncode.
    • GitHub: een platform voor het hosten en beheren van Git-opslagplaatsen.
  • Tools voor beveiliging en naleving:
    • HashiCorp Vault: voor het beveiligen, opslaan en beheren van de toegang tot tokens, wachtwoorden, certificaten, API-sleutels en andere geheimen.
    • SonarQube: beoordeelt de kwaliteit van code en identificeert kwetsbaarheden.
  • Hulpmiddelen voor servicemeshes:
    • Istio: Een open platform om microservices te verbinden, te beheren en te beveiligen.
    • Linkerd: Biedt observeerbaarheid, betrouwbaarheid en beveiliging voor microservices.
  • Frameworks voor serverloze toepassingen:
    • AWS Lambda: Maakt het mogelijk code uit te voeren zonder servers te voorzien of te beheren.
    • Serverless Framework: Vereenvoudigt het bouwen van toepassingen met serverloze architecturen.
  • Databasebeheer:
    • MongoDB: Een populaire NoSQL-database.
    • PostgreSQL: Een geavanceerde open-source relationele database.

De belofte van platformengineering

Hoewel platformengineering een hogere productiviteit voor ontwikkelaars belooft, is het realiseren van dit potentieel makkelijker gezegd dan gedaan. Het platform moet nauwgezet worden beheerd, op stabiliteit worden getest en mag geen bottleneck worden. Dit ambitieuze doel vereist een gezamenlijke inspanning van de DevOps-teams, van de DevOps-engineer tot het productteam. Een succesvolle implementatie hangt af van naadloze orkestratie, de efficiëntie van pipelines en een toewijding aan continue integratie en continue implementatie. Effectieve testpraktijken en een op automatisering gerichte toolkit zijn vereisten voor succesvolle platformengineering.

Geïnteresseerd in meer informatie over AI en softwaretests? Schrijf je in voor de QA-nieuwsbrief voor leidinggevenden voor de nieuwste trends.