Platform engineering maakt softwareontwikkeling schaalbaarder en efficiënter door standaardisatie en automatisering. Dit versnelt het ontwikkelproces en herstelt de controle over het cloud gebruik. Tegelijkertijd behoudt het de flexibiliteit en de focus op de kernactiviteiten die DevOps beoogt. Platform engineering vertegenwoordigt daarom een natuurlijke stap voorwaarts in de evolutie van softwareontwikkeling.
Platform engineering voor snellere en schaalbare softwareontwikkeling
Opkomende discipline die voortkomt uit DevOps
Platform engineering is een opkomende discipline die voortkomt uit de DevOps-beweging. Bij DevOps krijgen ontwikkelteams meer autonomie om softwareoplossingen te ontwikkelen en te beheren. Deze aanpak vermindert afhankelijkheden tussen teams, wat resulteert in verhoogde snelheid en wendbaarheid. De cloud speelt een cruciale rol in het mogelijk maken van DevOps, aangezien ontwikkelteams via selfservice portalen eenvoudig toegang krijgen tot cloud services.
Het gebruik van cloud services vergroot echter de cognitieve belasting van ontwikkelteams en leidt tot diversiteit in technologiekeuzes, waardoor organisaties grip op hun cloud gebruik verliezen. Platform engineering biedt een oplossing door complexe technische aspecten te consolideren in gestandaardiseerde platformen, die centraal worden beheerd en als dienst worden aangeboden aan ontwikkelteams. Hierdoor kunnen ontwikkelteams zich concentreren op de business functionaliteit en sneller waarde leveren.
Hoe bepaal je welke platformen er nodig zijn?
Platform engineering streeft naar het leveren van gestandaardiseerde platformen die ontwikkelteams voorzien van de nodige technische mogelijkheden om verschillende soorten softwareoplossingen te runnen. Info Support heeft drie standaard platformen geïdentificeerd:
- Een applicatieplatform voor het runnen van bedrijfskritische webapplicaties en services.
2. Een integratieplatform voor het verbinden en stroomlijnen van data en processen tussen verschillende applicaties en systemen, ook wel bekend als iPaaS (integration platform-as-a-service).
3. Een dataplatform voor het beheren, verwerken en analyseren van data uit diverse bronnen, om business rapportages te genereren voor inzichten en besluitvorming.
Elk platform volgt een logische referentiearchitectuur en kan vervolgens geïmplementeerd worden op specifieke cloudomgevingen zoals Azure, AWS en de Info Support cloudomgeving. Deze implementatie omvat de keuze van cloud services en componenten die de benodigde capabilities bieden. Bijvoorbeeld, de “API Gateway”-capability van een integratieplatform op Azure wordt ingevuld met behulp van Azure API Management. Deze keuzes worden vervolgens vastgelegd in een technische referentiearchitectuur. Deze aanpak biedt tevens een raamwerk voor toekomstige nieuwe platformen.
Belangrijke principes bij het ontwerpen van platformen zijn:
1. Fit for purpose: Bied alleen de noodzakelijke functionaliteit voor het doel van het platform.
2. Standardization: Maak het platform herbruikbaar voor meerdere ontwikkelteams.
3. Secure by default: Hanteer least privilege op het gebied van gebruikers- en netwerktoegang.
4. Clear exit strategy: Gebruik zoveel mogelijk standaard en open-source componenten.
5. Infrastructure as code: Beschrijf de platformen in code, breng ze onder versiebeheer en automatiseer implementatie en updates.
Het gebruik van standaarden creëert een gestructureerde aanpak die herkenbaarheid bevordert. Alle platformen zijn gebaseerd op dezelfde principes, wat de onderhoudbaarheid verbetert en het onboarden van nieuwe engineers versnelt.
Wat houdt de dienstverlening omtrent een platform in?
Om de cognitieve belasting van ontwikkelteams te verminderen, zonder het ontwikkelproces te vertragen, is het essentieel om de dienstverlening zorgvuldig te ontwerpen. Het is cruciaal om een duidelijke scheiding te creëren tussen applicatieontwikkeling en het onderliggende platform.
De dienstverlening omvat de volgende verantwoordelijkheden:
1. Inrichting: Het platform wordt direct beschikbaar gesteld bij de start van een project. Dit stelt ontwikkelteams in staat om direct te beginnen met het ontwikkelen van applicaties en deze beschikbaar te stellen aan de eindgebruikers.
2. Lifecycle management: Cloudleveranciers brengen voortdurend updates uit die moeten worden geïntegreerd in het platform. Het bijhouden van deze updates, het beoordelen van de impact en het doorvoeren op de omgevingen is daarmee een belangrijk onderdeel van de dienst.
3. Beveiliging: De dienstverlening controleert updates en kwetsbaarheden op het gebied van beveiliging en voert deze door in de platformen. Periodiek wordt de classificatie van de omgeving herijkt en worden de bijbehorende beveiligingsmaatregelen nagelopen en geïmplementeerd.
4. Monitoring: De beschikbaarheid en performance van het platform wordt continue gemonitord. Eventuele alerts worden opgevolgd en afgehandeld volgens het afgesproken service niveau.
Deze taken hoeven niet langer door ontwikkelteams te worden uitgevoerd, waardoor ze zich kunnen concentreren op het leveren van oplossingen voor de klant zonder afgeleid te worden door operationele details van de onderliggende infrastructuur.
Implementatie van platform engineering
Om platform engineering succesvol te implementeren, zijn de volgende elementen van belang:
- Productmanagement: Behandel platformen als producten. De ontwikkeling en evolutie van een platform is gericht op de behoeften van de gebruikers, de markt en de organisatie als geheel. Om de behoeften en uitdagingen van ontwikkelteams te begrijpen en te vertalen naar concrete vereisten voor het platform is expertise nodig op het vlak van architectuur, product management en marketing.
- Platformteam: Een multidisciplinair team met expertise in cloudinfrastructuur, softwareontwikkeling en operations. Ze beschikken over een abstract denkvermogen om generieke oplossingen te realiseren die door meerdere ontwikkelteams kunnen worden gebruikt. De uitdagingen en verantwoordelijkheden voor dit team zijn groot, ze moeten zowel een product (door)ontwikkelen als de dienstverlening aan meerdere ontwikkelteams operationeel houden.
- Servicemanagementsysteem: Dit systeem waarborgt de kwaliteit van operationele processen en het leveren van de afgesproken serviceniveaus. Het is essentieel om te documenteren welke diensten aan welke teams worden geleverd en voor rapportage over de geleverde diensten. Een goed servicemanagementsysteem ondersteunt zowel de platform teams als de ontwikkelteams die er gebruik van maken.
- Visie en innovatie: Omdat de wereld van cloud zo breed is en voortdurend verandert, is het belangrijk om vooruit te kijken en de impact van nieuwe technologieën op de dienstverlening te beoordelen. Info Support maakt hierbij gebruik van haar technologiebeleid waarin experts uit diverse onderdelen van de organisatie samenwerken om de juiste keuzes te maken op het vlak van technologie.
- Continue feedback: De overgang van maatwerk naar gestandaardiseerde platformen vereist ook een cultuurverandering in organisaties. Daarom is het belangrijk om continu feedback op te halen bij zowel de ontwikkelteams als het platform team. Hieruit kunnen belangrijke verbeterpunten naar voren komen om daarmee het platform en de samenwerking te verbeteren.
Met de juiste mensen, processen en samenwerking kan platform engineering met succes worden geïntroduceerd, mits de organisatie bereid is om te veranderen en begeleiding biedt bij deze transitie.
Conclusie
Platform engineering vertegenwoordigt een cruciale evolutie in softwareontwikkeling, voortkomend uit de DevOps-beweging. Het biedt gestandaardiseerde platformen en dienstverlening die ontwikkelteams in staat stellen om zich te focussen op het leveren van waarde aan de klant, zonder overweldigd te worden door de complexiteit van cloudinfrastructuur. De belangrijkste voordelen zijn:
- Versnelde time-to-market: Platform engineering verkort de time-to-market voor nieuwe applicaties, omdat het platform direct beschikbaar is. Ontwikkelteams kunnen direct aan de slag met de ontwikkeling van businessfunctionaliteit.
- Focus op waardecreatie: Door het platform als een dienst af te nemen worden ontwikkelteams ontzorgt op het gebied van beheer, zonder dat er aanvullende afhankelijkheden worden geïntroduceerd. Tevens vermindert dit de cognitieve load, omdat de complexiteit van cloudinfrastructuur door het platform is weggenomen. De focus ligt op waarde creatie voor de business, waardoor minder tijd hoeft te worden gestoken in generieke technische aspecten.
- Grip op cloud: Platforms bieden standaardisatie en uniformiteit. De gebruikte technologie wordt hiermee concreet gemaakt en vastgelegd, wat het eenvoudiger maakt om de juiste maatregelen door te voeren op het gebied van cloud beleid en kostenbeheersing.
- Verbeterde schaalbaarheid: De standaardisatie maakt softwareontwikkeling beter schaalbaar voor de hele organisatie. Een platformteam kan namelijk meerdere ontwikkelteams ondersteunen. Hierdoor kan meer ontwikkelcapaciteit worden vrijgemaakt om aan belangrijke bedrijfsdoelstellingen te werken.
Platform engineering biedt organisaties niet alleen de mogelijkheid om hun concurrentiepositie te versterken, maar ook om de snelheid, efficiëntie en beheersbaarheid van softwareontwikkeling te vergroten. Dit terwijl de flexibiliteit en focus op de kernactiviteiten behouden blijven. Het is de logische volgende stap in de evolutie van softwareontwikkeling en een kans voor organisaties om hun softwareontwikkelingsprocessen te optimaliseren en zo meer waarde te leveren aan hun klanten.