Udhezues për fillestarët: krijimi i një DevOps-pipeline

Nëse jeni fillestar në DevOps, shikoni këtë udhëzues për krijimin e pipeline-it tuaj të parë me pesë hapa.

Udhezues për fillestarët: krijimi i një DevOps-pipeline

DevOps është bërë zgjidhja standarte për të rregulluar proceset e zhvillimit të softuerit që janë të ngadalta, të shpërndara ose të pamjaftueshme. Problemi është se, nëse jeni fillestar në DevOps dhe nuk e dini nga të filloni, mund t'ju mungojë një kuptim i këtyre metodave. Në këtë artikull do të flasim për definimin e një pipeline-i DevOps, dhe gjithashtu do të ofrohet një udhëzim për krijimin e tij në pesë hapa. Megjithëse ky udhëzues nuk është gjithëpërfshirës, ai duhet t'ju japë një bazë për të filluar udhëtimin tuaj dhe për të zgjeruar njohuritë tuaja në të ardhmen. Por le të fillojmë me historinë.

Udhëtimi im në DevOps

Deri më tani kam punuar në ekipin e cloud-it të Citi Group, duke zhvilluar një aplikacion web Infrastructure-as-a-Service (IaaS) për menaxhimin e infrastrukturës cloud të Citi, por gjithmonë më ka interesuar se si të bëj procesin e zhvillimit më efikas dhe të sjell ndryshime pozitive kulturore në ekipin e zhvilluesve. Të përgjigjen e gjeta në një libër të rekomanduar nga Greg Lavender, drejtorin teknik të Citi për arkitekturën dhe infrastrukturën cloud. Libri quhej “Projekti Feniks” (The Phoenix Project), dhe në të shpjegohen parimet e DevOps, duke u lexuar si një roman.

Në tabelën në anën e pasme të librit tregohet sa shpesh kompani të ndryshme deployojnë sistemet e tyre në një mjedis për publikim:

Amazon: 23,000 në ditë
Google: 5,500 në ditë
Netflix: 500 në ditë
Facebook: Një herë në ditë
Twitter: 3 herë në javë
Kompania tipike: Një herë në 9 muaj

Si është e mundur që Amazon, Google dhe Netflix të kenë këto frekuenca? E gjithë kjo sepse këto kompani kanë gjetur mënyrën për të ndërtuar një pipeline DevOps pothuajse perfekt.

Ishim ishim ne ehebni. Ishim ishim ne kum mkan ne DevOps ne Citi. Ne qika i ke mare ne,she qika ne qepu ne mqar ne shkipaletine, por qika i tejet manjin me dhell ne njerin. Qitijni neve qika ne. Por qika shkete i bajde don bashkene kone, dhe ne ba vei ne ato ndoptimine i imeneve. Kishim njofi me njef shtet t'jeshte, qika sbali i baji, dhe ne gjenin i mrrinj ne bjenje-tjeter.

Ne kuptuan se duhet i vepruar, dhe te gjoh disa gjicom. Ne ecem nejme i pa bashk punen per te rreatisu nje ne DevOpsprova - ai installoi ni virtual Go dhe aplikacionet e Tervezes Tomcat, kurse po punoja me Jenkins, integrerua Atlassian Jira dhe BitBucket, dhe po punoja i testit ne kod. Ky projekti ishte mundial: ne tallim slides, dyshjta, dhe arritem drejt ketij nje tip dhe punen e imeneve dhe fillovem i punen e sajim gjer ne Git me dataplet shalt

Tani kuptoj si e thjeshtë ishte DevOps i ynë: ne nuk përdorim zgjerime si Jenkins files a Ansible. Megjithatë, ky transmetim i thjeshtë punoi mirë, ndoshta për shkak të parimit të Pareto (i njohur gjithashtu si rregulli 80/20).

Një hyrje e shkurtër në DevOps dhe procesin CI/CD

Nëse pyetni disa njerëz: "Çfarë është DevOps?", ka të ngjarë të merrni disa përgjigje të ndryshme. DevOps, si Agile, është zhvilluar për të përfshirë shumë disiplinat e ndryshme, por shumica e njerëzve do të bien dakord mbi disa gjëra: DevOps është një praktikë e zhvillimit të softuerit ose një cikël zhvillimi të softuerit (SDLC), ku parimi qendror është ndryshimi i kulturës, në të cilën zhvilluesit dhe jo-zhvilluesit jetojnë në një mjedis ku:

Operacione të automatizuara që më përpara ishin kryer manualisht;
Çdokush bën atë që di të bëjë më mirë;
Numri i implementimeve brenda një periudhe të caktuar rritet; Rritet kapaciteti i kalimit;
Rritet fleksibiliteti në zhvillim.

Edhe pse të kenë mjete të duhura programore nuk është e vetmja gjë që duhet për të krijuar një mjedis DevOps, disa mjete janë të nevojshme. Një mjet kyç është vazhdimi i integrimit dhe vazhdimi i shpërndarjes (CI/CD). Në këtë linjë, mjediset kanë faza të ndryshme (p.sh., DEV, INT, TST, QA, UAT, STG, PROD), shumë operacione janë automatizuar, dhe zhvilluesit mund të shkruajnë kod me cilësi të lartë, të arrijnë fleksibilitet në zhvillim dhe një frekuencë të lartë të shpërndarjeve.

Ky artikull përshkruan një qasje me pesë hapa për të krijuar një linjë DevOps, të ngjashme me atë të ilustruar në diagramin e mëposhtëm, duke përdorur mjete me burim të hapur.

Hapi 1: Metodat CI/CD

Gjëja e parë që ju nevojitet është një mjet për CI/CD. Jenkins, një mjet me burim të hapur, i bazuar në Java dhe i shpërndarë nën licencën MIT, është mjeti që popullarizoi drejtimin DevOps dhe është bërë standardi de facto.

Pra, çfarë është Jenkins? Mendoni për të si një lloji të telekomandës magjike universale që mund të bisedojë me shërbime dhe mjete të ndryshme dhe t'i organizojë ato. Vetë CI/CD mjeti, si Jenkins, është i padobishëm, por bëhet më i fuqishëm ndërsa lidhet me mjete dhe shërbime të ndryshme.

Jenkins është vetëm një nga shumë mjetet me burim të hapur për CI/CD që mund të përdorni për të ndërtuar një linjë DevOps.

Jenkins: Creative Commons dhe MIT
Travis CI: MIT
CruiseControl: BSD
Buildbot: GPL
Apache Gump: Apache 2.0
Cabie: GNU

Këtu është si duken proceset DevOps me mjetin CI/CD:

Udhezues për fillestarët: krijimi i një DevOps-pipeline

Keni një mjet CI/CD që funksionon në localhost-in tuaj, por për momentin nuk mund të bëni shumë. Le të kalojmë në hapin tjetër të aventurës në botën e DevOps.

Hapi 2: Menaxhimi i sistemeve të kontrollit të kodit burimor

Mënyra më e mirë (dhe ndoshta më e thjeshtë) për të verifikuar se mjeti juaj CI/CD mund të bëjë magji është të integrohet me një mjet të kontrollit të kodit burimor (SCM). Pse ju nevojitet kontrolli i kodit burimor? Supozoni se po zhvilloni një aplikacion. Çdo herë që krijoni një aplikacion, ju programoni, dhe nuk ka rëndësi nëse po përdorni Java, Python, C++, Go, Ruby, JavaScript apo ndonjë nga miliardë gjuhët e tjera të programimit. Kodi që shkruani quhet kod burimor. Në fillim, sidomos kur punoni vetëm, ndoshta mund ta vendosni gjithçka në një dosje lokale. Por kur projekti bëhet më i madh dhe ftoni të tjerë për të bashkëpunuar, ju nevojitet një mënyrë për të parandaluar konfliktet gjatë ndarjes efektive të modifikimeve. Ju gjithashtu keni nevojë për një mënyrë për të rikuperuar versionet e mëparshme, sepse krijimi i kopjeve rezervë dhe kopjimi/ngjitja tek ato është tashmë i vjetruar. Ju (dhe shokët tuaj në ekip) keni nevojë për diçka më të mirë.

Këtu është ku mjeti i kontrollit të kodit burimor bëhet praktikisht i domosdoshëm. Ky mjet ruan kodin tuaj në depo, mban registar versionesh dhe koordinoh punën e pjesëmarrësve në projekt.

Megjithëse ekzistojnë shumë mjete për kontrollin e kodit burimor, Git është standardi, dhe kjo është e vërtetë. Unë e rekomandoj fort përdorimin e Git, megjithatë, nëse dëshironi, ka edhe mundësi të tjera me burim të hapur.

Git: GPLv2 dhe LGPL v2.1
Subversion: Apache 2.0
Sistemi i Versioneve të Konsumuara (CVS): GNU
Vesta: LGPL
Mercurial: GNU GPL v2+

Kështu duket pipeline-i DevOps me shtimin e mjeteve të kontrollit të kodit burimor.

Udhezues për fillestarët: krijimi i një DevOps-pipeline

Mjeti CI/CD mund të automatizojë proceset e verifikimit, të marrjes së kodit burimor dhe të bashkëpunimit midis anëtarëve. E mira? Por si ta bëjmë këtë një aplikacion funksional, që miliarda njerëz ta përdorin dhe ta vlerësojnë?

Hapi 3: Krijimi i mjeteve të automatizimit të ndërtimit

Shkëlqyer! Ju mund të kontrolloni kodin dhe të bëni ndryshime në sistemin e kontrollit të burimeve, si dhe të ftoni miqtë tuaj për bashkëpunim në zhvillim. Por ende nuk keni krijuar një aplikacion. Për të krijuar një aplikacion web, ai duhet të kompilohet dhe të paketizohet në një format të shkurtesës për shpërndarje ose të ekzekutohet si një skedë që mund të zbatohet. (Kujtoni, që një gjuhë programimi e interpretuar, si JavaScript ose PHP, nuk ka nevojë për kompilim).

Përdorni një mjet automatizimi për ndërtimin. Çfarëdo që të jetë mjeti i automatizimit për ndërtimin që vendosni të përdorni, të gjithë ata ndjekin të njëjtin qëllim: të ndihmojnë në ndërtimin e burimit në një format të dëshiruar dhe të automatizojnë detyrën e pastrimit, kompilimit, testimit dhe shpërndarjes në një mjedis të caktuar. Mjetet për ndërtimin do të ndryshojnë në varësi të gjuhës suaj të programimit, por ja disa mundësi të zakonshme me kod të hapur.

Emri
Licenca
Gjuha e programimit

Maven
Apache 2.0
Java

Ant
Apache 2.0
Java

Gradle
Apache 2.0
Java

Bazel
Apache 2.0
Java

Make
GNU
N/A

Grunt
MIT
JavaScript

Gulp
MIT
JavaScript

Buildr
Apache
Ruby

Rake
MIT
Ruby

A-A-P
GNU
Python

SCons
MIT
Python

BitBake
GPLv2
Python

Cake
MIT
C#

ASDF
Expat (MIT)
LISP

Cabal
BSD
Haskell

Shkëlqyer! Ju mund të vendosni skedarët e konfigurimit të mjetit të automatizimit në sistemin e menaxhimit të burimeve dhe të lejoni mjetin tuaj CI/CD të mbledhë gjithçka së bashku.

Udhezues për fillestarët: krijimi i një DevOps-pipeline

Çdo gjë është në rregull, apo jo? Por ku të shpërndani aplikacionin tuaj?

Hapi 4: Serveri për aplikacione web

Për momentin keni një skedar të paketuar që mund të jetë si ekzekutues ashtu edhe instalues. Për të qenë ndonjë aplikacion vërtet i dobishëm, ai duhet të ofrojë ndonjë shërbim ose ndërfaqe, por ju nevojitet një kontenier për të akomoduar aplikacionin tuaj.

Serveri për aplikacione web është pikërisht ai kontenier. Serveri ofron një mjedis në të cilin mund të përcaktohet logjika e paketës së shpërndarjes. Gjithashtu, serveri ofron një ndërfaqe dhe ofron shërbime web, duke hapur soket për botën e jashtme. Ju nevojitet një server HTTP për ta instaluar këtë, si dhe një mjedis (si një makinë virtuale). Por për momentin, le të supozojmë se do të mësoni për këtë më pas (në të njëjtën kohë, do t’iu flas për kontejnerët më poshtë).

Ekzistojnë disa serverë për aplikacione web me kod të hapur.

Emri
Licenca
Gjuha e programimit

Tomcat
Apache 2.0
Java

Jetty
Apache 2.0
Java

WildFly
GNU Lesser Public
Java

GlassFish
CDDL & GNU Less Public
Java

Django
3-Clause BSD
Python

Tornado
Apache 2.0
Python

Gunicorn
MIT
Python

Python
MIT
Python

Rails
MIT
Ruby

Node.js
MIT
Javascript

DevOps pipeline juaj është gati për t'u përdorur. Punë e shkëlqyer!

Udhezues për fillestarët: krijimi i një DevOps-pipeline

Megjithëse mund të ndaloni këtu dhe të angazhoheni në integrimin e vetë, cilësia e kodit është një gjë e rëndësishme për zhvilluesin e aplikacioneve, dhe kjo duhet të shqetësohet.

Hapi 5: Mbulsë e testimit të kodit

Implementimi i testeve mund të jetë një kërkesë e rëndë, por zhvilluesit duhet të kapin çdo gabim në aplikacion në fazat e hershme dhe të përmirësojnë cilësinë e kodit për të siguruar që përdoruesit e fundit do të jenë të kënaqur. Fatmirësisht, ekzistojnë shumë mjete me kod të hapur për të testuar kodin tuaj dhe për të formuar rekomandime për përmirësimin e cilësisë së tij. Më e mira është se shumica e mjeteve CI/CD mund të lidhen me këto mjete dhe të automatizojnë procesin.

Testimi i kodit përbëhet nga dy pjesë: kornizat për testimin e kodit, të cilat ndihmojnë në shkrimin dhe ekzekutimin e testeve, si dhe mjetet për formimin e propozimeve, të cilat ndihmojnë në përmirësimin e cilësisë së kodit.

Sistemet e testimit të kodit

Emri
Licenca
Gjuha e programimit

JUnit
Licenca Publike e Eclipse
Java

EasyMock
Apache
Java

Mockito
MIT
Java

PowerMock
Apache 2.0
Java

Pytest
MIT
Python

Hypothesis
Mozilla
Python

Tox
MIT
Python

Sistemet e rekomandimit për përmirësimin e kodit

Emri
Licenca
Gjuha e programimit

Cobertura
GNU
Java

CodeCover
Eclipse Publike (EPL)
Java

Coverage.py
Apache 2.0
Python

Emma
Licenca Publike të Zakonshme
Java

JaCoCo
Licenca Publike e Eclipse
Java

Hypothesis
Mozilla
Python

Tox
MIT
Python

Jasmine
MIT
JavaScript

Karma
MIT
JavaScript

Mocha
MIT
JavaScript

Jest
MIT
JavaScript

Kujdes, shumica e mjeteve dhe kornizave të përmendura më sipër janë shkruar për Java, Python dhe JavaScript, pasi C++ dhe C# janë gjuhë programimi pronësore (edhe pse GCC ka kod të hapur).

Tani, që keni zbatuar mjetet për mbulimin e kodit me teste, DevOps pipeline juaj duhet të duket si diagrami i paraqitur në fillim të këtij udhëzuesi.

Hapat shtesë

Kontenierët

Siç kam thënë më parë, ju mund të hostoni serverin tuaj në një makinë virtuale ose server, por kontenierët janë një zgjidhje popullore.

Çfarë janë kontenierët? Një shpjegim i shkurtër është se një makinë virtuale ka nevojë për një sasi të madhe të memories së sistemit operativ, që tejkalon madhësinë e aplikacionit, ndërsa kontenieri ka nevojë vetëm për disa biblioteka dhe konfigurime për të funksionuar aplikacionin. Është e qartë se një makinë virtuale ka ende fusha të rëndësishme përdorimi, por konteneri është një zgjidhje e lehtë për hostimin e aplikacionit, përfshirë serverin e aplikacionit.

Megjithëse ekzistojnë edhe mundësi të tjera për kontejnerët, ato më të njohura janë Docker dhe Kubernetes.

Docker: Apache 2.0
Kubernetes: Apache 2.0

Mjetet ndërmjetëse të automatizimit

Pajisja jonë DevOps kryesisht është e fokusuar në bashkë-krijimin dhe vendosjen e aplikacioneve, por ekzistojnë shumë gjëra të tjera që mund të bëhen me ndihmën e mjeteve DevOps. Njëra prej tyre është përdorimi i mjeteve Infrastructure as Code (IaC), të njohura gjithashtu si mjete ndërmjetëse automatizimi. Këto mjete ndihmojnë në automatizimin e instalimeve, menaxhimit dhe detyrave të tjera për software-in ndërmjetës. Për shembull, një mjet automatizimi mund të nxjerrë aplikacione si serverin e aplikacioneve, bazën e të dhënave dhe mjetin e monitorimit, me konfigurimet e duhura dhe t'i vendosë ato në serverin e aplikacioneve.

Ja disa mjete ndërmjetëse automatizimi me kod të hapur:

Ansible: GNU Public
SaltStack: Apache 2.0
Chef: Apache 2.0
Puppet: Apache ose GPL

Udhezues për fillestarët: krijimi i një DevOps-pipeline

Merrni informacione të plota se si të merrni një profesion të kërkuar nga zero ose të përmirësoni aftësitë dhe pagën duke ndjekur kurse online me pagesë në SkillFactory:

kurse të tjera

Të dobishme

Burimi: habr.com

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster