Artikelen
Tutorials
Interactieve handleidingen
DevOps-monitoring
Vergroot het bewustzijn tijdens elke fase van de leveringspipeline
Krishna Sai
Hoofd Engineering, IT-oplossingen
De verwachting is dat met DevOps sneller ontwikkeld kan worden, regelmatig getest kan worden en vaker gereleased kan worden, terwijl tegelijkertijd de kwaliteit wordt verbeterd en de kosten worden verlaagd. Om dit te bereiken, bieden DevOps-controletools automatisering en uitgebreide metingen en zichtbaarheid gedurende de gehele ontwikkelingscyclus - planning, ontwikkeling, integratie en testen, implementatie en bewerkingen.
De levenscyclus van moderne softwareontwikkeling is sneller dan ooit, waarbij meerdere ontwikkelings- en testfasen tegelijkertijd plaatsvinden. Dit heeft DevOps voortgebracht, een verschuiving van geïsoleerde teams die ontwikkelings-, test- en operatiefuncties uitvoeren naar een verenigd team dat alle functies uitvoert en 'you build it, you run it' (YBIYRI) omarmt.
Nu frequente codewijzigingen gebruikelijk zijn, hebben ontwikkelingsteams DevOps-monitoring nodig, wat in realtime een uitgebreid beeld biedt van de productieomgeving.
Wat is DevOps-monitoring?
DevOps-monitoring omvat controle van de volledige ontwikkelingscyclus — planning, ontwikkeling, integratie en testen, implementatie en bewerkingen. Het omvat een volledig overzicht in realtime van de status van toepassingen, diensten en infrastructuur in de productieomgeving. Functies zoals streamen in realtime, herhalingen van geschiedenis en visualisaties zijn essentiële componenten van applicatie- en servicemonitoring.
oplossing bekijken
Stroomlijn incidentmanagement en -respons
gerelateerd materiaal
Meer informatie over DevOps-tools
Met DevOps-monitoring kunnen teams snel en automatisch reageren op eventuele achteruitgang in de klantervaring. En nog belangrijker, het stelt teams in staat om 'naar links te verschuiven' naar eerdere ontwikkelingsstadia en afgebroken productiewijzigingen tot een minimum te beperken. Een voorbeeld is een betere instrumentatie van software om fouten te detecteren en erop te reageren, zowel handmatig via op afroep als wanneer mogelijk ook automatisch.
DevOps-monitoring versus waarneembaarheid
Als je de linkerkant van de infinity loop beschouwt als de productkant en de rechterkant als de bedieningskant, is de productmanager die een nieuwe functie in productie pusht, geïnteresseerd in het zien hoe het project op te delen is in taken en userstory's. De ontwikkelaar aan de linkerkant van het project moet zien hoe de functie naar productie kan worden verplaatst, inclusief projecttickets, userstory's en afhankelijkheden. Als ontwikkelaars zich houden aan het DevOps-principe van 'you build it, you run it', zijn ze ook geïnteresseerd in het oplossen van incidenten.
Als je naar de operationele kant van de levenscyclus gaat, moet je als engineer voor sitebetrouwbaarheid begrijpen welke services kunnen worden gemeten en gecontroleerd, zodat wanneer er een probleem is, dit kan dit worden opgelost.Als je geen DevOps-toolchain hebt die al deze processen met elkaar verbindt, heb je een rommelige, ongecorreleerde, chaotische omgeving. Als je een goed geïntegreerde toolchain hebt, kun je beter in context plaatsen wat er gaande is.
Het belang van DevOps-monitoring
Een DevOps-aanpak breidt continue monitoring uit naar de staging-, test- en zelfs ontwikkelingsomgevingen. Daar zijn tal van redenen voor.
Frequente codewijzigingen vragen om zichtbaarheid
De veelvuldige codewijzigingen als gevolg van continue integratie en implementatie hebben het tempo van de verandering verhoogd en de productieomgevingen steeds complexer gemaakt. Met microservices en microfront-ends die moderne cloud-native omgevingen betreden, zijn er honderden en soms duizenden verschillende workloads in productie, elk met verschillende operationele vereisten op het gebied van schaal, latentie, redundantie en beveiliging.
Dit heeft de behoefte aan meer zichtbaarheid gestimuleerd. Teams moeten niet alleen een verminderde klantervaring detecteren en erop reageren, maar dit ook binnen een kritieke tijd doen.
Geautomatiseerde samenwerking
DevOps vereist impliciet meer samenwerking tussen ontwikkeling, bedrijfsvoering en bedrijfsfuncties in teams. Toch kan samenwerking worden belemmerd door een gebrek aan integratie tussen tools, wat resulteert in uitdagingen bij de coördinatie met verschillende teams, wat een belangrijk inzicht was uit de DevOps-enquête van Atlassian.
Je kunt samenwerking automatiseren door middel van werkwijzen zoals een volledig overzicht krijgen van de dev-pipeline in de editor. Stel bovendien automatiseringsregels in die reageren op commits of pull requests, update vervolgens de status van verwante Jira-problemen en stuur berichten naar het Slack-kanaal van het team. Profiteer bovendien van inzichten die scan-, test- en analyserapporten bieden.
Experimenten
De noodzaak om producten te optimaliseren om in te spelen op de behoeften van de klant, aangedreven door personalisatie en geoptimaliseerde conversietrechters, leidt tot constante experimenten. Productieomgevingen kunnen honderden experimenten en functievlaggen uitvoeren, waardoor het voor monitoringsystemen een uitdaging is om de oorzaak van een verslechterde ervaring te communiceren.
De toenemende vereisten voor 'always-on'-services en toepassingen, evenals strenge SLA-verplichtingen, kunnen toepassingen kwetsbaar maken. Ontwikkelingsteams moeten ervoor zorgen dat zij service-level objectives (SLO's) en service-level indicators (SLI) definiëren die worden bewaakt en dat hiernaar wordt gehandeld.
Wijzigingsbeheer
Aangezien de meeste productiestoringen worden veroorzaakt door veranderingen, is verandermanagement essentieel, vooral voor bedrijfskritische toepassingen, zoals die in de financiële sector en de gezondheidszorg. Risico's die verband houden met veranderingen moeten worden bepaald en goedkeuringsstromen moeten worden geautomatiseerd op basis van het risico van de verandering.
Het omgaan met deze complexe zaken vereist een uitgebreide strategie voor begrip en monitoring. Dit omvat het definiëren en omarmen van monitoringpraktijken en het beschikken over een reeks rijke, flexibele en geavanceerde monitoringtools die cruciaal zijn voor de ontwikkelingsprocessen.
Monitoring van afhankelijke systemen
Gedistribueerde systemen komen steeds vaker voor, vaak samengesteld uit veel kleinere, cross-company-services. Teams moeten nu niet alleen de systemen die ze bouwen monitoren, maar ook de prestaties en beschikbaarheid van afhankelijke systemen bewaken en beheren. Amazon Web Services (AWS) biedt meer dan 175 producten en services, waaronder computer-, opslag-, netwerk-, database-, analyse-, implementatie-, beheer-, mobiele en ontwikkelaarstools. Als je je applicatie bouwt op AWS, moet je ervoor zorgen dat je de juiste service kiest voor de behoeften van je toepassing. Je hebt ook instrumentatie en strategieën nodig om fouten op een gedistribueerde manier op te sporen en storingen van afhankelijke systemen aan te pakken.
Belangrijkste mogelijkheden van DevOps-monitoring
Zoals gebruikelijk met DevOps vereist het ontwikkelen en implementeren van een monitoringstrategie ook aandacht voor kernpraktijken en een set tools.
Shift-left-tests
Shift-left-tests die eerder in de levenscyclus worden uitgevoerd, helpen de kwaliteit te verbeteren, testcycli te verkorten en fouten te verminderen. Voor DevOps-teams is het belangrijk om shift-left-testpraktijken uit te breiden om de gezondheid van pre-productieomgevingen te bewaken. Dit zorgt ervoor dat monitoring vroeg en vaak wordt geïmplementeerd, om de continuïteit via productie te behouden en de kwaliteit van de monitoringwaarschuwingen te behouden. Tests en monitoring moet samenwerken, waarbij vroegtijdige monitoring helpt om het gedrag van de applicatie te beoordelen aan de hand van belangrijke gebruikerstrajecten en -transacties. Dit helpt ook om afwijkingen in prestaties en beschikbaarheid te identificeren voordat de productie wordt geïmplementeerd.
Waarschuwings- en incidentmanagement
In een cloud-native wereld zijn incidenten net zo'n feit als bugs in code. Deze incidenten omvatten hardware- en netwerkstoringen, verkeerde configuratie, uitputting van bronnen, gegevensinconsistenties en softwarefouten. DevOps-teams moeten incidenten omarmen en beschikken over hoogwaardige monitoren om hierop te reageren.
Enkele van de beste werkwijzen om hierbij te helpen zijn:
- Bouw een samenwerkingscultuur op, waarbij monitoring wordt gebruikt tijdens de ontwikkeling samen met functie/functionaliteittests en geautomatiseerde tests
- Bouw tijdens de ontwikkeling geschikte, hoogwaardige waarschuwingen in de code in die de mean time to detect (MTTD) en de mean time to isolate (MTTI) minimaliseren
- Bouw monitors in om ervoor te zorgen dat afhankelijke services werken zoals verwacht
- Reserveer tijd om vereiste dashboards te bouwen en teamleden te trainen om ze te gebruiken
- Plan 'war games' voor de service om ervoor te zorgen dat monitors naar verwachting werken en ontbrekende monitors opgewerkt worden
- Plan tijdens sprints om acties van eerdere incidentbeoordelingen af te sluiten, met name acties met betrekking tot het bouwen van ontbrekende monitors en automatisering
- Bouw detectoren voor beveiliging (upgrades/patches/rolling credentials)
- Cultiveer een 'alles meten en monitoren'-mentaliteit met automatisering om de reactie op gedetecteerde waarschuwingen te bepalen
Tools voor DevOps-monitoring
Een aanvulling op een reeks gezonde monitoringpraktijken zijn geavanceerde tools die aansluiten op de DevOps/YBIYRI-cultuur. Dit vereist aandacht voor het identificeren en implementeren van monitoringtools, naast de goed begrepen ontwikkelaartools van coderepository's, IDE's, debuggers, tracking van defecten, tools voor continue integratie en implementatietools.
Eén venster biedt een uitgebreid overzicht van de verschillende toepassingen, services en infrastructuurafhankelijkheden, niet alleen in productie maar ook in staging. Dit geeft de mogelijkheid om de gezondheid van complexe gedistribueerde omgevingen te registreren, op te nemen, te taggen, te bekijken en te analyseren. Atlassian's interne PaaS-tool Micros bevat bijvoorbeeld een tool genaamd microscope die alle informatie over diensten op een beknopte, vindbare manier verstrekt.
Monitoring van applicatieprestaties is essentieel om ervoor te zorgen dat de toepassingsspecifieke prestatie-indicatoren, zoals de tijd om een pagina te laden, latenties van downstreamservices of transities, worden bewaakt naast basissysteemstatistieken zoals CPU- en geheugengebruik. Tools zoals SignalFX en NewRelic zijn geweldig om metriekgegevens in realtime te observeren.
Implementeer verschillende soorten monitors, waaronder voor fouten, transacties, synthetische, hartslagen, alarmen, infrastructuur, capaciteit en beveiliging tijdens de ontwikkeling. Zorg ervoor dat elk lid op deze gebieden getraind is. Deze monitors zijn vaak toepassingsspecifiek en moeten worden geïmplementeerd op basis van de vereisten van elke toepassing. Ons ontwikkelingsteam van Opsgenie implementeert bijvoorbeeld synthetische monitors die een waarschuwing of incident maken, en controleren of de waarschuwingsstroom wordt uitgevoerd zoals verwacht (d.w.z. of integraties, routing en beleid correct werken). We implementeren ook synthetische monitors voor infrastructuurafhankelijkheden die periodiek de functionaliteit van verschillende AWS-services verifiëren.
Een tool voor waarschuwingsbeheer die naadloos aansluit op de tools van je team (zoals logbeheer, crashrapporten), zodat deze op een natuurlijke manier in het ritme voor ontwikkeling en operations van je team past. De tool moet belangrijke waarschuwingen sturen naar je favoriete meldingskana(a)l(en) met de laagste latenties. Tevens moet de tool de mogelijkheid bieden om waarschuwingen te groeperen om verschillende waarschuwingen te filteren, vooral wanneer meerdere waarschuwingen worden gegenereerd door één fout of storing. Bij Atlassian bieden we Opsgenie niet alleen aan als een product dat deze mogelijkheden aan onze klanten biedt, maar gebruiken we het ook intern om ervoor te zorgen dat we een robuust, flexibel en betrouwbaar alarm- en incidentbeheersysteem hebben geïntegreerd in onze ontwikkelingspraktijken.
Conclusie...
Hoewel het DevOps omarmt, is het belangrijk om ervoor te zorgen dat de monitoring verschuift naast testen, en dat de praktijken en tools worden ingevoerd om de belofte waar te maken dat veranderingen snel in de productie met hoge kwaliteit worden geleverd.
Bekijk voor meer informatie deze aanvullende resources van Atlassian over DevOps, incidentmanagement en verandermanagement.
Deel dit artikel
Volgend onderwerp
Aanbevolen artikelen
Bookmark deze resources voor meer informatie over soorten DevOps-teams of voor voortdurende updates over DevOps bij Atlassian.