Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark
Bouwe jo earste DevOps-ketting yn fiif stappen foar begjinners.

DevOps is in panacea wurden foar te stadige, loskeppele en oars problematyske ûntwikkelingsprosessen. Mar jo hawwe minimale kennis nedich yn DevOps. It sil begripen dekke lykas de DevOps-ketting en hoe't jo ien yn fiif stappen kinne oanmeitsje. Dit is gjin folsleine gids, mar allinich in "fisk" dy't útwreide wurde kin. Litte wy begjinne mei skiednis.

Myn ynlieding ta DevOps

Ik wurke eartiids mei wolken by Citi Group en ûntwikkele in IaaS-webapplikaasje om de wolkynfrastruktuer fan Citi te behearjen, mar ik haw altyd ynteressearre west yn hoe't ik de ûntwikkelketen optimalisearje kin en de kultuer ûnder ûntwikkelders ferbetterje. Greg Lavender, ús CTO foar Cloud Architecture and Infrastructure, hat my dit boek oanrikkemandearre. Projekt "Phoenix". It ferklearret DevOps-prinsipes prachtich en lêst as in roman.

De tabel op 'e rêch lit sjen hoe faak bedriuwen nije ferzjes útrolje:

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Hoe kinne Amazon, Google en Netflix sa folle útrolje? En it is ienfâldich: se fûnen út hoe't jo in hast perfekte DevOps-ketting kinne meitsje.

Dingen wiene hiel oars foar ús by Citi oant wy oerstapten nei DevOps. Doe hie myn team ferskate omjouwings, mar wy diene de levering oan 'e ûntwikkelingsserver manuell. Alle ûntwikkelders hiene tagong ta mar ien ûntwikkelingstsjinner basearre op IBM WebSphere Application Server Community Edition. Mei in simultane besykjen om te leverjen, de tsjinner "fal", en eltse kear we moasten "pynlik" ûnderhannelje ûnder ússels. Wy hienen ek net genôch koadedekking mei tests, in tiidslinend hânmjittich leveringsproses, en gjin manier om de levering fan koade te folgjen mei help fan wat taak as klanteask.

It wie dúdlik dat der driuwend wat dien wurde moast, en ik fûn in lykas-minded kollega. Wy besletten om tegearre de earste DevOps-ketting te meitsjen - hy sette in firtuele masine en in Tomcat-applikaasjetsjinner op, en ik soarge foar Jenkins, yntegraasje mei Atlassian Jira en BitBucket, lykas koadedekking mei tests. It projekt wie suksesfol: wy automatisearren de ûntwikkelingsketting folslein, berikten hast 100% uptime op 'e ûntwikkelingstsjinner, koene koadedekking kontrolearje en ferbetterje mei tests, en in Git-tûke koe wurde bûn oan in Jira-levering en útjefte. En hast alle ark dy't wy brûkten om de DevOps-ketting te bouwen wiene iepen boarne.

Yn feite waard de ketting ferienfâldige, om't wy net iens avansearre konfiguraasjes tapasse mei Jenkins of Ansible. Mar it is ús slagge. Miskien is dit in gefolch fan it prinsipe Pareto (aka de 80/20 regel).

In koarte beskriuwing fan 'e DevOps en CI / CD Chain

DevOps hat ferskate definysjes. DevOps, lykas Agile, omfettet ferskate dissiplines. Mar de measten sille it iens wêze mei de folgjende definysje: DevOps is in metoade, as libbenssyklus, fan softwareûntwikkeling, wêrfan it haadprinsipe is om in kultuer te meitsjen wêryn ûntwikkelders en oare meiwurkers "op deselde golflingte" binne, hânwurk wurdt automatisearre, elkenien docht wêr't se it bêste yn binne, de frekwinsje fan leveringen nimt ta, de produktiviteit fan wurk nimt ta, fleksibiliteit nimt ta.

Wylst ark allinich net genôch binne om in DevOps-omjouwing te meitsjen, binne se ûnmisber. De wichtichste dêrfan is trochgeande yntegraasje en trochgeande levering (CI / CD). D'r binne ferskate stadia yn 'e keten foar elke omjouwing (bgl. DEV (ûntwikkeling), INT (yntegraasje), TST (testen), QA (kwaliteitsfersekering), UAT (testen fan brûkersaksept), STG (tarieding), PROD (gebrûk)) , hânmjittige taken wurde automatisearre, ûntwikkelders kinne kwaliteitskoade produsearje, it leverje en kinne maklik opnij bouwe.

Dizze notysje beskriuwt hoe't jo in DevOps-ketting kinne oanmeitsje yn fiif stappen, lykas werjûn yn 'e ôfbylding hjirûnder, mei help fan iepen boarne-ark.

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Lit ús gean del nei saken.

Stap 1: CI / CD Platfoarm

Alderearst hawwe jo in CI / CD-ark nedich. Jenkins is in MIT-lisinsje, iepen boarne CI/CD-ark skreaun yn Java dat de DevOps-beweging popularisearre en de de facto standert wurden is foar CICD.

Wat is Jenkins? Stel jo foar dat jo in magysk kontrôlepaniel hawwe foar in ferskaat oan tsjinsten en ark. Op himsels is in CI / CD-ark lykas Jenkins nutteloos, mar mei ferskate ark en tsjinsten wurdt it almachtig.

Neist Jenkins binne d'r in protte oare iepen boarne-ark, kies elk.

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Hjir is hoe't in DevOps-proses derút sjocht mei in CI / CD-ark

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Jo hawwe in CI / CD-ark yn localhost, mar d'r is noch net folle te dwaan. Litte wy nei de folgjende stap gean.

Stap 2: Ferzjekontrôle

De bêste (en nei alle gedachten maklikste) manier om te testen de magy fan in CI / CD ark is te yntegrearjen mei in boarne kontrôle behear (SCM) ark. Wêrom hawwe jo ferzjekontrôle nedich? Litte wy sizze dat jo in oanfraach meitsje. Jo skriuwe it yn Java, Python, C++, Go, Ruby, JavaScript, of in oare taal dy't in wagon en in lytse karre is. Wat jo skriuwe hjit boarnekoade. Yn it earstoan, foaral as jo allinich wurkje, kinne jo alles opslaan yn in lokale map. Mar as it projekt groeit en mear minsken meidwaan, hawwe jo in manier nedich om koadewizigingen te dielen, mar konflikten te foarkommen by it fusearjen fan wizigingen. En jo moatte ek op ien of oare manier eardere ferzjes weromsette sûnder backups te brûken en de metoade foar kopiearje-plakke te brûken foar koadebestannen.

En hjir sûnder SCM oeral. De SCM bewarret koade yn repositories, beheart ferzjes dêrfan en koördinearret it ûnder ûntwikkelders.

D'r binne in protte SCM-ark, mar Git is de de facto standert wurden wurden. Ik advisearje jo om it te brûken, mar d'r binne oare opsjes.

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Hjir is hoe't de DevOps-pipeline derút sjocht nei it tafoegjen fan de SCM.

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

It CI / CD-ark kin it uploaden en downloaden fan boarnekoade automatisearje en teamgearwurking. Net min? Mar hoe kinne jo no in wurkjende applikaasje meitsje fan dit, leafst troch miljarden brûkers?

Stap 3: Bou automatisearring ark

Alles giet sa't it moat. Jo kinne koade uploade en wizigingen ynsette foar boarnekontrôle, en freonen útnoegje om mei jo te wurkjen. Mar jo hawwe noch gjin app. Om dit in webapplikaasje te wêzen, moat it kompilearre en ferpakt wurde foar distribúsje of as in útfierber útfiere. (In ynterpretearre programmeartaal lykas JavaScript of PHP hoecht net kompilearre te wurden.)

Brûk in build automatisearring ark. Hokker ark jo ek kieze, it sil de koade yn it juste formaat gearstalle en opromjen, kompilaasje, testen en levering automatisearje. Bouwynstruminten ferskille per taal, mar de folgjende iepen boarne-opsjes wurde faak brûkt.

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Perfekt! Litte wy no de konfiguraasjebestannen fan it build-automatisaasje-ark ynfoegje yn boarnekontrôle, sadat it CI / CD-ark se bouwt.

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

It fielt goed. Mar wêr is dit alles no út te rollen?

Stap 4: Web Application Server

Dat, jo hawwe in ynpakt bestân dat kin wurde útfierd of útrôle. Foar in applikaasje om echt nuttich te wêzen, moat it in soarte fan tsjinst of ynterface hawwe, mar jo moatte it allegear earne pleatse.

In webapplikaasje kin host wurde op in webapplikaasjetsjinner. De applikaasje-tsjinner biedt in omjouwing wêr't jo ferpakte logika kinne útfiere, ynterfaces werjaan en webtsjinsten eksposearje oer in socket. Jo hawwe in HTTP-tsjinner en in pear oare omjouwings (bygelyks in firtuele masine) nedich om de applikaasjetsjinner te ynstallearjen. Litte wy no foardwaan as jo dit alles dogge as jo trochgean (hoewol ik hjirûnder oer konteners sil prate).

D'r binne ferskate iepen webapplikaasjeservers.

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Wy hawwe al in hast wurkjende DevOps-ketting. Geweldich wurk!

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Yn prinsipe kinne jo hjir stopje, dan kinne jo it sels behannelje, mar it is it wurdich te praten oer de kwaliteit fan 'e koade.

Stap 5: Test dekking

Testen kostet in protte tiid en muoite, mar it is better om flaters fuort te finen en de koade te ferbetterjen om ein brûkers te behagen. Foar dit doel binne d'r in protte iepen ark dy't de koade net allinich testje, mar ek advisearje oer hoe't jo it kinne ferbetterje. De measte CI / CD-ark kinne yn dizze ark pluggen en it proses automatisearje.

Testen is ferdield yn twa dielen: testkaders foar it skriuwen en útfieren fan tests, en ark mei hints om koadekwaliteit te ferbetterjen.

Testing Frameworks

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Tools mei kwaliteit tips

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

De measte fan dizze ark en kaders binne skreaun foar Java, Python en JavaScript, om't C++ en C# proprietêr binne (hoewol GCC iepen boarne is).

Wy hawwe de ark foar testdekking tapast, en no moat de DevOps-pipeline lykje op de ôfbylding oan it begjin fan 'e tutorial.

Oanfoljende stappen

Containers

Lykas ik earder sei, kin in applikaasje-tsjinner wurde host yn in firtuele masine as in server, mar konteners binne populêrder.

Wat binne konteners? Koartsein, yn in firtuele masine nimt it bestjoeringssysteem faak mear romte yn as de applikaasje, en in kontener is meastal genôch mei in pear biblioteken en konfiguraasje. Yn guon gefallen binne firtuele masines ûnmisber, mar de kontener kin de applikaasje tegearre mei de tsjinner opmeitsje sûnder ekstra kosten.

Foar konteners wurde Docker en Kubernetes normaal nommen, hoewol d'r oare opsjes binne.

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Lês artikels oer Docker en Kubernetes op opensource.com:

Middleware automatisearring ark

Us DevOps-keten is rjochte op gearwurkjend bouwen en leverjen fan in applikaasje, mar d'r binne oare nijsgjirrige dingen dy't jo kinne dwaan mei DevOps-ark. Brûk bygelyks Infrastructure as Code (IaC) ark, ek wol bekend as middleware automatisearring ark. Dizze ark helpe ynstallaasje, behear en oare taken foar middleware automatisearje. Bygelyks, in automatisearring ark kin nimme applikaasjes (web applikaasje tsjinner, database, monitoring ark) mei de juste konfiguraasjes en triuwe se nei de applikaasje tsjinner.

Hjir binne wat opsjes foar iepen middleware automatisearring ark:

Dummies Guide: Bouwe DevOps Chains mei iepen boarne ark

Details yn 'e artikels opensource.com:

No wat?

Dit is gewoan it tip fan 'e iisberch. De DevOps-ketting kin folle mear dwaan. Begjin mei in CI / CD-ark en sjoch wat jo oars kinne automatisearje om jo wurk makliker te meitsjen. Ferjit net oer iepen kommunikaasje ark foar effektive gearwurking.

Hjir binne wat mear goede DevOps-artikels foar begjinners:

Jo kinne DevOps ek yntegrearje mei iepen agile ark:

Boarne: www.habr.com

Add a comment