Gids voor DevOps voor beginners

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

Gids voor DevOps voor beginners

Veel is er gebeurd sinds de term DevOps zijn intrede deed in de IT-wereld. Gezien het feit dat een groot deel van het ecosysteem open source is, is het belangrijk om te heroverwegen waarom dit begon en wat het betekent voor een carriĆØre in IT.

Wat is DevOps

Hoewel er geen eenduidige definitie is, beschouw ik DevOps als een technologische structuur die interactie tussen ontwikkelteams en operationele teams mogelijk maakt voor snellere implementatie van code in productieomgevingen met herhaalbaarheid en automatisering. De rest van het artikel besteden we aan het ontrafelen van deze uitspraak.

Het woord "DevOps" is een combinatie van de woorden "ontwikkeling" (development) en "operaties" (operations). DevOps helpt de snelheid van applicatie- en servicelevering te verhogen. Dit stelt organisaties in staat om hun klanten effectief te bedienen en competitiever te worden op de markt. Simpel gezegd, DevOps is de consistentie tussen ontwikkeling en IT-operaties met meer effectieve interactie en samenwerking.

DevOps veronderstelt een cultuur waarin samenwerking tussen ontwikkelteams, operators en zakelijke teams als een cruciaal aspect wordt beschouwd. Het gaat niet alleen om tools, omdat DevOps in een organisatie voortdurend voordelen biedt, ook aan klanten. Tools zijn een van de pijlers, samen met mensen en processen. DevOps vergroot de mogelijkheden van organisaties om hoogwaardige oplossingen in korte tijd te bieden. Bovendien automatiseert DevOps alle processen, van ontwikkeling tot implementatie, van applicaties of producten.

De discussie over DevOps richt zich op de relaties tussen ontwikkelaars, de mensen die software voor hun levensonderhoud schrijven, en operators die verantwoordelijk zijn voor het ondersteunen van deze software.

Uitdagingen voor het ontwikkelteam

Ontwikkelaars zijn doorgaans enthousiast en bereid om nieuwe benaderingen en technologieƫn toe te passen om de problemen van organisaties op te lossen. Echter, ze worden ook geconfronteerd met bepaalde uitdagingen:

  • De concurrerende markt oefent grote druk uit voor tijdige levering van producten.
  • Zij moeten zorgen voor codebeheer dat productieklare versies ondersteunt en de implementatie van nieuwe functionaliteiten vergemakkelijkt.
  • De releasecyclus kan lang zijn, waardoor het ontwikkelingsteam verschillende aannames moet maken voordat applicaties worden geĆÆmplementeerd. In zo'n scenario is meer tijd nodig om problemen op te lossen die zich voordoen tijdens de uitrol in een productie- of testomgeving.

Problemen waarmee de operationele groep te maken heeft

Operationele groepen zijn traditioneel gericht op de stabiliteit en betrouwbaarheid van IT-diensten. Daarom zijn operationele teams bezig met het waarborgen van stabiliteit door wijzigingen aan te brengen in middelen, technologieƫn of benaderingen. Hun taken omvatten:

  • Het beheren van de distributie van middelen naarmate de vraag groeit.
  • Het verwerken van wijzigingen in het ontwerp of de configuraties die nodig zijn voor implementatie in de productieomgeving.
  • Diagnostiek en probleemoplossing in verband met productie na zelf-geĆÆmplementeerde applicaties.

Hoe DevOps de problemen van ontwikkeling en operatie aanpakt

In plaats van een grote hoeveelheid applicatiefuncties tegelijkertijd uit te rollen, proberen bedrijven uit te vinden of ze een kleine hoeveelheid functies voor hun klanten kunnen implementeren via een serie iteraties van releases. Deze benadering heeft verschillende voordelen, zoals betere softwarekwaliteit, snellere feedback van klanten, enz. Dit zorgt op zijn beurt voor een hogere klanttevredenheid. Om deze doelen te bereiken, moeten bedrijven:

  • Het percentage mislukkingen bij het uitrollen van nieuwe releases verlagen
  • De frequentie van implementaties verhogen
  • Sneller herstellen bij nieuwe productreleases bereiken.
  • De tijd voor het oplossen van problemen verkorten

DevOps vervult al deze taken en helpt een continue levering te waarborgen. Organisaties gebruiken DevOps om prestatieniveaus te bereiken die enkele jaren geleden ongekend waren. Ze voeren tientallen, honderden en zelfs duizenden implementaties per dag uit, met een garantie van wereldklasse in betrouwbaarheid, stabiliteit en veiligheid. (Ontdek meer over batchgrootte en de impact ervan op softwarelevering).

DevOps probeert verschillende problemen op te lossen die voortkomen uit het gebruik van verouderde methodologieƫn, waaronder:

  • Isolatie van de werkzaamheden van ontwikkel- en operationele teams
  • Testen en uitrollen als afzonderlijke fasen, uitgevoerd na ontwerp en bouw, die meer tijd kosten dan de bouwcycli.
  • Overmatige tijdsbesteding aan testen, uitrollen en ontwerpen in plaats van te focussen op het creĆ«ren van essentiĆ«le bedrijfsdiensten
  • Handmatig uitrollen van code, wat leidt tot fouten in productie
  • Verschillen in de werkroosters van ontwikkelgroepen en operationele teams, wat leidt tot extra vertragingen

Gids voor DevOps voor beginners

Conflict tussen DevOps, Agile en traditionele IT

DevOps wordt vaak besproken in verband met andere IT-praktijken, met name Agile en de watervalmethode in IT-infrastructuur.

Agile is een set van principes, waarden en methoden voor softwareproductie. Bijvoorbeeld, als u een idee heeft dat u in software wilt omzetten, kunt u de principes en waarden van Agile gebruiken. Maar deze software kan alleen functioneren in een ontwikkel- of testomgeving. U heeft een eenvoudige en veilige manier nodig om software snel en met hoge herhaalbaarheid naar de productieomgeving te verplaatsen, en de weg gaat via de tools en methoden van DevOps. De Agile softwareontwikkelingsmethodologie richt zich op het ontwikkelingsproces, terwijl DevOps verantwoordelijk is voor het ontwikkelen en uitrollen — op de veiligste en betrouwbaarste manier.

Een vergelijking van het traditionele watervalmodel met DevOps is een goede manier om de voordelen van DevOps te begrijpen. In het volgende voorbeeld wordt aangenomen dat de applicatie over vier weken gelanceerd zal worden, dat de ontwikkeling voor 85% voltooid is, dat de applicatie gelanceerd zal worden en dat het proces van het inkoop van servers om de code te versturen net is gestart.

Traditionele processen
Processen in DevOps

Na het plaatsen van een bestelling voor nieuwe servers werkt het ontwikkelingsteam aan het testen. De operationele groep werkt aan de uitgebreide documentatie die nodig is voor de implementatie van de infrastructuur binnen de organisatie.
Na het plaatsen van een bestelling voor nieuwe servers werken de teams van ontwikkelaars en operators samen aan de processen en documentatie voor de installatie van de nieuwe servers. Dit stelt hen in staat om de infrastructuurvereisten beter te begrijpen.

Informatie over herstel na uitval, redundantie, locaties van datacenters en opslagvereisten is vertekend, aangezien er geen input is van het ontwikkelingsteam, dat diepgaande kennis heeft van de applicatie.
Gedetailleerde informatie over het overwinnen van uitval, redundantie, noodherstel, locaties van datacenters en opslagvereisten is bekend en correct dankzij de bijdrage van het ontwikkelingsteam.

De operationele groep heeft geen idee van de voortgang van het ontwikkelingsteam. Zij ontwikkelt ook een monitoringsplan op basis van hun eigen inzichten.

De operationele groep is volledig op de hoogte van de voortgang die door het ontwikkelingsteam is geboekt. Ze werken ook samen met het ontwikkelingsteam en ontwikkelen gezamenlijk een monitoringsplan dat voldoet aan de IT- en bedrijfsbehoeften. Ze maken ook gebruik van applicatieprestatie-monitoring (APM) tools.

Een belastingstest die voor de lancering van de applicatie wordt uitgevoerd, leidt tot een storing van de applicatie, wat de lancering vertraagt.
Een belastingstest die voor de lancering van de applicatie wordt uitgevoerd, leidt tot een prestatieverlies. Het ontwikkelingsteam verhelpt snel de knelpunten, waardoor de applicatie op tijd wordt gelanceerd.

DevOps-leven cyclus

DevOps impliceert het aannemen van bepaalde gangbare praktijken.

Continue planning

Continue planning is gebaseerd op de principes van lean, om klein te beginnen door de middelen en resultaten te bepalen die nodig zijn om de waarde van het bedrijf of de visie te testen, voortdurende aanpassing, meten van vooruitgang, leren van klantbehoeften, bijstellen waar nodig met het oog op wendbaarheid en het bijwerken van het bedrijfsplan.

Samen ontwikkelen

Het proces van gezamenlijke ontwikkeling stelt bedrijven, ontwikkelingsteams en testteams, verspreid over verschillende tijdzones, in staat om continu kwalitatief hoogwaardige software te leveren. Dit omvat multiplatformontwikkeling, ondersteuning voor verschillende programmeertalen, het creƫren van gebruikersverhalen, het ontwikkelen van ideeƫn en het beheer van de levenscyclus. Gezamenlijke ontwikkeling omvat het proces en de praktijk van continue integratie, wat bijdraagt aan frequente code-integratie en automatische builds. Bij frequente implementatie van code in de applicatie worden integratieproblemen in een vroeg stadium van de levenscyclus ontdekt (wanneer ze gemakkelijker te herstellen zijn), en worden de gezamenlijke integr inspanningen verminderd door continue feedback, aangezien het project voortdurende en zichtbare vooruitgang vertoont.

Continue testen

Continue testen verlaagt de testkosten door ontwikkelteams te helpen balans te vinden tussen snelheid en kwaliteit. Het elimineert ook knelpunten in het testen door virtualisatie van diensten en vereenvoudigt het creëren van gevirtualiseerde testomgevingen die eenvoudig kunnen worden gedeeld, ingezet en geüpdatet naarmate de systemen veranderen. Deze mogelijkheden verlagen de kosten voor het initialiseren en onderhouden van testomgevingen en verlagen de testcyclusduur, waardoor integratietests in de vroege stadia van de levenscyclus kunnen worden uitgevoerd.

Continue releases en implementatie

Deze methodieken brengen een van de kernpraktijken met zich mee: continue releases en implementatie. Dit zorgt voor een continu kanaal dat de belangrijkste processen automatiseert. Het vermindert het aantal handmatige bewerkingen, wachttijd voor middelen en de hoeveelheid herschrijvingen, waardoor implementatie met een druk op de knop mogelijk is, wat meer releases, minder fouten en volledige transparantie oplevert.

Automatisering speelt een cruciale rol in het waarborgen van een stabiele en betrouwbare softwarelevering. Een van de belangrijkste taken is het overnemen van handmatige processen, zoals bouwen, regressie, implementatie en infrastructuurcreatie, en deze te automatiseren. Dit vereist versiebeheer van de broncode; test- en implementatiescripts; gegevens over infrastructuur en applicatieconfiguratie; evenals bibliotheken en pakketten waarvan de applicatie afhankelijk is. Een andere belangrijke factor is de mogelijkheid om de status van alle omgevingen op te vragen.

Continue monitoring

Continue monitoring zorgt voor het genereren van rapporten op bedrijfsniveau, die ontwikkelteams helpen de beschikbaarheid en prestaties van applicaties in productieomgevingen te begrijpen, nog voordat ze in productie worden genomen. Vroegtijdige feedback, geleverd door continue monitoring, is cruciaal voor het verlagen van de kosten van fouten en het sturen van projecten in de juiste richting. Deze praktijk omvat vaak observatietools die doorgaans prestatiestatistieken van applicaties onthullen.

Continue feedback en optimalisatie

Continue feedback en optimalisatie bieden een visuele weergave van de klantstromen en exacte identificatie van knelpunten. Feedback kan zowel in de pre-sales- als de post-productiefase worden opgenomen om de waarde te maximaliseren en om meer transacties succesvol af te ronden. Dit zorgt voor onmiddellijke visualisatie van de onderliggende oorzaak van klantproblemen die hun gedrag en de impact op het bedrijf beĆÆnvloeden.

Gids voor DevOps voor beginners

Voordelen van DevOps

DevOps kan bijdragen aan het creƫren van een omgeving waarin ontwikkelaars en operators als ƩƩn team werken om gemeenschappelijke doelen te bereiken. Een belangrijke mijlpaal in dit proces is de implementatie van continue integratie en continue levering (CI/CD). Deze methodieken stellen teams in staat om software sneller op de markt te brengen met minder fouten.

Belangrijke voordelen van DevOps zijn:

  • Voorspelbaarheid: DevOps biedt een aanzienlijk lagere foutfrequentie bij de uitgave van nieuwe versies.
  • Ondersteunbaarheid: DevOps zorgt voor eenvoudig herstel bij storingen in een nieuwe versie of bij het uitschakelen van de applicatie.
  • Reproduceerbaarheid: Een versiebeheersysteem voor builds of code maakt het mogelijk om eerdere versies indien nodig te herstellen.
  • Hogere kwaliteit: Het oplossen van infrastructuurproblemen verbetert de kwaliteit van applicatieontwikkeling.
  • Tijd naar de markt: Optimalisatie van softwarelevering verkort de tijd naar de markt met 50%.
  • Risicoreductie: Het waarborgen van beveiliging in de softwarelevenscyclus vermindert het aantal defecten gedurende de hele levenscyclus.
  • Kosteneffectiviteit: De focus op kosteneffectiviteit bij softwareontwikkeling wordt gewaardeerd door het hoger management.
  • Stabiliteit: Het softwaresysteem is stabieler, veiliger en wijzigingen kunnen worden gecontroleerd.
  • Een grotere codebase wordt opgedeeld in beheersbare delen: DevOps is gebaseerd op flexibele ontwikkelingsmethoden die het mogelijk maken om een grote codebase op te splitsen in kleinere, beheersbare delen.

Principes van DevOps

De acceptatie van DevOps heeft verschillende principes voortgebracht die zijn geƫvolueerd (en nog steeds evolueren). De meeste oplossingleveranciers hebben hun eigen variaties van verschillende methodieken ontwikkeld. Al deze principes zijn gebaseerd op een holistische benadering van DevOps, die door organisaties van elke omvang kan worden toegepast.

Ontwikkel en test in een omgeving die lijkt op productie

De essentie is dat teams van ontwikkelaars en kwaliteitscontrole (QA)-specialisten systemen kunnen ontwikkelen en testen die zich gedragen als productiesystemen, zodat ze kunnen zien hoe de applicatie zich gedraagt en functioneert lang voordat deze klaar is voor implementatie.

De applicatie moet zo vroeg mogelijk in de levenscyclus met de productieomgevingen worden verbonden om drie belangrijke potentiƫle problemen op te lossen. Ten eerste stelt dit in staat om de applicatie te testen in een omgeving die dicht bij de echte omgeving ligt. Ten tweede maakt het mogelijk om de distributieprocessen van de applicatie vooraf te testen en te verifiƫren. Ten derde stelt het de operationele teams in staat om vroeg in de levenscyclus te controleren hoe hun omgeving zal presteren wanneer applicaties worden uitgerold, waardoor ze een fijn afgestelde, op applicaties gerichte omgeving kunnen creƫren.

Uitrol met reproduceerbare, betrouwbare processen

Dit principe stelt ontwikkelings- en operationele teams in staat om flexibele softwareontwikkelingsprocessen gedurende de hele levenscyclus te onderhouden. Automatisering is cruciaal voor het creƫren van iteratieve, betrouwbare en reproduceerbare processen. Daarom moet de organisatie een leveringspijplijn opzetten die continue geautomatiseerde uitrol en testing garandeert. Frequent uitrollen stelt teams ook in staat om de uitrolprocessen te testen, waardoor het risico op uitrolstoringen tijdens echte releases wordt verminderd.

Monitoring en kwaliteitscontrole

Organisaties zijn goed in het monitoren van applicaties in productie, omdat ze tools hebben die prestatiemetrics en key performance indicators (KPI's) in real-time vastleggen. Dit principe brengt monitoring naar de vroege stadia van de levenscyclus, zodat geautomatiseerd testen functionele en niet-functionele eigenschappen van de applicatie in de vroege stadia van het proces kan volgen. Telkens wanneer een applicatie getest en uitgerold wordt, moeten de kwaliteitsmetrics worden bestudeerd en geanalyseerd. Monitoringtools bieden vroege waarschuwingen voor operationele en kwaliteitsproblemen die zich tijdens de productie kunnen voordoen. Deze metrics moeten worden verzameld in een formaat dat toegankelijk en begrijpelijk is voor alle belanghebbenden.

Verbetering van feedbackcycli

Een van de doelen van DevOps-processen is om organisaties in staat te stellen sneller te reageren en wijzigingen aan te brengen. Bij de levering van software vereist dit doel dat de organisatie vroegtijdig feedback ontvangt en vervolgens snel leert van elke actie die is ondernomen. Dit principe vereist dat organisaties communicatiekanalen opzetten waardoor belanghebbenden toegang kunnen krijgen en interactie kunnen hebben in het kader van feedback. Ontwikkeling kan worden uitgevoerd door ontwerpplannen of prioriteiten aan te passen. Productie kan ook handelen door de productieomgeving te verbeteren.

Dev

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

Ops

  • Uitgave, implementatie, operaties: Kubernetes, Nomad, Jenkins, Zuul, Spinnaker, Ansible, Apache ZooKeeper, etcd, Netflix Archaius, Terraform
  • Monitoring: Grafana, Prometheus, Nagios, InfluxDB, Fluentd, en andere, behandeld in deze handleiding

(* Tools voor operaties zijn genummerd op volgorde van toepassing door operationele teams, maar hun gereedschap overlapt met de release- en implementatiefases. Voor het leesgemak is de nummering verwijderd.)

Ter conclusie

DevOps is een steeds populairdere methodologie die als doel heeft ontwikkelaars en operators samen te brengen tot ƩƩn geheel. Het is uniek, verschilt van traditionele IT-operaties en vult Agile aan (maar is niet zo flexibel).

Gids voor DevOps voor beginners

Ontdek meer over hoe je een gewilde carriĆØre vanaf nul kunt opbouwen of een Level Up kunt maken in vaardigheden en salaris door betaalde online cursussen van SkillFactory te volgen:

meer cursussen

Nuttig

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster