Upangiri Woyamba: Kupanga Pipe ya DevOps

Ngati ndinu watsopano ku DevOps, yang'anani njira zisanu zopangira mapaipi anu oyamba.

Upangiri Woyamba: Kupanga Pipe ya DevOps

DevOps yakhala yankho lokhazikika pakukonza njira zochepetsera, zosagwirizana kapena zosweka. Vuto ndilakuti ngati mwangoyamba kumene ku DevOps ndipo simukudziwa komwe mungayambire, mutha kusamvetsetsa njira izi. Nkhaniyi ifotokoza tanthauzo la payipi ya DevOps ndipo iperekanso malangizo asanu opangira imodzi. Ngakhale phunziroli silikukwanira, liyenera kukupatsani maziko oti muyambe ulendo wanu ndikukulitsa chidziwitso chanu mtsogolo. Koma tiyeni tiyambe ndi mbiri yakale.

Ulendo Wanga wa DevOps

M'mbuyomu ndidagwirapo ntchito pagulu lamtambo la Citi Gulu ndikupanga pulogalamu yapaintaneti ya Infrastructure-as-a-Service (IaaS) kuti ndiyang'anire maziko amtambo a Citi, koma nthawi zonse ndimakhala ndi chidwi ndi momwe ndingapangire kuti chitukukocho chikhale chogwira ntchito komanso kubweretsa kusintha kwachikhalidwe kwa anthu. gulu lachitukuko. Ndinapeza yankho m'buku lolimbikitsidwa ndi Greg Lavender, CTO wa Cloud Architecture and Infrastructure ku Citi. Bukuli linkatchedwa The Phoenix Project (Pulogalamu ya Phoenix), ndipo limafotokoza mfundo za DevOps, koma zimawerengedwa ngati buku.

Gome lomwe lili kuseri kwa bukhuli likuwonetsa momwe makampani osiyanasiyana amagwiritsira ntchito machitidwe awo kumalo omasulidwa:

Amazon: 23 patsiku
Google: 5 patsiku
Netflix: 500 patsiku
Facebook: Kamodzi patsiku
Twitter: katatu pa sabata
Kampani yodziwika: Kamodzi pamiyezi 9 iliyonse

Kodi ma frequency a Amazon, Google ndi Netflix amatha bwanji? Izi ndichifukwa makampaniwa apeza momwe angapangire mapaipi amtundu wa DevOps.

Tidali kutali ndi izi mpaka tidakhazikitsa DevOps ku Citi. Kalelo, gulu langa linali ndi malo osiyanasiyana, koma kutumizidwa pa seva yachitukuko kunali pamanja. Madivelopa onse anali ndi mwayi wopeza seva imodzi yokha yachitukuko kutengera IBM WebSphere Application Server Community Edition. Vuto linali loti seva imatseka nthawi iliyonse ogwiritsa ntchito angapo amayesa kugwiritsa ntchito nthawi imodzi, kotero opanga amayenera kukambirana zolinga zawo wina ndi mzake, zomwe zinali zowawa kwambiri. Kuonjezera apo, panali zovuta zokhudzana ndi chiwerengero chochepa cha zizindikiro zoyesa, njira zolemetsa zotumizira, komanso kulephera kutsata kutumizidwa kwa code yokhudzana ndi ntchito inayake kapena nkhani ya ogwiritsa ntchito.

Ndinazindikira kuti chinachake chiyenera kuchitika ndipo ndinapeza mnzanga wamaganizo ofanana. Tidaganiza zogwirira ntchito limodzi pomanga mapaipi oyambira a DevOps - adakhazikitsa makina a Tomcat ndi seva yogwiritsira ntchito pomwe ndimagwira ntchito ku Jenkins, kuphatikiza Atlassian Jira ndi BitBucket, ndikugwira ntchito pakuyesa mayeso. Pulojekiti yam'mbaliyi idachita bwino kwambiri: tidangotengera njira zambiri, tidapeza nthawi yopitilira 100% pa seva yathu yachitukuko, popereka kutsata ndikuwongolera kuwunika kwa code, ndikuwonjezera kuthekera kolumikiza nthambi za Git ku nkhani za Jira kapena kutumiza. Zida zambiri zomwe tidagwiritsa ntchito popanga mapaipi athu a DevOps zinali zotseguka.

Tsopano ndikumvetsetsa momwe mapaipi athu a DevOps anali osavuta: sitinagwiritse ntchito zowonjezera monga mafayilo a Jenkins kapena Ansible. Komabe, mapaipi osavutawa adagwira ntchito bwino, mwina chifukwa cha mfundo ya Pareto (yomwe imadziwikanso kuti lamulo la 80/20).

Chidule Chachidule cha DevOps ndi CI/CD Pipeline

Mukafunsa anthu angapo, "Kodi DevOps ndi chiyani?", mudzapeza mayankho angapo osiyanasiyana. DevOps, monga Agile, yasintha kuti ikhale ndi machitidwe osiyanasiyana, koma anthu ambiri amavomereza pa zinthu zingapo: DevOps ndi machitidwe otukula mapulogalamu kapena mapulogalamu a chitukuko cha mapulogalamu (SDLC) omwe mfundo zake zapakati zikusintha chikhalidwe chomwe opanga ndi osakhala nawo. Madivelopa alipo m'malo omwe:

Zochita zomwe zidachitidwa kale pamanja zakhala ndi makina;
Aliyense amachita zomwe amachita bwino;
Chiwerengero cha zochitika pa nthawi inayake chimawonjezeka; Kutuluka kumawonjezeka;
Kuchulukitsa kusinthasintha kwachitukuko.

Ngakhale kukhala ndi zida zoyenera zamapulogalamu sizinthu zokha zomwe muyenera kupanga malo a DevOps, zida zina ndizofunikira. Chida chofunikira ndikuphatikizana mosalekeza ndi kutumizidwa mosalekeza (CI/CD). Papaipi iyi, malo ali ndi magawo osiyanasiyana (monga DEV, INT, TST, QA, UAT, STG, PROD), ntchito zambiri zimangochitika zokha, ndipo opanga amatha kulemba ma code apamwamba, kukwaniritsa agility yachitukuko, komanso mitengo yayikulu yotumizira.

Nkhaniyi ikufotokoza njira zisanu zopangira mapaipi a DevOps ngati omwe akuwonetsedwa pachithunzichi pogwiritsa ntchito zida zotseguka.

Gawo 1: CI/CD Njira

Chinthu choyamba muyenera ndi CI/CD chida. Jenkins, chida chotseguka chozikidwa pa Java komanso chololedwa pansi pa layisensi ya MIT, ndiye chida chomwe chidatchuka kwambiri pa DevOps ndipo chakhala mulingo wa de facto.

Ndiye Jenkins ndi chiyani? Ganizirani ngati mtundu wina wamatsenga akutali akutali omwe amatha kuyankhula ndi kukonza mautumiki osiyanasiyana ndi zida. Payokha, chida cha CI / CD monga Jenkins ndichabechabe, koma chimakhala champhamvu kwambiri pamene chimagwirizanitsa ndi zipangizo ndi mautumiki osiyanasiyana.

Jenkins ndi imodzi mwa zida zambiri zotseguka za CI/CD zomwe mungagwiritse ntchito popanga mapaipi anu a DevOps.

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

Izi ndi momwe machitidwe a DevOps amawonekera ndi chida cha CI/CD:

Upangiri Woyamba: Kupanga Pipe ya DevOps

Muli ndi chida cha CI/CD chomwe chikuyenda pa localhost yanu, koma palibe zambiri zomwe mungachite pakadali pano. Tiyeni tipitirire ku gawo lotsatira laulendo wa DevOps.

Khwerero 2: Sinthani Makina Owongolera Magwero

Njira yabwino kwambiri (komanso yosavuta) yotsimikizira kuti chida chanu cha CI/CD chingathe kuchita zamatsenga ndikuphatikizana ndi chida chowongolera ma code source (SCM). Chifukwa chiyani mukufunika kuwongolera magwero? Tiyerekeze kuti mukupanga pulogalamu. Nthawi zonse mukapanga pulogalamu, mumakonza, ndipo zilibe kanthu kaya mumagwiritsa ntchito Java, Python, C++, Go, Ruby, JavaScript, kapena zilankhulo zilizonse zamapulogalamu. Khodi yomwe mumalemba imatchedwa source code. Pachiyambi, makamaka pamene mukugwira ntchito nokha, ndi bwino kuika zonse mu bukhu lapafupi. Koma pamene polojekiti ikukulirakulira ndikuyitanitsa anthu ena kuti agwirizane, muyenera njira yopewera mikangano ndikugawana zosintha. Mufunikanso njira yobwezeretsanso matembenuzidwe am'mbuyomu, chifukwa kupanga zosunga zobwezeretsera ndikukopera / kumata m'menemo kukutha. Inu (ndi anzanu) mumafunikira china chabwinoko.

Apa ndipamene kuwongolera ma code source kumakhala kofunikira. Chida ichi chimasunga khodi yanu m'nkhokwe, kumatsata zomasulira, ndikugwirizanitsa ntchito za omwe atenga nawo mbali polojekiti.

Ngakhale pali zida zambiri zowongolera magwero kunja uko, Git ndiye muyeso, ndipo ndiye. Ndikupangira kugwiritsa ntchito Git, ngakhale pali zosankha zina zotseguka ngati mukufuna.

Git: GPLv2 ndi LGPL v2.1
Kusintha: Apache 2.0
Concurrent Versions System (CVS): GNU
Pulogalamu: LGPL
Mercurial: GNU GPL v2+

Izi ndi zomwe mapaipi a DevOps amawonekera ndikuwonjezera ma code code.

Upangiri Woyamba: Kupanga Pipe ya DevOps

Chida cha CI/CD chimatha kusintha njira zowunikira, kupeza ma code code, ndi mgwirizano pakati pa mamembala. Osayipa kwenikweni? Koma mumasintha bwanji kuti ikhale yogwira ntchito kuti mabiliyoni a anthu agwiritse ntchito ndikuyamikira?

Khwerero 3: Pangani Chida Chodzipangira Chokha

Zabwino! Mutha kuwunikanso kachidindo ndikusintha kuti muzitha kuyang'anira magwero, ndikuyitanitsa anzanu kuti agwirizane nawo pachitukuko. Koma simunapangebe pulogalamu. Kuti mupange pulogalamu yapaintaneti, iyenera kuphatikizidwa ndikuphatikizidwa mumtundu wotha kutumizidwa kapena kuyendetsedwa ngati fayilo yotheka. (Dziwani kuti chilankhulo chotanthauziridwa monga JavaScript kapena PHP sichiyenera kupangidwa).

Gwiritsani ntchito chida chodzipangira chokha. Mosasamala kanthu kuti ndi chida chotani chomwe mwasankha kugwiritsa ntchito, onse ali ndi cholinga chofanana: pangani ma code code mumtundu womwe mukufuna ndikuwongolera ntchito yoyeretsa, kulemba, kuyesa, ndi kutumiza kumalo enaake. Zida zomangira zimasiyana kutengera chilankhulo chanu, koma nazi njira zina zodziwika bwino zotsegula.

Mutu
Chilolezo
Chilankhulo chopanga mapulogalamu

Maven
Apache 2.0
Java

Ant
Apache 2.0
Java

Mzere
Apache 2.0
Java

Bazel
Apache 2.0
Java

Pangani
GNU
N / A

Kung'ung'udza
MIT
JavaScript

Gulp
MIT
JavaScript

Womanga
Apache
Ruby

Makoswe
MIT
Ruby

AAP
GNU
Python

Mitundu
MIT
Python

BitBake
GPLv2
Python

keke
MIT
C#

ASDF
Expat (MIT)
LISP

Cabal
BSD
Haskell

Zabwino! Mutha kuyika mafayilo osinthira zida zopangira makina anu ndikulola chida chanu cha CI/CD kuti chiyike zonse pamodzi.

Upangiri Woyamba: Kupanga Pipe ya DevOps

Zonse zili bwino, sichoncho? Koma mungatumizire kuti pulogalamu yanu?

Khwerero 4: Web Application Server

Pakadali pano, muli ndi fayilo yopakidwa yomwe imatha kuchitidwa kapena kuyikika. Kuti pulogalamu iliyonse ikhale yothandiza, iyenera kupereka mtundu wina wa ntchito kapena mawonekedwe, koma pamafunika chidebe kuti mugwiritse ntchito.

Seva yogwiritsira ntchito intaneti ndi chidebe chotere. Seva imapereka malo omwe malingaliro a phukusi akugwiritsidwa ntchito angatanthauzidwe. Seva imaperekanso mawonekedwe ndikupereka mautumiki apa intaneti powonetsa sockets kudziko lakunja. Mufunika seva ya HTTP, komanso malo ena (monga makina enieni) kuti muyike. Pakadali pano, tiyerekeze kuti muphunzira zambiri za izi (ngakhale ndiphimba zotengera pansipa).

Pali ma seva angapo otsegulira ogwiritsa ntchito pa intaneti.

Mutu
Chilolezo
Chilankhulo chopanga mapulogalamu

Tomcat
Apache 2.0
Java

Yetty
Apache 2.0
Java

WildFly
GNU Lesser Public
Java

GlassFish
CDDL & GNU Zochepa Pagulu
Java

Django
3-Ndime BSD
Python

mphepo yamkuntho
Apache 2.0
Python

mfuti
MIT
Python

Python
MIT
Python

Miyendo
MIT
Ruby

Node.js
MIT
Javascript

Paipi yanu ya DevOps yatsala pang'ono kugwiritsidwa ntchito. Ntchito yabwino!

Upangiri Woyamba: Kupanga Pipe ya DevOps

Ngakhale mutha kuyima pamenepo ndikugwirizanitsa nokha, mtundu wa code ndi chinthu chofunikira kuti wopanga mapulogalamu azidandaula nazo.

Khwerero 5: Kufalikira kwa Mayeso a Khodi

Kukhazikitsa mayeso kungakhale chinthu chinanso chovuta, koma opanga amayenera kugwira nsikidzi zilizonse mukugwiritsa ntchito msanga ndikusintha mtundu wa kachidindo kuwonetsetsa kuti ogwiritsa ntchito akhutitsidwa. Mwamwayi, pali zida zambiri zotseguka zoyesera ma code anu ndikupanga malingaliro owongolera mtundu wake. Chomwe chili chabwino ndichakuti zida zambiri za CI/CD zimatha kulumikizana ndi zida izi ndikusinthiratu njirayo.

Kuyesa ma code kumakhala ndi magawo awiri: zoyeserera zamakhodi zomwe zimakuthandizani kulemba ndikuyesa mayeso, ndi zida zamaganizidwe zomwe zimakuthandizani kuti ma code anu azikhala abwino.

Machitidwe oyesera ma code

Mutu
Chilolezo
Chilankhulo chopanga mapulogalamu

JUnit
Eclipse Licens Public
Java

EasyMock
Apache
Java

Mockito
MIT
Java

PowerMock
Apache 2.0
Java

Pytest
MIT
Python

Hypothesis
Mozilla
Python

tox
MIT
Python

Machitidwe opangira ma code

Mutu
Chilolezo
Chilankhulo chopanga mapulogalamu

Cobertura
GNU
Java

CodeCover
Eclipse Public (EPL)
Java

Coverage.py
Apache 2.0
Python

Emma
Common Public License
Java

Wachinyamata
Eclipse Licens Public
Java

Hypothesis
Mozilla
Python

tox
MIT
Python

Jasmine
MIT
JavaScript

Karma
MIT
JavaScript

Mocha
MIT
JavaScript

pali
MIT
JavaScript

Dziwani kuti zida zambiri ndi zomangira zomwe tazitchula pamwambapa zidalembedwera Java, Python ndi JavaScript, popeza C++ ndi C # ndi zilankhulo zaumwini (ngakhale GCC ndi gwero lotseguka).

Tsopano popeza mwakhazikitsa zida zoyeserera, mapaipi anu a DevOps akuyenera kuwoneka ofanana ndi chithunzi chomwe chawonetsedwa koyambirira kwa phunziroli.

Njira Zowonjezera

Zotengera

Monga ndanenera, mutha kuchititsa seva yanu pamakina kapena seva, koma zotengera ndi yankho lodziwika bwino.

Kodi zotengera ndi chiyani? Kufotokozera mwachidule ndikuti makina owoneka bwino amafunikira kukumbukira kwamakina ambiri, kupitilira kukula kwa pulogalamuyo, pomwe chidebe chimangofunika malaibulale ochepa ndi masinthidwe kuti agwiritse ntchito. Mwachiwonekere, pali ntchito zofunikira pa makina enieni, koma chidebe ndi njira yopepuka yogwiritsira ntchito, kuphatikizapo seva yogwiritsira ntchito.

Ngakhale pali zosankha zina zotengera, zodziwika kwambiri ndi Docker ndi Kubernetes.

Docker: Apache 2.0
Kubernetes: Apache 2.0

Zida zopangira zokha zapakatikati

Mapaipi athu a DevOps amayang'ana kwambiri pakupanga mapulogalamu ogwirizana ndi kutumiza, koma pali zinthu zina zambiri zomwe zingatheke ndi zida za DevOps. Chimodzi mwa izo ndikugwiritsa ntchito zida za Infrastructure monga Code (IaC), zomwe zimadziwikanso kuti zida zopangira makina apakati. Zida izi zimathandizira kukhazikitsa, kuyang'anira, ndi ntchito zina zapakati. Chifukwa chake, mwachitsanzo, chida chodzipangira chokha chimatha kuchotsa mapulogalamu ngati seva yogwiritsira ntchito intaneti, nkhokwe, ndi chida chowunikira chokhala ndi masinthidwe olondola ndikuzitumiza ku seva yofunsira.

Nawa zida zina zopangira makina otsegulira magwero apakati:

Zofunika: GNU Public
SaltStack: Apache 2.0
Chef: Apache 2.0
Chidole: Apache kapena GPL

Upangiri Woyamba: Kupanga Pipe ya DevOps

Dziwani zambiri zamomwe mungapezere ntchito yomwe mukufuna kuyambira pachiyambi kapena Level Up malinga ndi luso ndi malipiro pochita maphunziro olipidwa pa intaneti kuchokera ku SkillFactory:

maphunziro ambiri

Zothandiza

Source: www.habr.com

Kuwonjezera ndemanga