DevOps-handleiding voor beginners

Wat is het belang van DevOps, wat betekent het voor IT-professionals, een beschrijving van methoden, raamwerken en tools.

DevOps-handleiding voor beginners

Er is veel gebeurd sinds de term DevOps in de IT-wereld zijn intrede deed. Nu een groot deel van het ecosysteem open source is, is het belangrijk om te heroverwegen waarom het begon en wat het betekent voor een carrière in de IT.

Wat is DevOps

Hoewel er geen eenduidige definitie bestaat, geloof ik dat DevOps een technologisch raamwerk is dat samenwerking tussen ontwikkelings- en operationele teams mogelijk maakt om code sneller in productieomgevingen te implementeren met de mogelijkheid om te itereren en te automatiseren. We zullen de rest van dit artikel besteden aan het uitpakken van deze claim.

Het woord ‘DevOps’ is een combinatie van de woorden ‘ontwikkeling’ en ‘operations’. DevOps helpt de leveringssnelheid van applicaties en diensten te verhogen. Hierdoor kunnen organisaties hun klanten effectief bedienen en concurrerender worden op de markt. Simpel gezegd is DevOps de afstemming tussen ontwikkeling en IT-activiteiten met effectievere communicatie en samenwerking.

DevOps omvat een cultuur waarin samenwerking tussen ontwikkelings-, operationele en zakelijke teams als cruciaal wordt beschouwd. Het gaat niet alleen om tools, want ook klanten profiteren voortdurend van DevOps in een organisatie. Tools zijn een van de pijlers, samen met mensen en processen. DevOps vergroot het vermogen van organisaties om in de kortst mogelijke tijd hoogwaardige oplossingen te leveren. DevOps automatiseert ook alle processen, van build tot implementatie, applicatie of product.

De DevOps-discussie concentreert zich op de relatie tussen ontwikkelaars, de mensen die software schrijven voor de kost, en de operators die verantwoordelijk zijn voor het onderhoud van die software.

Uitdagingen voor het ontwikkelteam

Ontwikkelaars zijn doorgaans enthousiast en willen graag nieuwe benaderingen en technologieën implementeren om organisatorische problemen op te lossen. Ze worden echter ook geconfronteerd met bepaalde problemen:

  • De competitieve markt zorgt voor veel druk om het product op tijd te leveren.
  • Zij moeten zorgen voor het beheer van productieklare code en het introduceren van nieuwe functies.
  • De releasecyclus kan lang zijn, dus het ontwikkelteam moet verschillende aannames doen voordat applicaties worden geïmplementeerd. In dit scenario is meer tijd nodig om problemen op te lossen die zich voordoen tijdens de implementatie in een productie- of testomgeving.

Uitdagingen waarmee het operationele team wordt geconfronteerd

Operationele teams hebben zich van oudsher gefocust op de stabiliteit en betrouwbaarheid van IT-diensten. Daarom zoeken operationele teams naar stabiliteit door middel van veranderingen in middelen, technologieën of benaderingen. Hun taken omvatten:

  • Beheer de toewijzing van middelen naarmate de vraag toeneemt.
  • Verwerk ontwerp- of aanpassingswijzigingen die nodig zijn voor gebruik in een productieomgeving.
  • Diagnose en oplossing van productieproblemen na de zelfimplementatie van applicaties.

Hoe DevOps ontwikkelings- en operationele problemen oplost

In plaats van een groot aantal app-functies tegelijk uit te rollen, proberen bedrijven te kijken of ze een klein aantal functies via een reeks release-iteraties aan hun klanten kunnen uitrollen. Deze aanpak heeft een aantal voordelen, zoals een betere softwarekwaliteit, snellere klantfeedback, enz. Dit zorgt op zijn beurt voor een hoge klanttevredenheid. Om deze doelen te bereiken, moeten bedrijven:

  • Verminder het aantal mislukkingen bij het uitbrengen van nieuwe releases
  • Verhoog de implementatiefrequentie
  • Realiseer een snellere gemiddelde hersteltijd in het geval van een nieuwe applicatierelease.
  • Verminder de tijd voor correcties

DevOps voert al deze taken uit en zorgt voor een ononderbroken levering. Organisaties gebruiken DevOps om productiviteitsniveaus te bereiken die nog maar een paar jaar geleden ondenkbaar waren. Ze voeren tientallen, honderden en zelfs duizenden implementaties per dag uit en leveren tegelijkertijd betrouwbaarheid, stabiliteit en beveiliging van wereldklasse. (Meer informatie over partijgroottes en hun impact op de levering van software).

DevOps probeert verschillende problemen op te lossen die voortvloeien uit eerdere methodologieën, waaronder:

  • Isolatie van werk tussen ontwikkelings- en operationele teams
  • Testen en implementeren zijn afzonderlijke fasen die plaatsvinden na ontwerp en bouw en die meer tijd vergen dan bouwcycli.
  • Er wordt buitensporig veel tijd besteed aan testen, implementeren en ontwerpen in plaats van zich te concentreren op het bouwen van kernbedrijfsservices
  • Handmatige code-implementatie leidt tot fouten in de productie
  • Verschillen in de planningen van het ontwikkelings- en operationele team veroorzaken extra vertragingen

DevOps-handleiding voor beginners

Confrontatie tussen DevOps, Agile en traditionele IT

DevOps wordt vaak besproken in relatie tot andere IT-praktijken, met name Agile en Waterfall IT.

Agile is een reeks principes, waarden en praktijken voor softwareproductie. Dus als je bijvoorbeeld een idee hebt dat je wilt omzetten in software, kun je Agile-principes en -waarden gebruiken. Maar deze software kan alleen draaien in een ontwikkel- of testomgeving. U heeft een eenvoudige, veilige manier nodig om uw software snel en herhaaldelijk in productie te nemen, en dat kan via DevOps-tools en -technieken. Agile softwareontwikkeling richt zich op ontwikkelingsprocessen en DevOps is verantwoordelijk voor de ontwikkeling en implementatie op de veiligste en meest betrouwbare manier.

Het vergelijken van het traditionele watervalmodel met DevOps is een goede manier om de voordelen van DevOps te begrijpen. In het volgende voorbeeld wordt ervan uitgegaan dat de applicatie over vier weken live zal zijn, dat de ontwikkeling voor 85% voltooid is, dat de applicatie live zal zijn en dat het proces van het aanschaffen van servers om de code te verzenden net is begonnen.

Traditionele processen
Processen in DevOps

Na het plaatsen van een bestelling voor nieuwe servers gaat het ontwikkelteam aan de slag met testen. De taskforce werkt aan de uitgebreide documentatie die bedrijven nodig hebben om infrastructuur in te zetten.
Zodra een bestelling voor nieuwe servers is geplaatst, werken de ontwikkelings- en operationele teams samen aan de processen en het papierwerk om de nieuwe servers te installeren. Hierdoor krijgt u een beter inzicht in uw infrastructuurvereisten.

Informatie over failover, redundantie, datacenterlocaties en opslagvereisten wordt verkeerd weergegeven omdat er geen input is van een ontwikkelteam met diepgaande domeinkennis.
Details over failover, redundantie, disaster recovery, datacenterlocaties en opslagvereisten zijn bekend en correct dankzij de input van het ontwikkelteam.

Het operations-team heeft geen idee van de voortgang van het ontwikkelingsteam. Ook ontwikkelt ze op basis van haar eigen ideeën een monitoringsplan.

Het operations team is zich volledig bewust van de voortgang die het ontwikkelteam maakt. Ze werkt ook samen met het ontwikkelingsteam en zij werken samen om een ​​monitoringplan te ontwikkelen dat voldoet aan de IT- en zakelijke behoeften. Ze gebruiken ook tools voor applicatieprestatiemonitoring (APM).

Een belastingstest die wordt uitgevoerd voordat een applicatie wordt gestart, zorgt ervoor dat de applicatie crasht, waardoor de start ervan wordt vertraagd.
Een belastingstest die wordt uitgevoerd voordat een applicatie wordt uitgevoerd, resulteert in slechte prestaties. Het ontwikkelteam lost knelpunten snel op en de applicatie lanceert op tijd.

DevOps-levenscyclus

DevOps omvat de adoptie van bepaalde algemeen aanvaarde praktijken.

Continue planning

Continue planning is gebaseerd op lean-principes om klein te beginnen door de middelen en resultaten te identificeren die nodig zijn om de waarde van het bedrijf of de visie te testen, zich voortdurend aan te passen, de voortgang te meten, te leren van de behoeften van de klant, van richting te veranderen als dat nodig is om aan de flexibiliteit te voldoen en het bedrijfsplan opnieuw uit te vinden.

Gezamenlijke ontwikkeling

Dankzij het gezamenlijke ontwikkelingsproces kunnen bedrijven, ontwikkelingsteams en testteams verspreid over verschillende tijdzones continu kwaliteitssoftware leveren. Dit omvat ontwikkeling op meerdere platforms, ondersteuning voor programmeren in meerdere talen, het creëren van gebruikersverhalen, het ontwikkelen van ideeën en levenscyclusbeheer. Gezamenlijke ontwikkeling omvat het proces en de praktijk van continue integratie, wat frequente code-integratie en geautomatiseerde builds bevordert. Door regelmatig code in een applicatie te implementeren, worden integratieproblemen vroeg in de levenscyclus geïdentificeerd (wanneer ze gemakkelijker op te lossen zijn) en wordt de algehele integratie-inspanning verminderd door voortdurende feedback, aangezien het project continue en zichtbare vooruitgang laat zien.

Continu testen

Door continu testen worden de testkosten verlaagd doordat ontwikkelingsteams de balans kunnen vinden tussen snelheid en kwaliteit. Het elimineert ook testknelpunten door middel van servicevirtualisatie en maakt het eenvoudig om gevirtualiseerde testomgevingen te creëren die gemakkelijk kunnen worden gedeeld, geïmplementeerd en bijgewerkt als systemen veranderen. Deze mogelijkheden verlagen de kosten van het inrichten en onderhouden van testomgevingen en verkorten de testcyclustijden, waardoor integratietests eerder in de levenscyclus kunnen plaatsvinden.

Continue release en implementatie

Deze technieken brengen een kernpraktijk met zich mee: continue release en implementatie. Dit wordt verzekerd door een continue pijplijn die belangrijke processen automatiseert. Het vermindert handmatige stappen, wachttijden voor resources en herwerk door implementatie met één druk op de knop mogelijk te maken, wat resulteert in meer releases, minder fouten en volledige transparantie.

Automatisering speelt een sleutelrol bij het garanderen van een stabiele en betrouwbare softwarerelease. Een van de grootste uitdagingen is het automatiseren van handmatige processen zoals build, regressie, implementatie en infrastructuurcreatie. Dit vereist versiebeheer van de broncode; test- en implementatiescenario's; infrastructuur- en applicatieconfiguratiegegevens; en de bibliotheken en pakketten waarvan de toepassing afhankelijk is. Een andere belangrijke factor is de mogelijkheid om de status van alle omgevingen op te vragen.

Continue monitoring

Continue monitoring biedt rapportage op bedrijfsniveau waarmee ontwikkelingsteams inzicht kunnen krijgen in de beschikbaarheid en prestaties van applicaties in productieomgevingen voordat ze in productie worden genomen. Vroegtijdige feedback door continue monitoring is van cruciaal belang om de kosten van fouten te verminderen en projecten in de goede richting te sturen. Deze praktijk omvat vaak monitoringtools die doorgaans statistieken met betrekking tot applicatieprestaties onthullen.

Constante feedback en optimalisatie

Continue feedback en optimalisatie zorgen voor een visuele weergave van de klantenstroom en lokaliseren probleemgebieden. Feedback kan worden opgenomen in zowel de pre- als de post-salesfase om de waarde te maximaliseren en ervoor te zorgen dat nog meer transacties succesvol worden afgerond. Dit alles zorgt voor een onmiddellijke visualisatie van de hoofdoorzaak van klantproblemen die hun gedrag en zakelijke impact beïnvloeden.

DevOps-handleiding voor beginners

Voordelen van DevOps

DevOps kan helpen een omgeving te creëren waarin ontwikkelaars en operations als team samenwerken om gemeenschappelijke doelen te bereiken. Een belangrijke mijlpaal in dit proces is de implementatie van Continuous Integration en Continuous Delivery (CI/CD). Met deze technieken kunnen teams software sneller op de markt brengen, met minder bugs.

Belangrijke voordelen van DevOps zijn:

  • Voorspelbaarheid: DevOps biedt een aanzienlijk lager uitvalpercentage voor nieuwe releases.
  • Onderhoudbaarheid: DevOps maakt eenvoudig herstel mogelijk als een nieuwe release mislukt of een applicatie uitvalt.
  • Reproduceerbaarheid: Met versiebeheer van een build of code kunt u indien nodig eerdere versies herstellen.
  • Hogere kwaliteit: Het aanpakken van infrastructuurproblemen verbetert de kwaliteit van de applicatieontwikkeling.
  • Time-to-market: het optimaliseren van de levering van software verkort de time-to-market met 50%.
  • Risicoreductie: Het implementeren van beveiliging in de softwarelevenscyclus vermindert het aantal defecten gedurende de levenscyclus.
  • Kostenefficiëntie: Het streven naar kostenefficiëntie bij softwareontwikkeling spreekt het senior management aan.
  • Stabiliteit: Het softwaresysteem is stabieler en veiliger en wijzigingen kunnen worden gecontroleerd.
  • Een grotere codebase opsplitsen in beheersbare stukken: DevOps is gebaseerd op agile ontwikkelmethoden, waardoor een grote codebase kan worden opgesplitst in kleinere, beheersbare stukken.

DevOps-principes

De adoptie van DevOps heeft aanleiding gegeven tot verschillende principes die zijn geëvolueerd (en blijven evolueren). De meeste aanbieders van oplossingen hebben hun eigen aanpassingen van verschillende technieken ontwikkeld. Al deze principes zijn gebaseerd op een holistische benadering van DevOps, en organisaties van elke omvang kunnen ze gebruiken.

Ontwikkelen en testen in een productie-achtige omgeving

Het idee is om ontwikkelings- en kwaliteitsborgingsteams (QA) in staat te stellen systemen te ontwikkelen en te testen die zich gedragen als productiesystemen, zodat ze kunnen zien hoe de applicatie zich gedraagt ​​en presteert lang voordat deze klaar is voor implementatie.

De applicatie moet zo vroeg mogelijk in de levenscyclus worden aangesloten op productiesystemen om drie grote potentiële problemen aan te pakken. Ten eerste kunt u de applicatie testen in een omgeving die dicht bij de echte omgeving ligt. Ten tweede kunt u de opleveringsprocessen van applicaties vooraf testen en valideren. Ten derde stelt het het operationele team in staat om vroeg in de levenscyclus te testen hoe hun omgeving zich zal gedragen wanneer applicaties worden geïmplementeerd, waardoor ze een sterk aangepaste, applicatiegerichte omgeving kunnen creëren.

Implementeer met herhaalbare, betrouwbare processen

Dankzij dit principe kunnen ontwikkelings- en operationele teams flexibele softwareontwikkelingsprocessen ondersteunen gedurende de gehele softwarelevenscyclus. Automatisering is van cruciaal belang voor het creëren van iteratieve, betrouwbare en herhaalbare processen. Daarom moet de organisatie een leveringspijplijn creëren die continue, geautomatiseerde implementatie en testen mogelijk maakt. Door frequente implementatie kunnen teams ook implementatieprocessen testen, waardoor het risico op implementatiefouten tijdens live releases wordt verkleind.

Bewaken en controleren van de kwaliteit van het werk

Organisaties zijn goed in het monitoren van applicaties in de productie, omdat ze over tools beschikken die statistieken en Key Performance Indicators (KPI's) in realtime vastleggen. Dit principe zorgt ervoor dat monitoring vroeg in de levenscyclus plaatsvindt, zodat geautomatiseerd testen de functionele en niet-functionele kenmerken van een applicatie vroeg in het proces bewaakt. Telkens wanneer een applicatie wordt getest en geïmplementeerd, moeten kwaliteitsstatistieken worden onderzocht en geanalyseerd. Monitoringtools waarschuwen vroegtijdig voor operationele en kwaliteitsproblemen die zich tijdens de productie kunnen voordoen. Deze indicatoren moeten worden verzameld in een formaat dat toegankelijk en begrijpelijk is voor alle belanghebbenden.

Feedbackloops verbeteren

Een van de doelen van DevOps-processen is om organisaties in staat te stellen sneller te reageren en veranderingen door te voeren. Bij de levering van software vereist dit doel dat de organisatie vroegtijdig feedback ontvangt en vervolgens snel leert van elke ondernomen actie. Dit principe vereist dat organisaties communicatiekanalen creëren die belanghebbenden in staat stellen om op een feedback manier toegang te krijgen tot en met elkaar te communiceren. Ontwikkeling kan door het aanpassen van uw projectplannen of prioriteiten. De productie kan actie ondernemen door de productieomgeving te verbeteren.

Dev

  • Planning: Kanboard, Wekan en andere Trello-alternatieven; GitLab, Tuleap, Redmine en andere JIRA-alternatieven; Mattermost, Roit.im, IRC en andere Slack-alternatieven.
  • Code schrijven: Git, Gerrit, Bugzilla; Jenkins en andere open source-tools voor CI/CD
  • Montage: Apache Maven, Gradle, Apache Ant, Packer
  • testen: JUnit, Komkommer, Selenium, Apache JMeter

Ops

  • Release, implementatie, bewerkingen: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, enz., Netflix Archaius, Terraform
  • Toezicht houden: Grafana, Prometheus, Nagios, InfluxDB, Fluentd en anderen die in deze handleiding worden behandeld

(*Operationele tools zijn genummerd in volgorde van gebruik door operationele teams, maar hun tools overlappen de levenscyclusfasen van de release- en implementatietools. Voor een betere leesbaarheid is de nummering verwijderd.)

Concluderend

DevOps is een steeds populairder wordende methodologie die tot doel heeft ontwikkelaars en operations als één eenheid samen te brengen. Het is uniek, anders dan traditionele IT-activiteiten, en vormt een aanvulling op Agile (maar is niet zo flexibel).

DevOps-handleiding voor beginners

Ontdek details over hoe u een gewild beroep helemaal opnieuw kunt opbouwen of een hoger niveau kunt bereiken in termen van vaardigheden en salaris door betaalde online cursussen van SkillFactory te volgen:

meer cursussen

bruikbaar

Bron: www.habr.com

Voeg een reactie