Waarom is DevOps nodig en wie zijn DevOps-specialisten?

Wanneer een applicatie niet werkt, is het laatste dat u van uw collega’s wilt horen de zin ‘het probleem ligt aan uw kant’. Als gevolg hiervan lijden gebruikers – en het maakt hen niet uit welk deel van het team verantwoordelijk is voor de storing. De DevOps-cultuur ontstond juist om ontwikkeling en ondersteuning samen te brengen rond een gedeelde verantwoordelijkheid voor het eindproduct.

Welke praktijken zijn opgenomen in het concept van DevOps en waarom zijn ze nodig? Wat doen DevOps engineers en wat moeten ze kunnen? Deskundigen van EPAM beantwoorden deze en andere vragen: Kirill Sergeev, systeemingenieur en DevOps-evangelist, en Igor Boyko, toonaangevend systeemingenieur en coördinator van een van de DevOps-teams van het bedrijf.

Waarom is DevOps nodig en wie zijn DevOps-specialisten?

Waarom is DevOps nodig?

Voorheen was er een barrière tussen ontwikkelaars en ondersteuning (zogenaamde operations). Het klinkt paradoxaal, maar ze hadden verschillende doelen en KPI’s, ook al deden ze hetzelfde. Het doel van de ontwikkeling was om de businessvereisten zo snel mogelijk te implementeren en toe te voegen aan een werkend product. Support was ervoor verantwoordelijk dat de applicatie stabiel werkte - en eventuele wijzigingen brachten de stabiliteit in gevaar. Er is sprake van een belangenconflict. DevOps leek dit op te lossen.

Wat is DevOps?

Het is een goede vraag – en een controversiële vraag: de wereld is het hier nog niet eindelijk over eens. EPAM gelooft dat DevOps technologieën, processen en een cultuur van interactie binnen een team combineert. Deze vereniging heeft tot doel continu waarde te leveren aan eindgebruikers.

Kirill Sergejev: “Ontwikkelaars schrijven code, testers beoordelen deze en beheerders implementeren het eindproduct in productie. Lange tijd waren deze delen van het team enigszins verspreid, en toen ontstond het idee om ze te verenigen via een gemeenschappelijk proces. Zo ontstonden de DevOps-praktijken.”

De dag kwam dat ontwikkelaars en systeemingenieurs geïnteresseerd raakten in elkaars werk. De barrière tussen productie en ondersteuning begon te verdwijnen. Zo ontstond DevOps, dat praktijken, cultuur en teaminteractie omvat.

Waarom is DevOps nodig en wie zijn DevOps-specialisten?

Wat is de essentie van de DevOps-cultuur?

Feit is dat de verantwoordelijkheid voor het eindresultaat bij ieder teamlid ligt. Het meest interessante en moeilijkste in de DevOps-filosofie is om te begrijpen dat een specifieke persoon niet alleen verantwoordelijk is voor zijn eigen werkfase, maar verantwoordelijk is voor hoe het hele product zal werken. Het probleem ligt niet aan iemands kant; het wordt gedeeld en elk teamlid helpt het op te lossen.

Het belangrijkste in een DevOps-cultuur is het oplossen van het probleem, en niet alleen het toepassen van DevOps-praktijken. Bovendien worden deze praktijken niet ‘aan iemands kant’ geïmplementeerd, maar in het hele product. Een project heeft niet per se een DevOps-ingenieur nodig: er is een oplossing voor een probleem nodig, en de rol van een DevOps-ingenieur kan worden verdeeld over verschillende teamleden met verschillende specialisaties.

Wat zijn de soorten DevOps-praktijken?

DevOps-praktijken omvatten alle fasen van de softwarelevenscyclus.

орь ойко: “Het ideale geval is wanneer we vanaf het begin van het project DevOps-praktijken gaan gebruiken. Samen met de architecten plannen we wat voor soort architectonisch landschap de applicatie zal hebben, waar deze zich zal bevinden en hoe deze kan worden geschaald, en kiezen we een platform. Tegenwoordig is microservice-architectuur in de mode - daarvoor kiezen we voor een orkestratiesysteem: je moet elk element van de applicatie afzonderlijk kunnen beheren en onafhankelijk van de andere kunnen bijwerken. Een andere praktijk is ‘infrastructuur als code’. Dit is de naam voor een aanpak waarbij de projectinfrastructuur wordt gecreëerd en beheerd met behulp van code, in plaats van via directe interactie met servers.

Vervolgens gaan we over naar de ontwikkelingsfase. Een van de grootste praktijken hier is het bouwen van CI/CD: je moet ontwikkelaars helpen veranderingen snel, in kleine porties, vaker en pijnloos in het product te integreren. CI/CD omvat codebeoordeling, het uploaden van de master naar de codebasis en het implementeren van de applicatie in test- en productieomgevingen.

In de CI/CD-fase passeert de code de kwaliteitspoorten. Met hun hulp controleren ze of de code die uit het werkstation van de ontwikkelaar komt, voldoet aan de gestelde kwaliteitscriteria. Unit- en UI-tests zijn hier toegevoegd. Voor een snelle, pijnloze en gerichte productimplementatie kunt u het juiste implementatietype kiezen.

DevOps-beoefenaars hebben ook een plaats in de fase van ondersteuning van het eindproduct. Ze worden gebruikt voor monitoring, feedback, beveiliging en het doorvoeren van veranderingen. DevOps bekijkt al deze taken vanuit een continu verbeteringsperspectief. Wij minimaliseren repetitieve handelingen en automatiseren deze. Dit omvat ook migraties, applicatie-uitbreiding en prestatieondersteuning.”

Wat zijn de voordelen van DevOps-praktijken?

Als we een leerboek zouden schrijven over moderne DevOps-praktijken, zouden er drie punten op de eerste pagina staan: automatisering, het versnellen van releases en snelle feedback van gebruikers.

Kirill Sergejev: “Het eerste is automatisering. We kunnen alle interacties in het team automatiseren: de code schrijven - uitrollen - controleren - installeren - feedback verzamelen - teruggaan naar het begin. Dit alles gaat automatisch.

De tweede is het versnellen van de release en zelfs het vereenvoudigen van de ontwikkeling. Het is altijd belangrijk voor de klant dat het product zo snel mogelijk op de markt komt en eerder voordelen begint te bieden dan de analogen van concurrenten. Het productleveringsproces kan eindeloos worden verbeterd: tijd verkorten, extra controlemarkeringen toevoegen, monitoring verbeteren.

Ten derde is er de versnelling van gebruikersfeedback. Als hij opmerkingen heeft, kunnen we direct aanpassingen doen en de applicatie direct updaten.”

Waarom is DevOps nodig en wie zijn DevOps-specialisten?

Hoe verhouden de begrippen ‘systems engineer’, ‘build engineer’ en ‘DevOps engineer’ zich?

Ze overlappen elkaar, maar behoren tot enigszins verschillende gebieden.

Systeemingenieur bij EPAM is een functie. Ze zijn er in verschillende niveaus: van junior tot hoofdspecialist.

Een build engineer is meer een rol die op een project kan worden uitgevoerd. Zo worden de mensen die verantwoordelijk zijn voor CI/CD genoemd.

Een DevOps-ingenieur is een specialist die DevOps-praktijken op een project implementeert.

Als we het allemaal samenvatten, krijgen we zoiets als dit: iemand in de functie van systems engineer speelt de rol van build engineer op een project en is betrokken bij de implementatie van DevOps-praktijken daar.

Wat doet een DevOps engineer precies?

DevOps-ingenieurs stellen alle onderdelen samen waaruit een project bestaat. Ze kennen de specifieke kenmerken van het werk van programmeurs, testers, systeembeheerders en helpen hun werk te vereenvoudigen. Ze begrijpen de behoeften en vereisten van het bedrijf, zijn rol in het ontwikkelingsproces - en bouwen het proces op, rekening houdend met de belangen van de klant.

We hebben veel gesproken over automatisering - dit is waar DevOps-ingenieurs in de eerste plaats mee te maken hebben. Dit is een heel groot punt, waar onder andere ook de voorbereiding van de omgeving onder valt.

Kirill Sergejev: “Voordat updates in het product worden geïmplementeerd, moeten ze worden getest in een omgeving van derden. Het is opgesteld door DevOps-ingenieurs. Ze brengen een DevOps-cultuur in het project als geheel: ze introduceren DevOps-praktijken in alle lagen van hun projecten. Deze drie principes: automatisering, vereenvoudiging en versnelling – ze brengen waar ze maar kunnen komen.”

Wat moet een DevOps-ingenieur weten?

Over het algemeen moet hij kennis hebben op verschillende gebieden: programmeren, werken met besturingssystemen, databases, assemblage- en configuratiesystemen. Deze worden aangevuld door de mogelijkheid om te werken met cloudinfrastructuur, orkestratie- en monitoringsystemen.

1. Programmeertalen

DevOps-engineers kennen meerdere basistalen voor automatisering en kunnen bijvoorbeeld tegen een programmeur zeggen: “Wat dacht je ervan om de code niet met de hand te installeren, maar met behulp van ons script, dat alles automatiseert? We zullen er een configuratiebestand voor voorbereiden, dat zowel voor u als voor ons gemakkelijk te lezen is, en we kunnen het op elk moment wijzigen. Ook gaan we kijken wie, wanneer en waarom er iets aan verandert.”

Een DevOps-ingenieur kan een of meer van deze talen leren: Python, Groovy, Bash, Powershell, Ruby, Go. Het is niet nodig om ze op een diep niveau te kennen - de basisprincipes van syntaxis, OOP-principes en de mogelijkheid om eenvoudige scripts voor automatisering te schrijven zijn voldoende.

2. Besturingssystemen

Een DevOps-ingenieur moet begrijpen op welke server het product zal worden geïnstalleerd, in welke omgeving het zal draaien en met welke services het zal communiceren. Je kunt ervoor kiezen om je te specialiseren in Windows of de Linux-familie.

3. Versiebeheersystemen

Zonder kennis van een versiebeheersysteem is een DevOps engineer nergens. Git is een van de meest populaire systemen van dit moment.

4. Cloudproviders

AWS, Google, Azure - vooral als we het hebben over de Windows-richting.

Kirill Sergejev: “Cloudproviders voorzien ons van virtuele servers die perfect in CI/CD passen.

Voor het installeren van tien fysieke servers zijn zo’n honderd handmatige handelingen nodig. Elke server moet handmatig worden gestart, het vereiste besturingssysteem worden geïnstalleerd en geconfigureerd, onze applicatie op deze tien servers worden geïnstalleerd en vervolgens alles tien keer worden gecontroleerd. Clouddiensten vervangen deze procedure door tien regels code, en een goede DevOps-engineer zou ermee moeten kunnen werken. Dit bespaart tijd, moeite en geld – zowel voor de klant als voor het bedrijf.”

5. Orchestratiesystemen: Docker en Kubernetes

Kirill Sergejev: “Virtuele servers zijn onderverdeeld in containers, waarin we onze applicatie kunnen installeren. Als er veel containers zijn, moet je ze beheren: zet er één aan, zet een andere uit, maak ergens back-ups van. Dit wordt behoorlijk complex en vereist een orkestratiesysteem.

Voorheen werd elke applicatie afgehandeld door een aparte server. Eventuele wijzigingen in de werking ervan konden de bruikbaarheid van de applicatie beïnvloeden. Dankzij containers worden applicaties geïsoleerd en draaien ze afzonderlijk – elk op een eigen virtuele machine. Als er een storing optreedt, hoeft u geen tijd te verspillen aan het zoeken naar de oorzaak. Het is makkelijker om de oude container te vernietigen en een nieuwe toe te voegen.”

6. Configuratiesystemen: Chef, Ansible, Puppet

Wanneer u een hele vloot servers moet onderhouden, moet u veel van hetzelfde soort bewerkingen uitvoeren. Het is lang en moeilijk, en handmatig werk vergroot bovendien de kans op fouten. Dit is waar configuratiesystemen te hulp komen. Met hun hulp creëren ze een script dat gemakkelijk te lezen is voor programmeurs, DevOps-ingenieurs en systeembeheerders. Dit script helpt om dezelfde bewerkingen automatisch op servers uit te voeren. Dit vermindert handmatige handelingen (en dus fouten).

Wat voor soort carrière kan een DevOps-ingenieur opbouwen?

Je kunt je zowel horizontaal als verticaal ontwikkelen.

орь ойко: “Vanuit het oogpunt van horizontale ontwikkeling hebben DevOps-ingenieurs nu de breedste perspectieven. Alles verandert voortdurend en je kunt vaardigheden opbouwen op allerlei gebieden: van versiebeheersystemen tot monitoring, van configuratiebeheer tot databases.

Je kunt systeemarchitect worden als een medewerker wil begrijpen hoe een applicatie werkt in alle fasen van de levenscyclus: van ontwikkeling tot ondersteuning.”

Hoe word je een DevOps-ingenieur?

  1. Lees het Phoenix Project en DevOps-handboek. Dit zijn de echte pijlers van de DevOps-filosofie, waarbij de eerste een fictiewerk is.
  2. Leer technologieën uit de bovenstaande lijst: zelfstandig of via online cursussen.
  3. Kom werken als DevOps engineer voor een open source project.
  4. Oefen en bied DevOps-praktijken aan voor uw persoonlijke en zakelijke projecten.

Bron: www.habr.com

Voeg een reactie