Belangrijkste aspecten van platform-implementatie

Voltooid

Platform engineering is een multidisciplinaire benadering die software-engineering, systeemontwerp en operationele uitmuntendheid combineert om een betrouwbare en schaalbare infrastructuur te creëren voor het bouwen en implementeren van toepassingen. In zijn kern omvat het niet alleen het bouwen van robuuste platforms, maar het creëren van een selfserviceomgeving die ontwikkelteams mogelijk maakt en tegelijkertijd de afstemming met bedrijfsdoelen garandeert. Een succesvol platformengineeringsinitiatief begint met het juiste team en een duidelijk begrip van de probleemruimte. Deze basis maakt het mogelijk om systemen te ontwikkelen die bewerkingen stroomlijnen, wrijving verminderen en ontwikkelaars zich kunnen richten op het bouwen van toepassingen in plaats van infrastructuur te beheren.

Zodra het team is ingesteld, wordt de focus verplaatst naar het automatiseren van high-toilgebieden, het identificeren van handmatige, terugkerende taken die kunnen worden geautomatiseerd om tijd te besparen en fouten te verminderen. Hierna is een inventaris van bestaande resources essentieel, waardoor teams hulpprogramma's en services kunnen centraliseren, waardoor ze gemakkelijker kunnen worden beheerd en geschaald. De volgende stap wordt aangeduid als gebaande wegen, waarbij standaardwerkstromen en omgevingen worden gecreëerd die consistentie over projecten heen garanderen. Daarna helpt het implementeren van omgevingen als een service om processen verder te stroomlijnen, zodat teams snel omgevingen op aanvraag kunnen instellen. Op dat moment wordt het primaire doel het optimaliseren van selfservice-ontwikkelaarservaringen, waardoor ontwikkelaars hun werkstromen onafhankelijk kunnen beheren, terwijl ze ervoor zorgen dat ze over de hulpprogramma's en ondersteuning beschikken die nodig zijn voor succes. Deze aanpak transformeert de manier waarop ontwikkelteams communiceren met infrastructuur, waardoor een flexibele, krachtige omgeving wordt gemaakt voor het bouwen en leveren van toepassingen.

Diagram met de te doen Platform Engineering-taken.

Naast het duidelijk gedefinieerde implementatieplan, in plaats van platformengineering als één breed concept te benaderen, kan het handig zijn om het op te splitsen in vier hoofdgebieden om het implementatieproces te vergemakkelijken:

  • Technische systemen, waaronder de hulpprogramma's en services die ontwikkeling mogelijk maken, zoals CI/CD, pakketbeheer, op de cloud gebaseerde coderingsomgevingen, codescanners en linters, evenals AI-assistenten (Artificial Intelligence), zoals GitHub Copilot.
  • Application Platform, dat bestaat uit een samengestelde selectie van services die worden gebruikt als bouwstenen van veelgebruikte app-stacks (bijvoorbeeld Azure Policy, Azure Key Vault, Azure Container Apps of Cosmos DB).
  • Toepassingssjablonen, die goed gedefinieerde, organisatiespecifieke sjablonen bieden om het inrichten van workloads te vergemakkelijken en af te stemmen op best practices.
  • Ontwikkelaars Self-Service Mogelijkheden, waarmee ontwikkelaars hun werkstromen autonoom kunnen beheren en tegelijkertijd governance en naleving van organisatiestandaarden kunnen garanderen.

Als u deze gebieden in uw implementatiestrategie opneemt, vermindert u de toil van ontwikkelaars, bevordert u innovatie en creëert u een naadloze ontwikkelervaring.

Diagram met de implementatiestrategie, waaronder engineeringsystemen, toepassingsplatform, toepassingssjablonen en selfservicemogelijkheden voor ontwikkelaars.

Een team bouwen

In een platform engineeringorganisatie is het bevorderen van de juiste cultuur essentieel voor succes op lange termijn. Overstappen van een reactieve naar proactieve cultuur is essentieel, waarbij platformteams verantwoordelijk zijn voor het bouwen en onderhouden van hulpprogramma's ter ondersteuning van de organisatie. Deze verschuiving is van cruciaal belang voor het verminderen van kennissilo's en operationele onderbrekingen. Het succes van platformengineeringsinspanningen is afgestemd op de investeringsmogelijkheden die worden beschreven in het Platform Engineering Capability Model, waarin de nadruk wordt gelegd op de overgang door fasen van de volwassenheid van de organisatie, van voorlopig tot optimaliseren. In de voorlopige fase erkennen bedrijven de behoefte aan platformengineering, maar kunnen ze niet volledig zijn afgestemd op leiderschaps- en ontwikkelingsteams. Naarmate organisaties volwassen worden, stimuleren executive buy-in en culturele verschuivingen een meer gezamenlijke, innovatieve omgeving waar platformteams in staat zijn om zinvolle veranderingen te stimuleren, waardoor organisaties effectief kunnen schalen.

Een platformtechnisch team vereist een diverse set technische vaardigheden en een productgerichte mindset om betrouwbare, efficiënte en veilige interne ontwikkelplatforms te bouwen en te schalen. Platformtechnici zijn naar verwachting bekwaam in verschillende belangrijke gebieden, waaronder containerindeling (bijvoorbeeld Kubernetes), CI/CD-pijplijnen (bijvoorbeeld GitHub Actions, Azure Pipelines) en bewakingshulpprogramma's (bijvoorbeeld Azure Monitor, Prometheus, Grafana). Expertise in IaC-hulpprogramma's (Infrastructure as Code), zoals Terraform en Bicep, is essentieel voor het automatiseren van infrastructuurinrichting. Daarnaast moeten platformtechnici vertrouwd zijn met het schrijven van code in scripttalen zoals Python, PowerShell of Bash om automatisering en integratie tussen systemen mogelijk te maken. Hoewel de talentpool voor platformtechnici lastig kan zijn om in te zetten, moet een succesvol team expertise uit diverse achtergronden combineren, zoals softwareontwikkeling, sitebetrouwbaarheidstechniek (SRE) en IT-activiteiten.

Hoge toilgebieden automatiseren

Het automatiseren van high-toilgebieden vertegenwoordigt meestal het eerste geplaveide pad op de weg om selfservicemogelijkheden voor ontwikkelaars mogelijk te maken. Om deze te implementeren, begint u met het identificeren van frequente, foutgevoelige of arbeidsintensieve processen, met name processen die zijn gekoppeld aan handmatige of servicedeskbewerkingen. Evalueer vervolgens factoren zoals procesfrequentie, complexiteit en controlebaarheid om prioriteit te geven aan automatiseringsdoelen. Het implementeren van infrastructuur als code (IaC) in uw CD-pijplijnen (continue levering) stroomlijnt niet alleen de implementatie van toepassingen, maar maakt ook dynamische inrichting van gedeelde infrastructuur en hulpprogramma's mogelijk. Gebruik flexibele CI/CD-platforms zoals GitHub Actions en Azure DevOps of GitOps-oplossingen zoals Flux en Argo CD om knelpunten te verminderen en teams in staat te stellen.

Door het EaC-patroon (Everything as Code) in de loop van de tijd te gebruiken, wordt een beveiligd en herhaalbaar automatiseringsframework gemaakt, waarbij gebruik wordt gemaakt van gecentraliseerde Git-opslagplaatsen voor IaC-sjablonen en -configuraties (zoals Bicep- en Azure Resource Manager-sjablonen, Terraform-manifestbestanden en Helm-grafieken). Met deze opslagplaatsen, beheerd door een operations-team, kunnen ontwikkelaars pull-aanvragen indienen die veilig worden gecontroleerd en gecontroleerd voordat ze worden samengevoegd. Dezelfde CI/CD-hulpprogramma's kunnen vervolgens infrastructuur, hulpprogramma's of services inrichten en configureren, ongeacht of deze specifiek zijn of gedeeld. Deze aanpak biedt ondersteuning voor schaalbaarheid, selfservice voor ontwikkelaars en naadloze integratie met governanceprocessen, zodat platformengineering overeenkomt met de doelstellingen van de organisatie en tegelijkertijd operationele flexibiliteit bevordert.

De benadering 'Alles als code' draait om het weergeven van bijna elke resource of elk proces als een bestand in een beveiligde Git-opslagplaats. De robuuste beveiligingsfuncties van Git, zoals doorvoergeschiedenis, toegangsbeheer, pull-aanvragen en vertakkingsbeveiligingen, zorgen voor transparantie, schakel gezamenlijke beoordelingen in en dwing geautomatiseerde controles af voordat wijzigingen worden geïntegreerd. In combinatie met CI/CD-systemen creëert dit een veelzijdig, controleerbaar en veilig framework voor het beheren van infrastructuur, hulpprogramma's en processen.

Inventariseren en centraliseren

Naarmate organisaties groeien, breiden het volume en de complexiteit van hun technische activa uit, wat vaak leidt tot duplicatie van inspanningen, zwevende projecten en verspilde resources. Het centraliseren van inventaris en assettracking is een essentiële stap in platformengineering om deze uitdagingen aan te pakken. Met een inventarissysteem kunnen teams assets zoals code, API's, containers, virtuele machines (VM's), machtigingen en meer bijhouden en beheren. Dit proces verbetert niet alleen governance, maar bevordert ook hergebruik en verbetert de detectie, waardoor teams efficiënter en effectiever kunnen werken.

Gecentraliseerde inventarissen spelen een essentiële rol bij het verbeteren van governance door assets te taggen en te organiseren. De juiste tagging zorgt ervoor dat resources zijn gekoppeld aan hun respectieve eigenaren of teams, waardoor het eenvoudiger is om levenscycluss te beheren en inzicht te krijgen in de mogelijke impact van wijzigingen. Verbeterde detectie is een ander belangrijk voordeel, omdat het technische sprawl vermindert door teams te helpen bestaande resources te vinden en opnieuw te gebruiken, waardoor onnodige duplicatie van inspanningen wordt voorkomen. Daarnaast helpt het centraliseren van voorraden organisaties bij het optimaliseren van resources door verouderde of onnodige assets te identificeren en op te schonen, wat leidt tot minder verspilling en hogere kostenbesparingen.

Verschillende hulpprogramma's ondersteunen inventaris- en assettracking, elk voor verschillende aspecten van het technische ecosysteem. Azure Deployment Environments (ADE) biedt bijvoorbeeld een manier om complexe infrastructuur bij te houden die is gemaakt via Infrastructure as Code (IaC). Op dezelfde manier stelt Azure API Center ontwikkelaars in staat om API's efficiënt te detecteren en te beheren. Pakketregisters zoals GitHub Packages of Azure Artifacts bieden extra waarde door de beveiliging van de toeleveringsketen te verbeteren en goedgekeurde pakketten en SDK's te beheren.

Om de voordelen van voorraadsystemen verder te verbeteren, kunnen organisaties relationele koppelingen tussen assets tot stand brengen om een uitgebreider overzicht van hun ecosysteem te creëren. Als u bijvoorbeeld de relaties tussen een API-definitie, de bijbehorende codeopslagplaats, gekoppelde omgevingen en governancebeleid toewijst, kunnen teams resources met een grotere precisie beheren.

Geplaveide paden van Blaze

In platform engineering brengt de "paved path" analogie de balans over tussen het bevorderen van innovatie en het bieden van gestandaardiseerde richtlijnen. In eerste instantie kunnen teams verschillende, informele paden nemen om hun doelen te bereiken, te experimenteren met verschillende hulpprogramma's en werkstromen. In de loop van de tijd observeren platformteams de meest effectieve en veelgebruikte benaderingen en zetten ze om in 'geplaveide paden', geoptimaliseerde werkstromen die efficiënt, gebruiksvriendelijk en aantrekkelijk zijn voor teams om te gebruiken.

Dit proces, vaak beschreven als "uitgestippelde wegen", omvat het identificeren van veelvoorkomende patronen in teamwerkstromen en het transformeren ervan in gestandaardiseerde, schaalbare oplossingen. Deze paden integreren naadloos beveiliging, best practices voor architectuur en nalevingsvereisten, die een soepele en betrouwbare ervaring bieden. Ontwikkelaars profiteren van verminderde cognitieve belasting, consistente API's voor integratie, modulaire mogelijkheden die naar behoefte kunnen worden gecombineerd en voorspelbare prestaties die overeenkomen met operationele doelstellingen.

Het Platform Engineering Capability Model speelt een belangrijke rol in dit proces, zodat organisaties kunnen bepalen wanneer ze overstappen van informele paden naar geplaveide paden. Het identificeert gebieden waarvoor standaardisatie is vereist en biedt inzicht in het effectief schalen van deze procedures. Deze gestructureerde benadering zorgt ervoor dat innovatie niet wordt verstikt terwijl de focus op kwaliteit, naleving en prestaties behouden blijft.

De aanpak van de geharde paden moedigt goede praktijken aan zonder te prescriptief te zijn. Het ondersteunt bijdragen van de community, waardoor teams kunnen samenwerken en het platform kunnen vormgeven en tegelijkertijd flexibiliteit behouden voor unieke gebruiksvoorbeelden. Door innovatie en standaardisatie te verdelen, bevordert deze methodologie een omgeving waarin teams kunnen excelleren terwijl aan de vereisten van de organisatie consistent wordt voldaan.

Diagram met het vuur-geplaveide pad met niet-ondersteunde CI en CD.

Diagram dat het vlammentpad toont met verouderde CI en CD.

Omgevingen als een service implementeren

Het implementeren van omgevingen als een service is ontworpen om beveiligde, gestandaardiseerde en geautomatiseerde inrichting van infrastructuur mogelijk te maken. Een belangrijk principe in deze benadering is het behouden van inrichtingsidentiteiten en geheimen op een manier die voorkomt dat ontwikkelaars ze rechtstreeks kunnen openen. Dit dwingt governance af en zorgt ervoor dat infrastructuurupdates veilig blijven. Azure Deployment Environments (ADE) illustreren dit model bijvoorbeeld door het scheiden van rollen te ondersteunen en het beheer van IaC-sjablonen te centraliseren.

Met ADE bouwen en onderhouden platformtechnici en operationele teams gezamenlijk een catalogus met sjablonen voor specifieke omgevingstypen. Deze sjablonen, verrijkt met vooraf geconfigureerde instellingen, integreren beheerde identiteiten en toegang beheren op basis van rollen. Ontwikkelaars kunnen vervolgens CI/CD-pijplijnen gebruiken om infrastructuur in te richten via hulpprogramma's zoals de Azure CLI of Azure Developer CLI, zonder directe toegang tot gevoelige referenties of het onderliggende abonnement. Deze scheiding zorgt voor naleving en beveiliging, terwijl de productiviteit van ontwikkelaars behouden blijft.

Diagram dat de werkstroom van de Platform Engineer toont met de Dev Center-catalogus, omgevingsclassificaties, portal en geautomatiseerde uitrolpijplijnen.

Zelfs als ADE niet in gebruik is, kunnen dezelfde principes breder worden toegepast, met infrastructuur als codeinhoud (IaC) die afkomstig is van beveiligde, onveranderbare locaties en geheimbeheer geautomatiseerd en geïsoleerd. Door deze procedures in te schakelen, biedt platformengineering teams de mogelijkheid om consistente omgevingen te implementeren terwijl organisatiebeheer en operationele efficiëntie behouden blijven.

Selfservice-ontwikkelaarservaring optimaliseren

Een naadloze selfservice-ontwikkelaarservaring is cruciaal voor het succes van platformengineering, maar het bereiken hiervan vereist vaak vergadergebruikers waar ze zich bevinden. Elke rol, ontwikkelaars, bewerkingen en anderen, is gericht op specifieke hulpprogramma's en omgevingen die hun werkstromen definiëren. Voor nieuwe ervaringen om acceptatie te krijgen, is het belangrijk om in overeenstemming te zijn met deze bestaande 'zwaartepunten'. Een pragmatische benadering omvat het plannen van meerdere gebruikersinterfaces die zijn afgestemd op de hulpprogramma's die al in gebruik zijn, zodat teams kunnen beginnen met eenvoudige verbeteringen, hun waarde kunnen bewijzen en zich kunnen ontwikkelen naar meer geavanceerde oplossingen wanneer er behoefte aan is.

In plaats van volledig nieuwe ervaringen te maken, kunt u overwegen bestaande hulpprogramma's te verbeteren en te integreren. Platforms zoals editors, Integrated Development Environments (IDE's), DevOps-suites, CLI-hulpprogramma's en omgevingen met weinig code hebben vaak uitbreidbaarheidsmodellen die aanpassing en uitbreiding met minimale overhead mogelijk maken. Deze aanpak vermindert het onderhoud, past vertrouwde gebruikerservaringen toe en versnelt de acceptatie. Zo bieden webgebaseerde IDE-extensies, zoals extensies die zijn gebouwd voor VS Code of vscode.dev, een flexibel, webcompatibel uitgangspunt dat kan worden geschaald naar lokale ontwikkelomgevingen. Op dezelfde manier bieden ChatOps-interfaces in hulpprogramma's zoals Microsoft Teams of Slack intuïtieve manieren om automatiseringswerkstromen te activeren en te integreren met CI/CD-platforms.

Voor organisaties die een gecentraliseerde interface nodig hebben, kan investeren in een aangepaste ontwikkelaarsportal op lange termijn voordelen bieden, maar vereist zorgvuldige planning en resources. Oplossingen zoals Backstage.io, een toolkit die in eerste instantie door Spotify is ontwikkeld, bieden uiterst aanpasbare portals die plug-ins en hulpprogramma's van derden kunnen integreren, waardoor een dynamische ontwikkelaarsgerichte hub ontstaat. Of u nu begint met lichte oplossingen zoals Power Pages of een uitgebreide portal bouwt, het doel is om schaalbare, gebruiksvriendelijke ervaringen te bieden die ontwikkelaars in staat stellen en in overeenstemming zijn met de behoeften van de organisatie.