Gid pou debutan: Kreye yon tiyo DevOps

Si w se nouvo nan DevOps, gade nan gid senk etap sa a pou kreye premye tiyo w la.

Gid pou debutan: Kreye yon tiyo DevOps

DevOps te vin yon solisyon estanda pou repare pwosesis devlopman lojisyèl ralanti, dekonjwen oswa kase. Pwoblèm lan se ke si ou se nouvo nan DevOps epi ou pa konnen ki kote yo kòmanse, ou ka manke yon konpreyansyon sou teknik sa yo. Atik sa a pral diskite sou definisyon yon tiyo DevOps epi li pral bay tou senk etap enstriksyon pou kreye youn. Pandan ke leson patikilye sa a pa konplè, li ta dwe ba ou yon fondasyon pou kòmanse vwayaj ou ak elaji konesans ou nan lavni. Men, ann kòmanse ak istwa.

Vwayaj DevOps mwen an

Anvan mwen te travay sou ekip nwaj Citi Group la te devlope yon aplikasyon entènèt Infrastructure-as-a-Service (IaaS) pou jere enfrastrikti nwaj Citi a, men mwen te toujou enterese nan fason pou fè pwosesis devlopman an pi efikas epi pote chanjman kiltirèl pozitif nan ekip devlopman. Mwen te jwenn repons lan nan yon liv rekòmande pa Greg Lavender, CTO nan Cloud Achitekti ak Enfrastrikti nan Citi. Liv la te rele Pwojè Phoenix la (Pwojè Phoenix la), epi li eksplike prensip DevOps, men li li tankou yon woman.

Tablo ki nan do liv la montre konbyen fwa diferan konpayi yo deplwaye sistèm yo nan yon anviwònman lage:

Amazon: 23 pa jou
Google: 5 pa jou
Netflix: 500 pa jou
Facebook: Yon fwa pa jou
Twitter: 3 fwa pa semèn
Konpayi tipik: Yon fwa chak 9 mwa

Ki jan Amazon, Google ak Netflix frekans yo menm posib? Sa a se paske konpayi sa yo te kalkile ki jan yo kreye yon tiyo DevOps prèske pafè.

Nou te lwen sa a jiskaske nou aplike DevOps nan Citi. Lè sa a, ekip mwen an te gen diferan anviwònman, men deplwaman sou sèvè devlopman an te konplètman manyèl. Tout devlopè te gen aksè a sèlman yon sèl sèvè devlopman ki baze sou IBM WebSphere Application Server Community Edition. Pwoblèm lan te ke sèvè a ta fèmen chak fwa plizyè itilizatè yo te eseye deplwaye an menm tan an, kidonk devlopè yo te oblije kominike entansyon yo youn ak lòt, ki te byen yon doulè. Anplis de sa, te gen pwoblèm ak pwoteksyon kòd tès ba nivo, pwosesis deplwaman manyèl ankonbran, ak enkapasite pou swiv deplwaman kòd ki asosye ak yon travay espesifik oswa istwa itilizatè.

Mwen reyalize ke yon bagay te bezwen fè epi mwen jwenn yon kòlèg ki gen menm lide. Nou te deside kolabore nan bati premye tiyo DevOps la - li te mete kanpe yon machin vityèl Tomcat ak sèvè aplikasyon pandan m te travay sou Jenkins, entegre Atlassian Jira ak BitBucket, epi li te travay sou pwoteksyon kòd tès. Pwojè bò sa a te gen anpil siksè: nou prèske konplètman otomatize anpil pwosesis, reyalize prèske 100% disponiblite sou sèvè devlopman nou an, bay swiv ak amelyore kouvèti tès kòd la, epi ajoute kapasite nan konekte branch Git ak pwoblèm Jira oswa deplwaman. Pifò nan zouti nou te itilize pou konstwi tiyo DevOps nou yo te sous louvri.

Kounye a mwen konprann kijan tiyo DevOps nou an te senp: nou pa t sèvi ak ekstansyon tankou dosye Jenkins oswa Ansible. Sepandan, tiyo senp sa a te travay byen, petèt akòz prensip Pareto (ke yo rele tou règ 80/20).

Yon entwodiksyon tou kout sou DevOps ak tiyo CI/CD

Si ou mande plizyè moun, "Ki sa ki DevOps?", ou pral pwobableman jwenn plizyè repons diferan. DevOps, menm jan ak Agile, te evolye pou span plizyè disiplin diferan, men pifò moun pral dakò sou kèk bagay: DevOps se yon pratik devlopman lojisyèl oswa sik lavi devlopman lojisyèl (SDLC) ki gen prensip santral la ap chanje kilti kote devlopè yo ak moun ki pa devlopè yo egziste nan yon anviwònman kote:

Operasyon ki te deja fèt lamen yo te otomatize;
Tout moun fè sa yo fè pi byen;
Nimewo a nan aplikasyon sou yon sèten peryòd tan ogmante; Debi ogmante;
Ogmantasyon fleksibilite devlopman.

Pandan ke gen bon zouti lojisyèl se pa sèlman bagay ou bezwen pou kreye yon anviwònman DevOps, gen kèk zouti ki esansyèl. Yon zouti kle se entegrasyon kontinyèl ak deplwaman kontinyèl (CI/CD). Nan tiyo sa a, anviwònman yo gen diferan etap (egzanp DEV, INT, TST, QA, UAT, STG, PROD), anpil operasyon yo otomatize, ak devlopè yo ka ekri bon jan kalite kòd, reyalize ladrès devlopman, ak gwo pousantaj deplwaman.

Atik sa a dekri yon apwòch senk etap pou kreye yon tiyo DevOps tankou sa ki montre nan dyagram sa a lè l sèvi avèk zouti sous louvri.

Etap 1: Metòd CI/CD

Premye bagay ou bezwen se yon zouti CI/CD. Jenkins, yon zouti sous louvri ki baze sou Java epi ki gen lisans anba lisans MIT, se zouti ki popilarize DevOps e ki vin yon estanda defakto.

Se konsa, ki sa ki Jenkins? Panse a li kòm yon kalite kontwòl remote majik inivèsèl ki ka pale ak òganize divès kalite sèvis ak zouti. Pou kont li, yon zouti CI/CD tankou Jenkins pa itil, men li vin pi pwisan lè li konekte ak diferan zouti ak sèvis.

Jenkins se jis youn nan anpil zouti CI/CD sous louvri ou ka itilize pou konstwi tiyo DevOps ou.

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

Men ki jan pwosesis DevOps sanble ak yon zouti CI/CD:

Gid pou debutan: Kreye yon tiyo DevOps

Ou gen yon zouti CI/CD kap kouri sou localhost ou a, men pa gen anpil bagay ou ka fè nan moman sa a. Ann ale nan pwochen etap vwayaj DevOps la.

Etap 2: Jere Sistèm Kontwòl Sous

Pi bon (e petèt pi fasil) fason pou verifye ke zouti CI/CD ou ka fè majik li se entegre ak yon zouti kontwòl kòd sous (SCM). Poukisa ou bezwen kontwòl sous? Ann di w ap devlope yon aplikasyon. Chak fwa ou kreye yon aplikasyon, w ap pwograme, epi li pa enpòtan si w itilize Java, Python, C++, Go, Ruby, JavaScript, oswa nenpòt nan plizyè milyon lang pwogramasyon. Kòd ou ekri a rele kòd sous. Nan kòmansman an, sitou lè w ap travay poukont ou, li pwobableman ok pou mete tout bagay nan yon anyè lokal. Men, kòm pwojè a ap vin pi gwo epi w ap envite lòt moun pou kolabore, ou bezwen yon fason pou anpeche konfli pandan w ap pataje modifikasyon yo. Ou bezwen tou yon fason pou retabli vèsyon anvan yo, paske kreye sovgad ak kopye / kole nan yo ap vin demode. Ou menm (ak koekipye ou yo) bezwen yon bagay ki pi bon.

Sa a se kote kontwòl sous kòd vin prèske yon nesesite. Zouti sa a estoke kòd ou a nan depo, kenbe tras vèsyon yo, epi kowòdone travay patisipan yo nan pwojè a.

Pandan ke gen anpil zouti kontwòl sous yo deyò, Git se estanda a, ak rezon. Mwen trè rekòmande pou itilize Git, byenke gen lòt opsyon sous louvri si ou prefere.

Git: GPLv2 ak LGPL v2.1
Subversion: Apache 2.0
Sistèm vèsyon konkouran (CVS): GNU
Veste: LGPL
Mercurial: GNU GPL v2+

Sa a se sa yon tiyo DevOps sanble ak adisyon nan kontwòl kòd sous.

Gid pou debutan: Kreye yon tiyo DevOps

Yon zouti CI/CD ka otomatize pwosesis revizyon, akizisyon kòd sous, ak kolaborasyon pami manm yo. Pa move? Men, ki jan ou fè li tounen yon aplikasyon k ap travay pou dè milya de moun ka itilize ak apresye li?

Etap 3: Kreye yon Zouti Otomatik Konstwi

Gwo! Ou ka revize kòd epi fè chanjman nan kontwòl sous, epi envite zanmi ou yo kolabore sou devlopman. Men, ou poko kreye yon aplikasyon. Pou fè yon aplikasyon entènèt, li dwe konpile ak pake nan yon fòma pakèt deplwaye oswa kouri kòm yon dosye ègzèkutabl. (Remake byen ke yon langaj pwogram entèprete tankou JavaScript oswa PHP pa bezwen konpile).

Sèvi ak yon zouti automatisation bati. Kèlkeswa zouti automatisation bati ou deside itilize, yo tout gen menm objektif la: bati kòd sous la nan kèk fòma vle epi otomatize travay la nan netwaye, konpile, tès, ak deplwaye nan yon anviwònman espesifik. Bati zouti yo pral varye selon lang pwogramasyon ou, men isit la gen kèk opsyon sous louvri komen.

Non
Lisans
Lang pwogramasyon

Maven
Apache 2.0
Java

Foumi
Apache 2.0
Java

Gradle
Apache 2.0
Java

Bazel
Apache 2.0
Java


GNU
N / A

groyen
MIT
JavaScript

Gòj
MIT
JavaScript

Builder
Apache
Ruby

Rato
MIT
Ruby

AAP
GNU
Piton

SCons
MIT
Piton

BitBake
GPLv2
Piton

gato
MIT
C#

ASDF
Ekspatriye (MIT)
LISP

Cabal
BSD
Haskell

Gwo! Ou ka mete fichye konfigirasyon zouti automatisation bati nan sistèm kontwòl sous ou epi kite zouti CI/CD ou mete tout bagay ansanm.

Gid pou debutan: Kreye yon tiyo DevOps

Tout bagay anfòm, pa vre? Men, ki kote yo deplwaye aplikasyon w lan?

Etap 4: Sèvè Aplikasyon Web

Pou kounye a, ou gen yon fichye pake ki ka swa ègzekutabl oswa enstale. Pou nenpòt aplikasyon ka vrèman itil, li dwe bay yon kalite sèvis oswa koòdone, men ou bezwen yon veso pou òganize aplikasyon w lan.

Yon sèvè aplikasyon entènèt se jis tankou yon veso. Sèvè a bay yon anviwònman kote yo ka defini lojik pake a ke yo te deplwaye. Sèvè a tou bay yon koòdone epi li ofri sèvis entènèt pa ekspoze sipò nan mond lan deyò. Ou bezwen yon sèvè HTTP, osi byen ke kèk anviwònman (tankou yon machin vityèl) enstale li. Pou kounye a, an n sipoze ou pral aprann plis sou sa a (menm si mwen pral kouvri resipyan anba a).

Gen plizyè serveurs aplikasyon entènèt sous louvri.

Non
Lisans
Lang pwogramasyon

Tomcat
Apache 2.0
Java

Jetty
Apache 2.0
Java

Sou entènèt jwèt WildFly
GNU Lesser Public
Java

GlassFish
CDDL & GNU Mwens Piblik
Java

Django
3-Kloz BSD
Piton

Tonad
Apache 2.0
Piton

gunicorn
MIT
Piton

Piton
MIT
Piton

Ray
MIT
Ruby

Node.js
MIT
JavaScript

Tiyo DevOps ou a prèske pare pou itilize. Bon travay!

Gid pou debutan: Kreye yon tiyo DevOps

Pandan ke ou ka sispann la epi okipe entegrasyon an tèt ou, bon jan kalite kòd se yon bagay enpòtan pou yon pwomotè app enkyete sou.

Etap 5: Kouvèti Tès Kòd

Aplike tès yo ka yon lòt kondisyon ankonbran, men devlopè yo dwe trape nenpòt ensèk nan aplikasyon an byen bonè epi amelyore kalite kòd la pou asire itilizatè final yo satisfè. Erezman, gen anpil zouti sous louvri pou teste kòd ou a ak fè rekòmandasyon pou amelyore kalite li yo. Ki sa ki pi bon an se ke pifò zouti CI/CD ka konekte ak zouti sa yo epi otomatize pwosesis la.

Tès kòd konsiste de de pati: kad tès kòd ki ede w ekri ak kouri tès yo, ak zouti sijesyon ki ede w amelyore kalite kòd ou a.

Sistèm tès kòd

Non
Lisans
Lang pwogramasyon

JUnit
Eklips Lisans Piblik
Java

EasyMock
Apache
Java

mockito
MIT
Java

PowerMock
Apache 2.0
Java

Pytest
MIT
Piton

Ipotèz
Mozilla
Piton

tox
MIT
Piton

Sistèm rekòmandasyon pou amelyorasyon kòd

Non
Lisans
Lang pwogramasyon

Kouvèti
GNU
Java

CodeCover
Eclipse Piblik (EPL)
Java

Kouvèti.py
Apache 2.0
Piton

Emma
Lisans Piblik Komen
Java

JaCoCo
Eklips Lisans Piblik
Java

Ipotèz
Mozilla
Piton

tox
MIT
Piton

Jasmine
MIT
JavaScript

Karma
MIT
JavaScript

Mocha
MIT
JavaScript

Plè
MIT
JavaScript

Remake byen ke pi fò nan zouti ak kad ki mansyone pi wo a yo ekri pou Java, Python ak JavaScript, paske C++ ak C # se lang pwogramasyon propriétaires (byenke GCC se sous louvri).

Kounye a ke ou te aplike zouti pwoteksyon tès yo, tiyo DevOps ou a ta dwe sanble ak dyagram ki montre nan kòmansman leson patikilye sa a.

Etap adisyonèl

Resipyan

Kòm mwen te di, ou ka òganize sèvè ou a sou yon machin vityèl oswa yon sèvè, men resipyan yo se yon solisyon popilè.

Ki sa ki kontenè? Eksplikasyon kout la se ke yon machin vityèl bezwen yon gwo kantite memwa sistèm opere, ki depase gwosè aplikasyon an, pandan y ap yon veso sèlman bezwen kèk bibliyotèk ak konfigirasyon pou kouri aplikasyon an. Li evidan, gen toujou itilizasyon enpòtan pou yon machin vityèl, men yon veso se yon solisyon ki lejè pou hosting yon aplikasyon, ki gen ladan yon sèvè aplikasyon.

Pandan ke gen lòt opsyon veso, ki pi popilè yo se Docker ak Kubernetes.

Docker: Apache 2.0
Kubernetes: Apache 2.0

Zouti automatisation entèmedyè

Tiyo DevOps nou an konsantre sitou sou kreyasyon ak deplwaman aplikasyon an kolaborasyon, men gen anpil lòt bagay ki ka fè ak zouti DevOps. Youn nan yo se itilizasyon zouti Enfrastrikti kòm Kòd (IaC), ki rele tou zouti automatisation middleware. Zouti sa yo ede otomatize enstalasyon, jesyon, ak lòt travay pou middleware. Se konsa, pou egzanp, yon zouti automatisation ka ekstrè aplikasyon tankou yon sèvè aplikasyon entènèt, yon baz done, ak yon zouti siveyans ak konfigirasyon kòrèk yo epi deplwaye yo sou sèvè aplikasyon an.

Men kèk zouti automatisation middleware sous louvri:

Ansible: GNU Piblik
SaltStack: Apache 2.0
Chef: Apache 2.0
Puppet: Apache oswa GPL

Gid pou debutan: Kreye yon tiyo DevOps

Chèche konnen detay sou kòman ou ka jwenn yon pwofesyon recherché nan grafouyen oswa Level Up an tèm de konpetans ak salè lè w pran kou sou entènèt ki peye nan SkillFactory:

plis kou

Itil

Sous: www.habr.com

Add nouvo kòmantè