Ke alakaʻi a ka poʻe hoʻomaka: Ke hana ʻana i kahi Pipeline DevOps

Inā he mea hou ʻoe i DevOps, e nānā i kēia alakaʻi ʻelima mau ʻanuʻu i ka hana ʻana i kāu pipeline mua.

Ke alakaʻi a ka poʻe hoʻomaka: Ke hana ʻana i kahi Pipeline DevOps

Ua lilo ʻo DevOps i ka hopena maʻamau no ka hoʻoponopono ʻana i nā kaʻina hana hoʻomohala lohi, ʻokiʻoki a haki paha. ʻO ka pilikia inā he mea hou ʻoe i DevOps a ʻaʻole ʻike i kahi e hoʻomaka ai, nele paha ʻoe i ka ʻike o kēia mau ʻenehana. E kūkākūkā kēia ʻatikala i ka wehewehe ʻana o kahi pipeline DevOps a hāʻawi pū i nā ʻōlelo kuhikuhi ʻelima no ka hana ʻana i hoʻokahi. ʻOiai ʻaʻole i pau kēia kumu aʻo, pono ia e hāʻawi iā ʻoe i kumu e hoʻomaka ai i kāu huakaʻi a hoʻonui i kou ʻike i ka wā e hiki mai ana. Akā, e hoʻomaka kākou me ka mōʻaukala.

ʻO kaʻu huakaʻi DevOps

Ua hana mua au ma ka hui ʻo Citi Group e hoʻomohala ana i kahi noi pūnaewele Infrastructure-as-a-Service (IaaS) e hoʻokele i ka ʻōnaehana kapuaʻi o Citi, akā makemake mau wau i ka hana ʻana i ke kaʻina hoʻomohala ʻoi aku ka maikaʻi a lawe mai i ka loli moʻomeheu maikaʻi i ka hui hoʻomohala. Ua loaʻa iaʻu ka pane ma kahi puke i ʻōlelo ʻia e Greg Lavender, CTO o Cloud Architecture and Infrastructure ma Citi. Ua kapa ʻia ka puke ʻo The Phoenix Project (ʻO ka papahana Phoenix), a wehewehe ia i nā loina o DevOps, akā heluhelu ia e like me ka moʻolelo.

Hōʻike ka papa ma hope o ka puke i ka manawa pinepine o nā ʻoihana ʻē aʻe e hoʻokau i kā lākou mau ʻōnaehana i kahi wahi hoʻokuʻu:

Amazon: 23 i kēlā me kēia lā
Google: 5 i kēlā me kēia lā
Netflix: 500 i kēlā me kēia lā
Facebook: Hoʻokahi manawa i ka lā
Twitter: 3 manawa i ka pule
ʻO ka hui maʻamau: Hoʻokahi manawa i kēlā me kēia 9 mahina

Pehea e hiki ai i nā alapine Amazon, Google a me Netflix? ʻO kēia no ka mea ua noʻonoʻo kēia mau ʻoihana pehea e hana ai i kahi pipeline DevOps kokoke loa.

Ua mamao mākou mai kēia a hiki i ka hoʻokō ʻana iā DevOps ma Citi. I kēlā manawa, loaʻa i kaʻu hui nā ʻano ʻokoʻa like ʻole, akā ʻo ka hoʻolaha ʻana ma ka kikowaena hoʻomohala he manual piha. Loaʻa i nā mea hoʻomohala āpau i hoʻokahi wale nō kikowaena hoʻomohala e pili ana i ka IBM WebSphere Application Server Community Edition. ʻO ka pilikia, e pani ʻia ke kikowaena i ka wā e hoʻāʻo ai nā mea hoʻohana he nui i ka manawa like, no laila pono nā mea hoʻomohala e kamaʻilio i ko lākou manaʻo i kekahi i kekahi, he mea ʻeha loa ia. Eia kekahi, aia nā pilikia me ka uhi code test haʻahaʻa haʻahaʻa, nā kaʻina hana lima paʻakikī, a me ka hiki ʻole ke nānā i ka hoʻopili ʻana o ke code e pili ana i kahi hana kūikawā a i ʻole ka moʻolelo mea hoʻohana.

Ua ʻike wau he mea pono e hana ʻia a loaʻa iaʻu kahi hoa hana like. Ua hoʻoholo mākou e hui pū i ke kūkulu ʻana i ka pipeline DevOps mua - ua hoʻonohonoho ʻo ia i kahi mīkini virtual Tomcat a me kahi kikowaena noi ʻoiai wau e hana ana ma Jenkins, hoʻohui ʻia ʻo Atlassian Jira a me BitBucket, a hana i ka uhi code test. Ua kūleʻa loa kēia pāhana ʻaoʻao: ʻaneʻane hoʻopau mākou i nā kaʻina hana he nui, loaʻa kahi kokoke i ka 100% uptime ma kā mākou kikowaena hoʻomohala, hāʻawi ʻia ka nānā ʻana a hoʻomaikaʻi i ka uhi hoʻāʻo ʻana o ke code, a hoʻohui i ka hiki ke hoʻopili i nā lālā Git i nā pilikia Jira a i ʻole nā ​​hoʻolālā. ʻO ka hapa nui o nā mea hana a mākou i hoʻohana ai e kūkulu i kā mākou pipeline DevOps he kumu wehe.

I kēia manawa ua maopopo iaʻu i ka maʻalahi o kā mākou DevOps pipeline: ʻaʻole mākou i hoʻohana i nā hoʻonui e like me nā faila Jenkins a i ʻole Ansible. Eia naʻe, ua hana maikaʻi kēia pipeline maʻalahi, ma muli paha o ke kumu Pareto (ʻike pū ʻia ʻo ke kānāwai 80/20).

ʻO kahi hoʻolauna pōkole i DevOps a me ka CI/CD Pipeline

Inā ʻoe e nīnau i kekahi poʻe, "He aha ka DevOps?", E loaʻa paha iā ʻoe nā pane like ʻole. ʻO DevOps, e like me Agile, ua ulu aʻe i nā ʻano aʻoaʻo like ʻole, akā ʻae ka hapa nui o nā poʻe i kekahi mau mea: ʻO DevOps kahi hana hoʻomohala polokalamu a i ʻole ka hoʻomohala ʻana i nā polokalamu ola (SDLC) nona ka manaʻo koʻikoʻi e hoʻololi i ka moʻomeheu kahi e hoʻomohala ai a me nā mea ʻole. Aia nā mea hoʻomohala i kahi kaiapuni kahi:

ʻO nā hana i hana mua ʻia me ka lima i hana ʻia;
Hana nā kānaka a pau i kā lākou hana maikaʻi loa;
Hoʻonui ka nui o nā hoʻokō i kekahi manawa; Hoʻonui ka throughput;
Hoʻonui i ka hiki ke hoʻomohala.

ʻOiai ʻo ka loaʻa ʻana o nā lako polokalamu pono ʻaʻole wale ka mea e pono ai ʻoe e hana i kahi kaiapuni DevOps, pono kekahi mau mea hana. ʻO kahi mea hana koʻikoʻi ka hoʻohui mau a me ka hoʻomau mau ʻana (CI/CD). I loko o kēia pipeline, loaʻa i nā kaiapuni nā pae ʻokoʻa (e like me DEV, INT, TST, QA, UAT, STG, PROD), nui nā hana maʻalahi, a hiki i nā mea hoʻomohala ke kākau i nā code kiʻekiʻe, hoʻokō i ka agility hoʻomohala, a me nā helu hoʻolaha kiʻekiʻe.

Hōʻike kēia ʻatikala i kahi ala ʻelima i ka hana ʻana i kahi pipeline DevOps e like me ka mea i hōʻike ʻia ma ke kiʻi aʻe me ka hoʻohana ʻana i nā mea hana open source.

KaʻAnuʻu Hana 1: Kaʻina CI/CD

ʻO ka mea mua āu e pono ai he mea hana CI/CD. ʻO Jenkins, kahi hāmeʻa hāmama i hoʻokumu ʻia ma Java a laikini ʻia ma lalo o ka laikini MIT, ʻo ia ka mea hana i hoʻolaha ʻia DevOps a ua lilo i ka maʻamau de facto.

No laila he aha ʻo Jenkins? E noʻonoʻo ʻoe e like me ke ʻano o ka mana hoʻokalakupua honua e hiki ke kamaʻilio a hoʻonohonoho i nā lawelawe a me nā mea hana like ʻole. Ma kona iho, he mea pono ole ka mea hana CI/CD e like me Jenkins, akā e lilo ana ia i mea ikaika loa i ka pili ana i na mea hana a me na lawelawe like ole.

ʻO Jenkins kekahi o nā mea hana CI/CD open source hiki iā ʻoe ke hoʻohana e kūkulu i kāu pipeline DevOps.

Jenkins: Creative Commons a me MIT
Travis CI: MIT
CruiseControl:BSD
Buildbot: GPL
ʻO Apache Gump: Apache 2.0
Kāpena: GNU

Eia ke ʻano o nā kaʻina hana DevOps me kahi mea hana CI/CD:

Ke alakaʻi a ka poʻe hoʻomaka: Ke hana ʻana i kahi Pipeline DevOps

Loaʻa iā ʻoe kahi mea hana CI/CD e holo ana ma kāu localhost, akā ʻaʻole nui kāu hiki ke hana i kēia manawa. E neʻe kākou i ka pae aʻe o ka huakaʻi DevOps.

KaʻAnuʻu Hana 2: E hoʻoponopono i nā ʻōnaehana mana kumu

ʻO ke ala maikaʻi loa (a ʻoi aku paha ka maʻalahi) e hōʻoia i hiki i kāu mea hana CI/CD ke hana i kāna hana kilokilo ʻo ka hoʻohui ʻana me kahi mea hana mana code source (SCM). No ke aha ʻoe e pono ai i ka mana kumu? E ʻōlelo kākou e hoʻomohala ana ʻoe i kahi noi. I kēlā me kēia manawa āu e hana ai i kahi noi, ke hoʻonohonoho nei ʻoe, a ʻaʻole ia he mea nui inā hoʻohana ʻoe iā Java, Python, C++, Go, Ruby, JavaScript, a i ʻole nā ​​zillions o nā ʻōlelo papahana. Ua kapa ʻia ke code āu e kākau ai. I ka hoʻomaka ʻana, ʻoiai inā ʻoe e hana hoʻokahi, ʻoi aku ka maikaʻi o ka waiho ʻana i nā mea āpau i loko o kahi papa kuhikuhi kūloko. Akā i ka ulu ʻana o ka papahana a kono ʻoe i nā poʻe ʻē aʻe e hui pū, pono ʻoe i kahi ala e pale aku ai i nā paio ʻoiai e kaʻana like ana i nā hoʻololi. Pono ʻoe i kahi ala e hoʻihoʻi ai i nā mana o mua, no ka mea, ʻo ka hana ʻana i nā backup a me ke kope ʻana/ka hoʻopili ʻana i loko o ia mau mea ua lilo i mea kahiko. Pono ʻoe (a me kāu mau hoa hui) i kahi mea maikaʻi aʻe.

ʻO kēia kahi e lilo ai ka mana code source i mea e pono ai. Mālama kēia mea hana i kāu code i loko o nā waihona, mālama i nā mana, a hoʻonohonoho i ka hana a nā mea komo i ka papahana.

ʻOiai he nui nā mea hoʻokele kumu ma waho, ʻo Git ka maʻamau, a pololei hoʻi. Manaʻo nui wau i ka hoʻohana ʻana iā Git, ʻoiai aia nā koho open source inā makemake ʻoe.

Git: GPLv2 a me LGPL v2.1
Hoʻololi: Apache 2.0
Pūnaehana Pūnaehana Kūlike (CVS): GNU
Wehe: LGPL
Mercurial: GNU GPL v2+

ʻO kēia ke ʻano o kahi pipeline DevOps me ka hoʻohui o nā mana code source.

Ke alakaʻi a ka poʻe hoʻomaka: Ke hana ʻana i kahi Pipeline DevOps

Hiki i kahi mea hana CI/CD ke hoʻokaʻawale i nā kaʻina o ka loiloi, ka loaʻa ʻana o nā code kumu, a me ka hui pū ʻana o nā lālā. ʻaʻole maikaʻi ʻole? Akā pehea ʻoe e hoʻololi ai i kahi noi hana e hiki ai i nā piliona kānaka ke hoʻohana a mahalo iā ia?

KaʻAnuʻu Hana 3: E hana i kahi mea hana Automation

Nui! Hiki iā ʻoe ke nānā i ke code a hoʻololi i ka mana kumu, a kono i kāu mau hoaaloha e hana pū i ka hoʻomohala ʻana. Akā ʻaʻole ʻoe i hana i kahi noi. No ka hana ʻana i kahi palapala noi pūnaewele, pono e hōʻuluʻulu ʻia a hoʻopaʻa ʻia i loko o kahi ʻano pūʻulu hiki ke hoʻoili ʻia a i ʻole holo ma ke ʻano he faila hiki ke hoʻokō. (E hoʻomanaʻo ʻaʻole pono e hoʻohui ʻia kahi ʻōlelo hoʻonohonoho unuhi e like me JavaScript a i ʻole PHP).

E hoʻohana i kahi mea hana hana automation. ʻAʻohe mea e kūkulu i ka mea hana automation āu e hoʻoholo ai e hoʻohana, aia lākou a pau i ka pahuhopu hoʻokahi: kūkulu i ke code kumu i kekahi ʻano makemake a hoʻomaʻemaʻe i ka hana o ka hoʻomaʻemaʻe, hoʻohui ʻana, hoʻāʻo, a me ka lawe ʻana i kahi kaiapuni kikoʻī. E ʻokoʻa nā mea hana e pili ana i kāu ʻōlelo papahana, akā eia kekahi mau koho open source maʻamau.

Inoa
Laikini
ʻŌlelo papahana

Maven
Apache 2.0
Iawa

ʻAne
Apache 2.0
Iawa

gradle
Apache 2.0
Iawa

ʻO Bazel
Apache 2.0
Iawa

hana
GNU
N / A

'ū iholaʻo ia
mit
pio ka

ʻO Gulp
mit
pio ka

Kakauhale
Apache
Ruby

ʻEhala
mit
Ruby

AAP
GNU
Python

Scons
mit
Python

BitBake
GPLV2
Python

Cake
mit
C#

ASDF
Expat (MIT)
LISP

Kāpena
BSD
ʻO Haskell

Nui! Hiki iā ʻoe ke hoʻokomo i nā faila hoʻonohonoho hoʻonohonoho hana automation i kāu ʻōnaehana mana kumu a e hoʻohui i kāu mea hana CI/CD i nā mea āpau.

Ke alakaʻi a ka poʻe hoʻomaka: Ke hana ʻana i kahi Pipeline DevOps

Maikaʻi nā mea a pau, ʻaʻole anei? Akā ma hea e kau ai i kāu noi?

KaʻAnuʻu Hana 4: Web Application Server

I kēia manawa, loaʻa iā ʻoe kahi faila i hoʻopaʻa ʻia i hiki ke hoʻokō a hoʻokomo paha. No ka hoʻohana pono ʻana o kekahi noi, pono ia e hāʻawi i kekahi ʻano lawelawe a i ʻole interface, akā pono ʻoe i kahi pahu e hoʻokipa ai i kāu noi.

ʻO kahi kikowaena noi pūnaewele kahi pahu like wale nō. Hāʻawi ke kikowaena i kahi kaiapuni kahi e hiki ai ke wehewehe i ka loiloi o ka pūʻolo e kau ʻia ana. Hāʻawi ke kikowaena i kahi kikowaena a hāʻawi i nā lawelawe pūnaewele ma ka wehe ʻana i nā kumu i waho o ka honua. Pono ʻoe i kahi kikowaena HTTP, a me kekahi kaiapuni (e like me ka mīkini virtual) e hoʻokomo iā ia. I kēia manawa, e manaʻo mākou e aʻo hou ʻoe e pili ana i kēia (ʻoiai e uhi wau i nā ipu ma lalo).

Aia kekahi mau kikowaena noi pūnaewele open source.

Inoa
Laikini
ʻŌlelo papahana

ʻO Tomcat
Apache 2.0
Iawa

ʻO Jetty
Apache 2.0
Iawa

Lelele ʻaʻole
GNU Lesser Public
Iawa

Mea aniani
CDDL & GNU Li'ili'i Lehulehu
Iawa

ʻO Django
3-Pauku BSD
Python

Pākīpika
Apache 2.0
Python

ʻO Gunicorn
mit
Python

Python
mit
Python

Nā wili
mit
Ruby

Node.js
mit
pio ka

Ua aneane mākaukau kāu pipeline DevOps e hoʻohana. Maikaʻi kau hana!

Ke alakaʻi a ka poʻe hoʻomaka: Ke hana ʻana i kahi Pipeline DevOps

ʻOiai hiki iā ʻoe ke hoʻōki i laila a mālama i ka hoʻohui ʻana iā ʻoe iho, ʻo ka maikaʻi o ke code he mea koʻikoʻi no ka mea hoʻomohala polokalamu e hopohopo ai.

KaʻAnuʻu Hana 5: Ka uhi ho'āʻo Code

ʻO ka hoʻokō ʻana i nā hoʻokolohua hiki ke lilo i mea koʻikoʻi ʻē aʻe, akā pono nā mea hoʻomohala e hopu mua i nā pōpoki i ka noi a hoʻomaikaʻi i ka maikaʻi o ke code e hōʻoia i ka ʻoluʻolu o nā mea hoʻohana. ʻO ka mea pōmaikaʻi, nui nā mea hana open source no ka hoʻāʻo ʻana i kāu code a hana i nā manaʻo no ka hoʻomaikaʻi ʻana i kona maikaʻi. ʻO ka mea ʻoi aku ka maikaʻi, hiki i ka hapa nui o nā mea hana CI/CD ke hoʻopili i kēia mau mea hana a hoʻokaʻawale i ke kaʻina hana.

Aia nā ʻāpana ʻelua i ka hoʻāʻo code: nā papa hana hoʻāʻo code e kōkua iā ʻoe e kākau a holo i nā hoʻokolohua, a me nā mea hana manaʻo e kōkua iā ʻoe e hoʻomaikaʻi i ka maikaʻi o kāu code.

Nā ʻōnaehana hoʻāʻo code

Inoa
Laikini
ʻŌlelo papahana

JUnit
Kākoʻo Pūnaewele
Iawa

EasyMock
Apache
Iawa

Mockito
mit
Iawa

PowerMock
Apache 2.0
Iawa

ʻO Pytest
mit
Python

Ke Kuhiakau
Mozilla
Python

ʻawaʻawa
mit
Python

Nā ʻōnaehana manaʻo no ka hoʻomaikaʻi code

Inoa
Laikini
ʻŌlelo papahana

ʻO Cobertura
GNU
Iawa

CodeCoup
Eclipse Public (EPL)
Iawa

Coverage.py
Apache 2.0
Python

Emma
Laikini Lehulehu
Iawa

ʻO JaCoCo
Kākoʻo Pūnaewele
Iawa

Ke Kuhiakau
Mozilla
Python

ʻawaʻawa
mit
Python

Jasmine
mit
pio ka

Karma
mit
pio ka

ʻO Mocha
mit
pio ka

ʻO Jest
mit
pio ka

E hoʻomaopopo ʻo ka hapa nui o nā mea hana a me nā frameworks i ʻōlelo ʻia ma luna nei ua kākau ʻia no Java, Python a me JavaScript, ʻoiai ʻo C ++ a me C # nā ʻōlelo hoʻonohonoho ponoʻī (ʻoiai ʻo GCC he kumu wehe).

I kēia manawa ua hoʻokō ʻoe i nā mea hana hoʻāʻo hoʻāʻo, pono e like kāu pipeline DevOps me ke kiʻi i hōʻike ʻia ma ka hoʻomaka o kēia kumu aʻo.

Nā ʻanuʻu hou

Nā pahu pahu

E like me kaʻu i ʻōlelo ai, hiki iā ʻoe ke hoʻokipa i kāu kikowaena ma kahi mīkini virtual a i ʻole kahi kikowaena, akā ʻo nā ipu kahi hopena kaulana.

He aha nā pahu? ʻO ka wehewehe pōkole ʻo ia ka mīkini virtual e pono ai ka nui o ka hoʻomanaʻo ʻana o ka ʻōnaehana hana, ʻoi aku ka nui o ka nui o ka noi, aʻo kahi pahu e pono ai i kekahi mau hale waihona puke a me nā hoʻonohonoho e holo ai i ka noi. ʻIke loa, aia nō nā hoʻohana koʻikoʻi no ka mīkini virtual, akā ʻo kahi pahu kahi hopena māmā no ka hoʻokipa ʻana i kahi noi, me kahi kikowaena noi.

ʻOiai aia kekahi mau koho pahu, ʻo ka mea kaulana loa ʻo Docker a me Kubernetes.

Docker: Apache 2.0
Nā Kubernetes: Apache 2.0

ʻO nā mea hana mīkini waena

Hoʻokumu nui ʻia kā mākou pipeline DevOps i ka hana ʻana a me ka hoʻopili ʻana i nā noi, akā nui nā mea ʻē aʻe e hiki ke hana me nā mea hana DevOps. ʻO kekahi o lākou ka hoʻohana ʻana i nā mea hana Infrastructure as Code (IaC), i ʻike ʻia hoʻi he mau mea hana automation middleware. Kōkua kēia mau mea hana i ka hoʻonohonoho ʻana, hoʻokele, a me nā hana ʻē aʻe no middleware. No laila, no ka laʻana, hiki i kahi mea hana automation ke unuhi i nā noi e like me kahi kikowaena noi pūnaewele, kahi waihona, a me kahi hāmeʻa nānā me nā hoʻonohonoho kūpono a kau iā lākou i ke kikowaena noi.

Eia kekahi mau mea hana ʻenehana middleware open source:

Ansible: GNU Public
SaltStack: Apache 2.0
Kahu: Apache 2.0
Puppet: Apache a i ʻole GPL

Ke alakaʻi a ka poʻe hoʻomaka: Ke hana ʻana i kahi Pipeline DevOps

E ʻike i nā kikoʻī e pili ana i ka loaʻa ʻana o kahi ʻoihana i ʻimi ʻia mai ka ʻohi ʻana a i ʻole Level Up e pili ana i nā mākau a me ka uku ma o ka lawe ʻana i nā papa pūnaewele uku mai SkillFactory:

ʻoi aku nā papa

Hoʻohana

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka