Jagoran Mafari: Ƙirƙirar Bututun DevOps

Idan kun kasance sababbi ga DevOps, duba wannan jagorar mataki biyar don ƙirƙirar bututunku na farko.

Jagoran Mafari: Ƙirƙirar Bututun DevOps

DevOps ya zama madaidaicin mafita don daidaita matakan haɓaka software a hankali, rarrabu ko karye. Matsalar ita ce idan kun kasance sababbi ga DevOps kuma ba ku san inda za ku fara ba, to kuna iya rasa fahimtar waɗannan dabarun. Wannan labarin zai tattauna ma'anar bututun DevOps kuma zai ba da umarnin matakai biyar don ƙirƙirar ɗaya. Duk da yake wannan koyawa ba ta ƙare ba, ya kamata ya ba ku tushe don fara tafiya da fadada ilimin ku a nan gaba. Amma bari mu fara da tarihi.

Tafiya na DevOps

A baya na yi aiki a kan Citi Group Cloud team ɓullo da wani Infrastructure-as-a-Service (IaaS) yanar gizo aikace-aikace don sarrafa Citi ta girgije kayayyakin more rayuwa, amma ina ko da yaushe sha'awar yadda za a yi da ci gaban tsarin da inganci da kuma kawo ingantacciyar al'adu canji ga ƙungiyar ci gaba. Na sami amsar a cikin wani littafi da Greg Lavender ya ba da shawarar, CTO na Cloud Architecture da Infrastructure a Citi. An kira littafin The Phoenix Project (Aikin Phoenix), kuma yana bayyana ka'idodin DevOps, amma yana karantawa kamar labari.

Teburin da ke bayan littafin ya nuna sau nawa kamfanoni daban-daban ke tura tsarin su a cikin yanayin sakin:

Amazon: 23 kowace rana
Google: 5 kowace rana
Netflix: 500 kowace rana
Facebook: Sau ɗaya a rana
Twitter: sau 3 a mako
Kamfanin na yau da kullun: Sau ɗaya kowane watanni 9

Ta yaya mitocin Amazon, Google da Netflix zasu yiwu? Wannan saboda waɗannan kamfanoni sun gano yadda ake ƙirƙirar bututun DevOps kusan cikakke.

Mun yi nisa daga wannan har sai mun aiwatar da DevOps a Citi. A wancan lokacin, ƙungiyara tana da mahalli daban-daban, amma turawa akan sabar ci gaba gabaɗaya ta hannu ce. Duk masu haɓakawa suna da damar zuwa uwar garken ci gaba ɗaya kaɗai bisa tushen IBM WebSphere Application Server Community Edition. Matsalar ita ce uwar garken zata rufe a duk lokacin da masu amfani da yawa suka yi ƙoƙarin turawa a lokaci guda, don haka masu haɓakawa dole ne su sadar da manufar su ga juna, wanda ya kasance mai zafi. Bugu da ƙari, an sami al'amurran da suka shafi ƙaramar lambar gwajin gwaji, ƙaƙƙarfan tsarin turawa da hannu, da rashin iya bin diddigin tura lambar da ke da alaƙa da takamaiman aiki ko labarin mai amfani.

Na gane cewa akwai bukatar a yi wani abu kuma na sami abokin aiki mai ra'ayi. Mun yanke shawarar yin haɗin gwiwa kan gina bututun DevOps na farko - ya kafa na'ura mai kama da Tomcat da sabar aikace-aikacen yayin da na yi aiki akan Jenkins, na haɗa Atlassian Jira da BitBucket, kuma na yi aiki akan ɗaukar lambar gwaji. Wannan aikin na gefen ya yi nasara sosai: kusan kusan mun sarrafa matakai da yawa, mun sami kusan 100% akan sabar ci gaban mu, samar da bin diddigi da ingantacciyar ɗaukar hoto na lambar, kuma mun ƙara ikon haɗa rassan Git zuwa batutuwan Jira ko turawa. Yawancin kayan aikin da muka yi amfani da su don gina bututunmu na DevOps buɗaɗɗe ne.

Yanzu na fahimci sauƙin bututunmu na DevOps: ba mu yi amfani da kari kamar fayilolin Jenkins ko Mai yiwuwa ba. Duk da haka, wannan bututu mai sauƙi ya yi aiki da kyau, watakila saboda ka'idar Pareto (wanda aka sani da dokar 80/20).

Takaitaccen Gabatarwa ga DevOps da bututun CI/CD

Idan ka tambayi mutane da yawa, "Mene ne DevOps?", tabbas za ku sami amsoshi daban-daban. DevOps, kamar Agile, ya samo asali don yaɗa fannoni daban-daban, amma yawancin mutane za su yarda a kan wasu abubuwa kaɗan: DevOps al'ada ce ta haɓaka software ko yanayin ci gaban software (SDLC) wanda tushensa na tsakiya yana canza al'adun da masu haɓakawa da waɗanda ba. masu haɓakawa suna wanzu a cikin yanayin da:

Ayyukan da aka yi a baya da hannu an sarrafa su ta atomatik;
Kowa yana yin abin da ya fi dacewa;
Yawan aiwatarwa a kan wani ɗan lokaci yana ƙaruwa; Abubuwan da ake amfani da su suna ƙaruwa;
Ƙara haɓakar haɓakawa.

Duk da yake samun kayan aikin software masu dacewa ba shine kawai abin da kuke buƙatar ƙirƙirar yanayi na DevOps ba, wasu kayan aikin suna da mahimmanci. Kayan aiki mai mahimmanci shine ci gaba da haɗin kai da ci gaba da turawa (CI/CD). A cikin wannan bututun, mahalli suna da matakai daban-daban (misali DEV, INT, TST, QA, UAT, STG, PROD), yawancin ayyuka ana sarrafa su, kuma masu haɓakawa na iya rubuta lambar inganci mai inganci, cimma ƙarfin haɓakawa, da ƙimar turawa.

Wannan labarin ya bayyana hanyar matakai biyar don ƙirƙirar bututun DevOps kamar wanda aka nuna a cikin zane mai zuwa ta amfani da kayan aikin buɗewa.

Mataki 1: Hanyoyin CI/CD

Abu na farko da kuke buƙata shine kayan aikin CI/CD. Jenkins, kayan aikin buɗaɗɗen tushen tushen Java kuma mai lasisi a ƙarƙashin lasisin MIT, shine kayan aikin da ya shahara DevOps kuma ya zama ma'auni na gaskiya.

To menene Jenkins? Ka yi la'akari da shi a matsayin wani nau'i na sihiri na nesa na duniya wanda zai iya magana da tsara ayyuka da kayan aiki daban-daban. A kan kansa, kayan aikin CI / CD kamar Jenkins ba shi da amfani, amma yana da ƙarfi yayin da yake haɗuwa da kayan aiki da ayyuka daban-daban.

Jenkins ɗaya ne daga cikin kayan aikin buɗe tushen CI/CD da yawa waɗanda zaku iya amfani da su don gina bututun ku na DevOps.

Jenkins: Creative Commons da MIT
Travis CI: MIT
CruiseControl: BSD
Saukewa: GPL
Apache Gump: Apache 2.0
Bayani: GNU

Ga yadda tsarin DevOps yayi kama da kayan aikin CI/CD:

Jagoran Mafari: Ƙirƙirar Bututun DevOps

Kuna da kayan aikin CI/CD da ke gudana akan mai gida, amma babu wani abu da yawa da za ku iya yi a halin yanzu. Bari mu ci gaba zuwa mataki na gaba na tafiyar DevOps.

Mataki 2: Sarrafa Tsarukan Sarrafa Tushen

Hanya mafi kyau (kuma watakila mafi sauƙi) don tabbatar da cewa kayan aikin CI/CD ɗin ku na iya yin sihirin sa shine haɗawa tare da kayan aikin sarrafa lambar tushe (SCM). Me yasa kuke buƙatar sarrafa tushe? Bari mu ce kuna haɓaka aikace-aikacen. A duk lokacin da ka ƙirƙiri aikace-aikacen, kana shirye-shiryen ne, kuma ba kome ba ko kuna amfani da Java, Python, C++, Go, Ruby, JavaScript, ko kowane ɗayan zillions na programming languages. Lambar da ka rubuta ana kiran lambar tushe. A farkon, musamman lokacin da kake aiki kai kaɗai, yana da kyau a saka komai a cikin kundin adireshin gida. Amma yayin da aikin ke ƙara girma kuma kuna gayyatar wasu mutane don yin haɗin gwiwa, kuna buƙatar hanyar hana rikice-rikice yayin raba gyare-gyare yadda ya kamata. Hakanan kuna buƙatar hanyar dawo da juzu'in da suka gabata, saboda ƙirƙirar madadin da yin kwafi / liƙa a cikin su yana zama tsoho. Kai (da abokan aikin ku) kuna buƙatar wani abu mafi kyau.

Wannan shine inda sarrafa lambar tushe ya zama kusan larura. Wannan kayan aiki yana adana lambar ku a cikin ma'ajiyar ajiya, yana lura da juzu'i, kuma yana daidaita aikin mahalarta aikin.

Duk da yake akwai kayan aikin sarrafa tushen da yawa a can, Git shine ma'auni, kuma daidai haka. Ina ba da shawarar sosai ta amfani da Git, kodayake akwai wasu zaɓuɓɓukan buɗe tushen idan kun fi so.

Git: GPLv2 da LGPL v2.1
Saukewa: Apache 2.0
Tsarin Tsarin Juyi ɗaya (CVS): GNU
Saukewa: LGPL
Mercurial: GNU GPL v2+

Wannan shine yadda bututun DevOps yayi kama da ƙari na sarrafa lambar tushe.

Jagoran Mafari: Ƙirƙirar Bututun DevOps

Kayan aikin CI/CD na iya sarrafa tsarin tafiyar da bita, samun lambar tushe, da haɗin gwiwa tsakanin membobi. Ba sharri ba? Amma ta yaya kuke juya shi zuwa aikace-aikacen aiki don biliyoyin mutane su yi amfani da shi kuma su yaba shi?

Mataki 3: Ƙirƙiri Kayan Aikin Gina Automation

Mai girma! Kuna iya duba lamba da yin canje-canje ga sarrafa tushe, kuma ku gayyaci abokanku don yin haɗin gwiwa kan haɓakawa. Amma har yanzu ba ku ƙirƙiri aikace-aikace ba tukuna. Don yin aikace-aikacen gidan yanar gizo, dole ne a haɗa shi kuma a tattara shi a cikin tsarin batch ɗin da za a iya turawa ko kuma a gudanar da shi azaman fayil mai aiwatarwa. (Ka lura cewa yaren shirye-shirye da aka fassara kamar JavaScript ko PHP baya buƙatar haɗawa).

Yi amfani da kayan aikin ginawa ta atomatik. Ko da wane kayan aikin gini da kuka yanke shawarar amfani da su, dukkansu suna da manufa ɗaya: gina lambar tushe cikin wani tsari da ake so kuma sarrafa aikin tsaftacewa, haɗawa, gwaji, da turawa zuwa takamaiman yanayi. Gina kayan aikin za su bambanta dangane da yaren shirye-shiryen ku, amma ga wasu zaɓuɓɓukan buɗe tushen gama gari.

Title
Lasisi
Yaren shirye-shirye

Maven
Apache 2.0
Java

Ant
Apache 2.0
Java

Gradle
Apache 2.0
Java

Bazel
Apache 2.0
Java

Make
GNU
N / A

Nuna
MIT
JavaScript

Gulp
MIT
JavaScript

magini
Apache
Ruby

Rake
MIT
Ruby

AAP
GNU
Python

SCons
MIT
Python

BitBake
GPLV2
Python

cake
MIT
C#

ASDF
Expat (MIT)
LISP

Cabal
BSD
Haskell

Mai girma! Kuna iya sanya fayilolin sanyi na kayan aiki na kayan aiki a cikin tsarin sarrafa tushen ku kuma bari kayan aikin CI/CD ɗinku su haɗa komai tare.

Jagoran Mafari: Ƙirƙirar Bututun DevOps

Komai yana lafiya, ko ba haka ba? Amma ina za a tura aikace-aikacen ku?

Mataki 4: Sabar Aikace-aikacen Yanar Gizo

A yanzu, kuna da kunshin fayil wanda zai iya zama ko dai aiwatarwa ko za'a iya shigar dashi. Don kowane aikace-aikacen ya zama mai amfani da gaske, dole ne ya samar da wani nau'in sabis ko mu'amala, amma kuna buƙatar akwati don ɗaukar nauyin aikace-aikacenku.

Sabar aikace-aikacen yanar gizo irin wannan akwati ne kawai. Sabar tana ba da yanayi inda za'a iya bayyana ma'anar fakitin da ake turawa. Sabar kuma tana ba da hanyar sadarwa kuma tana ba da sabis na yanar gizo ta hanyar fallasa kwasfa zuwa duniyar waje. Kuna buƙatar uwar garken HTTP, da kuma wasu yanayi (kamar injin kama-da-wane) don shigar da shi. A yanzu, bari mu ɗauka za ku ƙara koyo game da wannan (ko da yake zan rufe kwantena a ƙasa).

Akwai sabar aikace-aikacen gidan yanar gizo da yawa da yawa.

Title
Lasisi
Yaren shirye-shirye

Tomcat
Apache 2.0
Java

Jetty
Apache 2.0
Java

WildFly
GNU Karamin Jama'a
Java

Garzali
CDDL & GNU Kadan Jama'a
Java

Django
3-Yanayin BSD
Python

babban hadari
Apache 2.0
Python

gunicorn
MIT
Python

Python
MIT
Python

Rails
MIT
Ruby

Node.js
MIT
Javascript

Bututun DevOps ya kusan shirya don amfani. Kyakkyawan aiki!

Jagoran Mafari: Ƙirƙirar Bututun DevOps

Yayin da za ku iya tsayawa a can kuma ku kula da haɗin kai da kanku, ingancin lambar abu ne mai mahimmanci ga mai haɓaka app ya damu da shi.

Mataki 5: Rufin Gwajin Code

Aiwatar da gwaje-gwaje na iya zama wani buƙatu mai wahala, amma masu haɓakawa dole ne su kama kowane kwari a cikin aikace-aikacen da wuri kuma su haɓaka ingancin lambar don tabbatar da gamsuwar masu amfani da ƙarshe. An yi sa'a, akwai kayan aikin buɗaɗɗen tushe da yawa don gwada lambar ku da ba da shawarwari don inganta ingancin sa. Abin da ya fi dacewa shi ne yawancin kayan aikin CI/CD na iya haɗawa da waɗannan kayan aikin kuma su sarrafa tsarin.

Gwajin lamba ya ƙunshi sassa biyu: Tsarin gwajin lambar da ke taimaka muku rubutawa da gudanar da gwaje-gwaje, da kayan aikin shawarwari waɗanda ke taimaka muku haɓaka ingancin lambar ku.

Tsarin gwaji na lamba

Title
Lasisi
Yaren shirye-shirye

JUnit
Kuskuren Jama'a na Eclipse
Java

EasyMock
Apache
Java

izgili
MIT
Java

PowerMock
Apache 2.0
Java

Pytest
MIT
Python

Hypothesis
Mozilla
Python

tox
MIT
Python

Tsarin shawarwari don haɓaka lamba

Title
Lasisi
Yaren shirye-shirye

Cobertura
GNU
Java

CodeCover
Eclipse Public (EPL)
Java

Rufewa.py
Apache 2.0
Python

Emma
Lasisin Jama'a na gama gari
Java

JaCo
Kuskuren Jama'a na Eclipse
Java

Hypothesis
Mozilla
Python

tox
MIT
Python

Jasmine
MIT
JavaScript

Karma
MIT
JavaScript

Mocha
MIT
JavaScript

karimcin
MIT
JavaScript

Lura cewa yawancin kayan aiki da tsarin da aka ambata a sama an rubuta su don Java, Python da JavaScript, tun da C++ da C # harsunan shirye-shiryen mallaka ne (ko da yake GCC buɗaɗɗen tushe ne).

Yanzu da kun aiwatar da kayan aikin ɗaukar hoto, bututunku na DevOps yakamata yayi kama da zanen da aka nuna a farkon wannan koyawa.

Ƙarin matakai

Kwantena

Kamar yadda na fada, zaku iya karbar bakuncin uwar garken ku akan injin kama-da-wane ko sabar, amma kwantena sanannen bayani ne.

Menene kwantena? Takaitaccen bayani shine na'ura mai kama da na'ura tana buƙatar adadi mai yawa na ƙwaƙwalwar ajiyar tsarin aiki, wanda ya zarce girman aikace-aikacen, yayin da akwati kawai yana buƙatar ƴan ɗakunan karatu da na'urori don gudanar da aikace-aikacen. Babu shakka, har yanzu akwai amfani mai mahimmanci don injin kama-da-wane, amma kwantena bayani ne mai sauƙi don ɗaukar aikace-aikacen, gami da sabar aikace-aikacen.

Yayin da akwai wasu zaɓuɓɓukan kwantena, mafi mashahuri sune Docker da Kubernetes.

Docker: Apache 2.0
Shafin: Apache 2.0

Matsakaicin kayan aikin sarrafa kansa

Bututunmu na DevOps ya fi mayar da hankali kan ƙirƙirar aikace-aikacen haɗin gwiwa da turawa, amma akwai wasu abubuwa da yawa waɗanda za a iya yi tare da kayan aikin DevOps. Ɗaya daga cikin su shine amfani da Infrastructure as Code (IaC), wanda kuma aka sani da kayan aikin atomatik na tsakiya. Waɗannan kayan aikin suna taimakawa shigarwa ta atomatik, gudanarwa, da sauran ayyuka don middleware. Don haka, alal misali, kayan aiki na atomatik na iya cire aikace-aikace kamar uwar garken aikace-aikacen yanar gizo, rumbun adana bayanai, da kayan aikin sa ido tare da daidaitattun jeri da tura su zuwa uwar garken aikace-aikacen.

Ga wasu buɗaɗɗen tushen kayan aikin atomatik na tsakiya:

Mai yiwuwa: GNU Jama'a
SaltStack: Apache 2.0
Mai dafa abinci: Apache 2.0
Puppet: Apache ko GPL

Jagoran Mafari: Ƙirƙirar Bututun DevOps

Nemo cikakkun bayanai kan yadda ake samun sana'a da ake nema daga karce ko Matsayin Sama dangane da ƙwarewa da albashi ta hanyar ɗaukar darussan kan layi da aka biya daga SkillFactory:

karin darussa

Da amfani

source: www.habr.com

Add a comment