Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools
Het opzetten van de eerste DevOps-keten in vijf stappen voor beginners.

DevOps is een panacee geworden voor te trage, gefragmenteerde en andere problematische ontwikkelingsprocessen. Maar er zijn minimale kennis van DevOps nodig. We zullen concepten bespreken zoals de DevOps-keten en hoe deze in vijf stappen kan worden opgezet. Dit is geen volledig handboek, maar slechts een 'vis' die verder kan worden uitgebreid. Laten we beginnen bij het begin.

Mijn kennismaking met DevOps

Enige tijd geleden werkte ik met cloudoplossingen bij Citi Group en ontwikkelde ik een IaaS-webapplicatie om de cloudinfrastructuur van Citi te beheren, maar ik was altijd benieuwd hoe je de ontwikkelingsketen kon optimaliseren en de cultuur onder ontwikkelaars kon verbeteren. Greg Lavender, onze CTO voor cloudarchitectuur en infrastructuur, raadde me een boek aan Het project "Phoenix". Het legt de principes van DevOps prachtig uit en leest als een roman.

In de tabel aan de achterkant wordt getoond hoe vaak bedrijven nieuwe versies uitrollen:

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Hoe slagen Amazon, Google en Netflix erin om zoveel releases te doen? Het antwoord is simpel: ze hebben begrepen hoe ze een bijna perfecte DevOps-keten moeten creëren.

Bij Citi was het helemaal niet zo until we zijn overgestapt op DevOps. Toen had mijn team verschillende omgevingen, maar de levering aan de ontwikkelingsserver deden we handmatig. Alle ontwikkelaars hadden toegang tot slechts één ontwikkelingsserver op basis van IBM WebSphere Application Server Community Edition. Bij gelijktijdige pogingen om te leveren, viel de server uit en moesten we elke keer 'pijnlijk' onderhandelen. En bovendien hadden we onvoldoende testdekking, een arbeidsintensief handmatig leveringsproces, en geen mogelijkheid om de codelevering te volgen op basis van een bepaalde taak of klantvraag.

Het was duidelijk dat er dringend iets moest gebeuren, en ik vond een medegrondlegger. We besloten samen de eerste DevOps-keten op te zetten – hij configureerde een virtuele machine en de Tomcat-applicatieserver, terwijl ik verantwoordelijk was voor Jenkins, de integratie met Atlassian Jira en BitBucket, en de testdekking. Het project was een succes: we automatiseerden de ontwikkelingsketen volledig, bereikten bijna 100% uptime van de ontwikkelingsserver, konden de testdekking volgen en verbeteren, en de Git-tak kon worden gekoppeld aan de levering en Jira-taak. En bijna alle tools die we gebruikten om de DevOps-keten op te bouwen, waren open source.

In feite was de keten vereenvoudigd, aangezien we geen geavanceerde configuraties met Jenkins of Ansible hebben toegepast. Maar we hebben het voor elkaar gekregen. Dit is misschien een gevolg van het principe Pareto (ook bekend als de 80/20 regel).

Korte beschrijving van de DevOps- en CI/CD-keten

DevOps heeft verschillende definities. DevOps, net als Agile, omvat verschillende disciplines. Maar de meeste mensen zullen het eens zijn met de volgende definitie: DevOps is een methode, of ontwikkelingscyclus, waarvan het belangrijkste principe is het creëren van een cultuur waarin ontwikkelaars en andere medewerkers 'op dezelfde golflengte' zitten, handmatig werk is geautomatiseerd, iedereen doet wat hij het beste kan, de frequentie van leveringen toeneemt, de productiviteit stijgt en de flexibiliteit toeneemt.

En hoewel alleen tools niet genoeg zijn om een DevOps-omgeving te creëren, kunnen we zonder hen niet. De belangrijkste is continue integratie en continue levering (CI/CD). In de keten zijn er verschillende fasen voor elke omgeving (bijvoorbeeld DEV (ontwikkeling), INT (integratie), TST (testen), QA (kwaliteitscontrole), UAT (gebruikersacceptatietesten), STG (voorbereiding), PROD (gebruik)), handmatige taken zijn geautomatiseerd, ontwikkelaars kunnen kwalitatieve code schrijven, deze afleveren en gemakkelijk opnieuw structureren.

Dit artikel beschrijft hoe je in vijf stappen een DevOps-keten kunt opzetten, zoals weergegeven in de afbeelding hieronder, met behulp van hulpmiddelen met open source.

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Laten we aan de slag gaan.

Stap 1: CI/CD-platform

Allereerst heb je een CI/CD-tool nodig. Jenkins is een open CI/CD-tool geschreven in Java met een MIT-licentie, waarmee de popularisering van de DevOps-beweging begon en die de facto de standaard voor CI/CD is geworden.

En wat is Jenkins? Stel je voor dat je een magische afstandsbediening hebt voor verschillende services en tools. De CI/CD-tool zelf, zoals Jenkins, is nutteloos, maar in combinatie met verschillende tools en services wordt het almachtig.

Naast Jenkins zijn er tal van andere open tools, kies er een die je bevalt.

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Zo ziet het DevOps-proces eruit met een CI/CD-tool.

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Je hebt een CI/CD-tool op je localhost, maar er is nog niet veel te doen. Laten we verdergaan naar de volgende stap.

Stap 2: versiebeheer

De beste (en waarschijnlijk eenvoudigste) manier om de magie van een CI/CD-tool te testen, is door deze te integreren met een source control management (SCM)-tool. Waarom heb je versiebeheer nodig? Stel je voor dat je een applicatie aan het maken bent. Je schrijft het in Java, Python, C++, Go, Ruby, JavaScript of in een andere taal, waar er talloze van zijn. Wat je schrijft, heet de broncode. In het begin, vooral als je alleen werkt, kun je alles in een lokale map opslaan. Maar als het project groeit en er meer mensen bij komen, heb je een manier nodig om wijzigingen in de code te delen, terwijl je conflicten bij het samenvoegen van wijzigingen voorkomt. Je moet ook op de een of andere manier eerdere versies kunnen herstellen zonder back-ups en zonder het copy-paste principe voor bestanden met code toe te passen.

En hier komt SCM om de hoek kijken. SCM slaat de code op in repositories, beheert de versies ervan en coördineert deze tussen ontwikkelaars.

Er zijn veel SCM-tools, maar Git is terecht de de facto standaard geworden. Ik raad echt aan om dit te gebruiken, maar er zijn ook andere opties.

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Zo ziet de DevOps-pijplijn eruit na het toevoegen van SCM.

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Een CI/CD-tool kan het uploaden en downloaden van broncode en samenwerking in een team automatiseren. Niet slecht, toch? Maar hoe maak je hier nu een werkende applicatie van, geliefd door miljarden gebruikers?

Stap 3: hulpmiddel voor bouwautomatisering

Alles verloopt zoals gepland. Je kunt de code uploaden en wijzigingen in het versiebeheersysteem vastleggen, en je kunt ook vrienden uitnodigen om met je samen te werken. Maar je hebt nog steeds geen applicatie. Om dit een webapplicatie te maken, moet je deze compileren en verpakken voor levering of uitvoeren als een uitvoerbaar bestand. (Een geïnterpreteerde programmeertaal, zoals JavaScript of PHP, hoeft niet gecompileerd te worden.)

Gebruik een hulpmiddel voor bouwautomatisering. Welke tool je ook kiest, deze zal de code in het benodigde formaat verzamelen en het opschonen, compileren, testen en leveren automatiseren. Bouwtools variëren afhankelijk van de taal, maar de volgende open-source opties worden meestal gebruikt.

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Geweldig! Laten we nu de configuratiebestanden van de bouwautomatiseringstool in het versiebeheersysteem plaatsen, zodat de CI/CD-tool ze kan verzamelen.

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Het lijkt allemaal in orde. Maar waar moet dit nu naartoe?

Stap 4: webapplicatieserver

Dus, je hebt een verpakt bestand dat kan worden uitgevoerd of gelanceerd. Om de applicatie echt nuttig te maken, moet deze een of andere service of interface hebben, maar je moet het ergens onderbrengen.

Een webapplicatie kan worden gehost op een webapplicatieserver. De server biedt een omgeving waar je de programmatische logica van het pakket kunt uitvoeren, de interface kunt renderen en webservices via sockets kunt openen. Je hebt een HTTP-server en een paar andere omgevingen (zoals een virtuele machine bijvoorbeeld) nodig om de applicatieserver in te stellen. Laten we aannemen dat je dit allemaal zelf kunt regelen (hoewel ik hieronder meer over containers zal vertellen).

Er zijn verschillende open-source webapplicatieservers.

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

We hebben bijna een werkende DevOps-keten gemaakt. Goed gedaan!

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

In principe kun je hier stoppen, je kunt de rest zelf aan, maar het is de moeite waard om ook over de codekwaliteit te vertellen.

Stap 5: Testdekking

Testen kost veel tijd en moeite, maar het is beter om fouten onmiddellijk te vinden en de code te verbeteren om de eindgebruikers tevreden te stellen. Hiervoor zijn er veel open-source tools die niet alleen de code testen, maar ook tips geven om deze te verbeteren. De meeste CI/CD-tools kunnen verbinding maken met deze tools en het proces automatiseren.

Testen is onderverdeeld in twee delen: testframeworks om tests te schrijven en uit te voeren, en tools met suggesties voor het verbeteren van de codekwaliteit.

Testframeworks

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Tools met suggesties voor kwaliteit

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

De meeste van deze tools en frameworks zijn geschreven voor Java, Python en JavaScript, omdat C++ en C# propriëtair zijn (hoewel GCC open source is).

We hebben tools voor testdekking toegepast, en nu zou de DevOps-pijplijn eruit moeten zien zoals op de afbeelding aan het begin van de handleiding.

Extra stappen

Containers

Zoals ik al zei, kan de applicatieserver worden gehost op een virtuele machine of server, maar containers zijn populairder.

Wat zijn containers?? Вкратце, в виртуальной машине операционная система чаще всего занимает больше места, чем приложение, а контейнеру обычно достаточно нескольких библиотек и конфигурации. В некоторых случаях без виртуальных машин не обойтись, но контейнер вмещает приложение вместе с сервером без лишних затрат.

Voor containers worden meestal Docker en Kubernetes gebruikt, hoewel er ook andere opties zijn.

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Lees artikelen over Docker en Kubernetes op Opensource.com:

Middleware-automatiseringstools

Onze DevOps-keten is gericht op samenwerking bij het bouwen en leveren van applicaties, maar met DevOps-tools kun je ook andere interessante dingen doen. Bijvoorbeeld, het gebruik van 'infrastructuur als code' (IaC) tools, die ook wel softwareautomatiseringstools worden genoemd. Deze tools helpen bij het automatiseren van de installatie, het beheer en andere taken voor middleware. Een automatiseringstool kan bijvoorbeeld applicaties (webapplicatieserver, database, monitoringtools) met de juiste configuraties nemen en deze op de applicatieserver uitrollen.

Hier zijn enkele open-source automatiseringstools voor middleware:

Een beginnershandleiding: het creëren van DevOps-ketens met open-source tools

Meer details in artikelen op Opensource.com:

En wat nu?

Dit is slechts de top van de ijsberg. De DevOps-keten kan veel meer. Begin met een CI/CD-tool en ontdek wat je nog meer kunt automatiseren om je werk gemakkelijker te maken. Vergeet niet de open communicatiehulpmiddelen voor effectieve samenwerking.

Hier zijn nog enkele goede artikelen over DevOps voor beginners:

Je kunt DevOps ook integreren met open tools voor agile:

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster