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.
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.
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:
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.
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.
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!
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
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: