Dummies-gids: DevOps-ketens bouwen met open source-tools

Dummies-gids: DevOps-ketens bouwen met open source-tools
Je eerste DevOps-keten bouwen in vijf stappen voor beginners.

DevOps is een wondermiddel geworden voor te trage, losgekoppelde en anderszins problematische ontwikkelingsprocessen. Maar je hebt minimale kennis van DevOps nodig. Het behandelt concepten zoals de DevOps-keten en hoe je er een in vijf stappen kunt maken. Dit is geen volledige gids, maar slechts een "vis" die kan worden uitgebreid. Laten we beginnen met de geschiedenis.

Mijn kennismaking met DevOps

Ik werkte vroeger met clouds bij Citi Group en ontwikkelde een IaaS-webapplicatie om de cloudinfrastructuur van Citi te beheren, maar ik ben altijd geïnteresseerd geweest in het optimaliseren van de ontwikkelingsketen en het verbeteren van de cultuur onder ontwikkelaars. Greg Lavender, onze CTO voor Cloud Architecture and Infrastructure, raadde mij dit boek aan. Project "Feniks". Het legt de DevOps-principes prachtig uit en leest als een roman.

De tabel op de achterkant laat zien hoe vaak bedrijven nieuwe versies uitrollen:

Dummies-gids: DevOps-ketens bouwen met open source-tools

Hoe lukt het Amazon, Google en Netflix om zoveel uit te rollen? En het is simpel: ze hebben ontdekt hoe ze een bijna perfecte DevOps-keten kunnen creëren.

Voor ons bij Citi was het heel anders totdat we overstapten op DevOps. Toen had mijn team verschillende omgevingen, maar we deden de levering aan de ontwikkelserver handmatig. Alle ontwikkelaars hadden toegang tot slechts één ontwikkelserver op basis van IBM WebSphere Application Server Community Edition. Met een gelijktijdige poging om te leveren, "viel" de server, en elke keer moesten we "pijnlijk" met elkaar onderhandelen. We hadden ook onvoldoende codedekking met tests, een tijdrovend handmatig leveringsproces en geen manier om de levering van code te volgen met behulp van een taak of klantvereiste.

Het was duidelijk dat er dringend iets moest gebeuren en ik vond een gelijkgestemde collega. We besloten om samen de eerste DevOps-keten te maken - hij zette een virtuele machine en een Tomcat-applicatieserver op, en ik zorgde voor Jenkins, integratie met Atlassian Jira en BitBucket, evenals codedekking met tests. Het project was succesvol: we automatiseerden de ontwikkelingsketen volledig, bereikten bijna 100% uptime op de ontwikkelserver, konden de codedekking controleren en verbeteren met tests, en een Git-tak kon worden gekoppeld aan een Jira-levering en -probleem. En bijna alle tools die we gebruikten om de DevOps-keten op te bouwen, waren open source.

In feite is de keten vereenvoudigd, omdat we niet eens geavanceerde configuraties hebben toegepast met Jenkins of Ansible. Maar het is ons gelukt. Misschien is dit een gevolg van het principe Pareto (ook bekend als de 80/20 regel).

Een korte beschrijving van de DevOps- en CI/CD-keten

DevOps heeft verschillende definities. DevOps omvat, net als Agile, verschillende disciplines. Maar de meesten zullen het eens zijn met de volgende definitie: DevOps is een methode, of levenscyclus, van softwareontwikkeling, waarvan het belangrijkste principe is om een ​​cultuur te creëren waarin ontwikkelaars en andere werknemers "op dezelfde golflengte" zitten, handmatige arbeid wordt geautomatiseerd, iedereen doet waar hij goed in is, de frequentie van leveringen neemt toe, de productiviteit van het werk neemt toe, de flexibiliteit neemt toe.

Hoewel tools alleen niet voldoende zijn om een ​​DevOps-omgeving te creëren, zijn ze onmisbaar. De belangrijkste hiervan is continuous integration en continuous delivery (CI/CD). Per omgeving zijn er verschillende stadia in de keten (bijv. DEV (ontwikkeling), INT (integratie), TST (testen), QA (kwaliteitsborging), UAT (gebruikersacceptatietesten), STG (voorbereiding), PROD (gebruik)) , handmatige taken worden geautomatiseerd, ontwikkelaars kunnen kwaliteitscode maken, deze leveren en eenvoudig opnieuw opbouwen.

Deze notitie beschrijft hoe u in vijf stappen een DevOps-keten kunt maken, zoals weergegeven in de onderstaande afbeelding, met behulp van open source-tools.

Dummies-gids: DevOps-ketens bouwen met open source-tools

Terzake.

Stap 1: CI/CD-platform

Allereerst heeft u een CI/CD-tool nodig. Jenkins is een MIT-gelicentieerde, open-source CI/CD-tool geschreven in Java die de DevOps-beweging populair heeft gemaakt en de de facto standaard voor CICD is geworden.

Wat is Jenkins? Stel je voor dat je een magisch bedieningspaneel hebt voor een verscheidenheid aan services en tools. Op zichzelf is een CI/CD-tool zoals Jenkins nutteloos, maar met verschillende tools en services wordt het almachtig.

Naast Jenkins zijn er nog vele andere open source-tools, kies er een uit.

Dummies-gids: DevOps-ketens bouwen met open source-tools

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

Dummies-gids: DevOps-ketens bouwen met open source-tools

Je hebt een CI/CD-tool in localhost, maar daar is nog niet veel aan te doen. Laten we verder gaan met de volgende stap.

Stap 2: Versiebeheer

De beste (en waarschijnlijk gemakkelijkste) manier om de magie van een CI/CD-tool te testen, is door deze te integreren met een SCM-tool (Source Control Management). Waarom heb je versiebeheer nodig? Stel, u doet een aanvraag. Je schrijft het in Java, Python, C++, Go, Ruby, JavaScript of een andere taal die een wagon en een karretje is. Wat u schrijft, wordt broncode genoemd. In het begin, vooral als je alleen werkt, kun je alles opslaan in een lokale map. Maar naarmate het project groeit en er meer mensen meedoen, heb je een manier nodig om codewijzigingen te delen en tegelijkertijd conflicten bij het samenvoegen van wijzigingen te vermijden. En u moet ook op de een of andere manier eerdere versies herstellen zonder back-ups te gebruiken en de kopieer-plakmethode voor codebestanden te gebruiken.

En hier zonder SCM overal. De SCM slaat code op in repositories, beheert versies ervan en coördineert deze tussen ontwikkelaars.

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

Dummies-gids: DevOps-ketens bouwen met open source-tools

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

Dummies-gids: DevOps-ketens bouwen met open source-tools

De CI/CD-tool kan het uploaden en downloaden van broncode en teamsamenwerking automatiseren. Niet slecht? Maar hoe maak je hier nu een werkende applicatie van, geliefd bij miljarden gebruikers?

Stap 3: Bouw automatiseringstool

Alles gaat goed. U kunt code uploaden en wijzigingen doorvoeren in bronbeheer en vrienden uitnodigen om met u samen te werken. Maar je hebt nog geen app. Om dit een webtoepassing te laten zijn, moet deze worden gecompileerd en verpakt voor distributie of worden uitgevoerd als een uitvoerbaar bestand. (Een geïnterpreteerde programmeertaal zoals JavaScript of PHP hoeft niet te worden gecompileerd.)

Gebruik een build-automatiseringstool. Welke tool u ook kiest, het zal de code in het juiste formaat samenstellen en het opschonen, compileren, testen en afleveren automatiseren. Buildtools verschillen per taal, maar de volgende open source-opties worden vaak gebruikt.

Dummies-gids: DevOps-ketens bouwen met open source-tools

Perfect! Laten we nu de configuratiebestanden van de build-automatiseringstool in bronbeheer invoegen, zodat de CI/CD-tool ze bouwt.

Dummies-gids: DevOps-ketens bouwen met open source-tools

Het voelt goed. Maar waar moet dit nu allemaal worden uitgerold?

Stap 4: Webtoepassingsserver

U hebt dus een ingepakt bestand dat kan worden uitgevoerd of uitgerold. Om een ​​applicatie echt nuttig te laten zijn, moet het een soort service of interface hebben, maar je moet het allemaal ergens neerzetten.

Een webtoepassing kan worden gehost op een webtoepassingsserver. De applicatieserver biedt een omgeving waarin u verpakte logica kunt uitvoeren, interfaces kunt renderen en webservices via een socket kunt weergeven. U hebt een HTTP-server en enkele andere omgevingen (bijvoorbeeld een virtuele machine) nodig om de applicatieserver te installeren. Laten we voor nu doen alsof je dit allemaal gaandeweg afhandelt (hoewel ik het hieronder over containers zal hebben).

Er zijn verschillende open webapplicatieservers.

Dummies-gids: DevOps-ketens bouwen met open source-tools

We hebben al een bijna werkende DevOps-keten. Goed werk!

Dummies-gids: DevOps-ketens bouwen met open source-tools

In principe kun je hier stoppen, dan kun je het zelf aan, maar het is de moeite waard om over de kwaliteit van de code te praten.

Stap 5: Test de dekking

Testen kost veel tijd en moeite, maar het is beter om meteen bugs te vinden en de code te verbeteren om eindgebruikers tevreden te stellen. Hiervoor zijn er veel open tools die niet alleen de code testen, maar ook adviseren over hoe deze te verbeteren. De meeste CI/CD-tools kunnen op deze tools worden aangesloten en het proces automatiseren.

Testen bestaat uit twee delen: testframeworks voor het schrijven en uitvoeren van tests, en tools met hints om de codekwaliteit te verbeteren.

Kaders testen

Dummies-gids: DevOps-ketens bouwen met open source-tools

Tools met kwaliteitstips

Dummies-gids: DevOps-ketens bouwen met open source-tools

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

We hebben de tools voor testdekking toegepast en nu zou de DevOps-pijplijn eruit moeten zien als de afbeelding aan het begin van de zelfstudie.

Aanvullende stappen

containers

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

Wat zijn containers? Kortom, in een virtuele machine neemt het besturingssysteem vaak meer ruimte in beslag dan de applicatie, en volstaat een container meestal met enkele bibliotheken en configuratie. In sommige gevallen zijn virtuele machines onmisbaar, maar de container kan zonder extra kosten samen met de server de applicatie herbergen.

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

Dummies-gids: DevOps-ketens bouwen met open source-tools

Lees artikelen over Docker en Kubernetes op Opensource.com:

Middleware-automatiseringstools

Onze DevOps-keten is gericht op het gezamenlijk bouwen en opleveren van een applicatie, maar er zijn andere interessante dingen die je kunt doen met DevOps-tools. Gebruik bijvoorbeeld Infrastructure as Code (IaC)-tools, ook wel middleware-automatiseringstools genoemd. Deze tools helpen bij het automatiseren van installatie, beheer en andere taken voor middleware. Een automatiseringstool kan bijvoorbeeld applicaties (webapplicatieserver, database, monitoringtools) met de juiste configuraties naar de applicatieserver pushen.

Hier zijn enkele opties voor automatiseringstools voor open middleware:

Dummies-gids: DevOps-ketens bouwen met open source-tools

Details in de artikelen Opensource.com:

En wat nu?

Dit is slechts het topje van de ijsberg. De DevOps-keten kan veel meer. Begin met een CI/CD-tool en kijk wat u nog meer kunt automatiseren om uw werk gemakkelijker te maken. Vergeet niet open communicatiemiddelen voor effectieve samenwerking.

Hier zijn nog enkele goede DevOps-artikelen voor beginners:

U kunt DevOps ook integreren met open agile tools:

Bron: www.habr.com

Voeg een reactie