Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri
Bati premye chèn DevOps ou an senk etap pou débutan.

DevOps te vin tounen yon mirak pou pwosesis devlopman twò dousman, dekonekte ak otreman pwoblèm. Men, ou bezwen konesans minim nan DevOps. Li pral kouvri konsèp tankou chèn DevOps ak kijan pou kreye youn nan senk etap. Sa a se pa yon gid konplè, men se sèlman yon "pwason" ki ka elaji. Ann kòmanse ak istwa.

Entwodiksyon mwen an nan DevOps

Mwen te konn travay avèk nyaj nan Citi Group epi devlope yon aplikasyon entènèt IaaS pou jere enfrastrikti nyaj Citi a, men mwen te toujou enterese nan fason pou m optimize chèn devlopman ak amelyore kilti pami devlopè yo. Greg Lavender, CTO nou an pou Achitekti Cloud ak Enfrastrikti, rekòmande liv sa a pou mwen. Pwojè "Phoenix". Li eksplike prensip DevOps trè byen epi li tankou yon woman.

Tablo ki sou do a montre konbyen fwa konpayi yo soti nouvo vèsyon:

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Ki jan Amazon, Google ak Netflix jere yo woule anpil? Epi li senp: yo kalkile ki jan yo kreye yon chèn DevOps tou pre pafè.

Bagay yo te trè diferan pou nou nan Citi jiskaske nou chanje nan DevOps. Lè sa a, ekip mwen an te gen diferan anviwònman, men nou te fè livrezon an nan sèvè devlopman manyèlman. Tout devlopè te gen aksè a yon sèl sèvè devlopman ki baze sou IBM WebSphere Application Server Community Edition. Avèk yon tantativ similtane pou delivre, sèvè a "tonbe", epi chak fwa nou te oblije "fè mal" negosye nan mitan nou. Nou menm tou nou pa te gen ase kouvèti kòd ak tès yo, yon pwosesis livrezon manyèl ki pran tan, epi pa gen okenn fason pou swiv livrezon kòd avèk èd nan kèk travay oswa kondisyon kliyan.

Li te klè ke yon bagay ijan te bezwen fè, epi mwen te jwenn yon kòlèg ki gen menm lide. Nou te deside kreye premye chèn DevOps ansanm - li te mete kanpe yon machin vityèl ak yon sèvè aplikasyon Tomcat, epi mwen te pran swen Jenkins, entegrasyon ak Atlassian Jira ak BitBucket, osi byen ke kouvèti kòd ak tès yo. Pwojè a te reyisi: nou te konplètman otomatize chèn devlopman an, reyalize prèske 100% disponiblite sou sèvè devlopman an, te kapab kontwole ak amelyore pwoteksyon kòd ak tès yo, epi yon branch Git te kapab mare nan yon livrezon Jira ak pwoblèm. Ak prèske tout zouti nou te itilize pou konstwi chèn DevOps yo te sous louvri.

An reyalite, chèn lan te senplifye, paske nou pa t menm aplike konfigirasyon avanse lè l sèvi avèk Jenkins oswa Ansible. Men nou te reyisi. Petèt sa a se yon konsekans prensip la Pareto (aka règ 80/20 la).

Yon deskripsyon kout sou DevOps ak CI/CD chèn

DevOps gen definisyon diferan. DevOps, tankou Agile, gen ladann diferan disiplin. Men, pifò pral dakò ak definisyon sa a: DevOps se yon metòd, oswa sik lavi, nan devlopman lojisyèl, prensip prensipal la nan ki se kreye yon kilti kote devlopè ak lòt anplwaye yo "sou menm longèdonn", travay manyèl otomatize, tout moun fè sa yo pi bon nan, frekans nan livrezon ogmante, pwodiktivite nan travay ogmante, fleksibilite ogmante.

Pandan ke zouti poukont yo pa ase pou kreye yon anviwònman DevOps, yo endispansab. Ki pi enpòtan nan sa yo se entegrasyon kontinyèl ak livrezon kontinyèl (CI/CD). Gen diferan etap nan chèn lan pou chak anviwònman (egzanp DEV (devlopman), INT (entegrasyon), TST (tès), QA (asirans kalite), UAT (tès akseptasyon itilizatè), STG (preparasyon), PROD (itilize)) , travay manyèl yo otomatize, devlopè yo ka pwodwi bon jan kalite kòd, delivre li, epi yo ka fasilman rekonstwi.

Nòt sa a dekri kijan pou kreye yon chèn DevOps nan senk etap, jan yo montre nan foto ki anba a, lè l sèvi avèk zouti sous louvri.

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

An nou desann nan biznis.

Etap 1: Platfòm CI/CD

Premye a tout, ou bezwen yon zouti CI/CD. Jenkins se yon zouti CI/CD ki gen lisans MIT, ki te ekri an Java ki te popilarize mouvman DevOps e ki te vin yon estanda defakto pou CICD.

Ki sa ki Jenkins? Imajine ke ou gen yon panèl kontwòl majik pou yon varyete sèvis ak zouti. Pou kont li, yon zouti CI/CD tankou Jenkins se initil, men ak diferan zouti ak sèvis, li vin tout pwisan.

Anplis Jenkins, gen anpil lòt zouti sous louvri, chwazi nenpòt.

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

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

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Ou gen yon zouti CI/CD nan localhost, men pa gen anpil bagay pou fè ankò. Ann ale nan pwochen etap la.

Etap 2: Versioning

Fason ki pi bon (epi pi fasil) pou teste majik yon zouti CI/CD se entegre li ak yon zouti jesyon kontwòl sous (SCM). Poukisa ou bezwen kontwòl vèsyon? Ann di w ap fè yon aplikasyon. Ou ekri li nan Java, Python, C++, Go, Ruby, JavaScript, oswa nenpòt lòt lang ki se yon kabwèt ak yon ti kabwa. Sa w ekri yo rele kòd sous. Okòmansman, sitou si w ap travay poukont ou, ou ka sove tout bagay nan yon anyè lokal. Men, kòm pwojè a ap grandi ak plis moun rantre nan, ou bezwen yon fason yo pataje chanjman kòd men evite konfli lè fusion chanjman. Epi ou bezwen tou yon jan kanmenm retabli vèsyon anvan yo san yo pa itilize sovgad epi itilize metòd la kopye-kole pou dosye kòd.

Ak isit la san SCM nenpòt kote. SCM la estoke kòd nan depo, jere vèsyon li, epi kowòdone li nan mitan devlopè yo.

Gen anpil zouti SCM, men Git te merite vin estanda defakto a. Mwen konseye w sèvi ak li, men gen lòt opsyon.

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Men ki sa tiyo DevOps la sanble apre li fin ajoute SCM la.

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Zouti CI/CD ka otomatize kòd sous upload ak telechaje ak kolaborasyon ekip. Pa move? Men koulye a, ki jan fè yon aplikasyon k ap travay soti nan sa a, renmen pa dè milya de itilizatè yo?

Etap 3: Bati Zouti Otomatik

Tout bagay ap mache jan li ta dwe. Ou ka telechaje kòd ak komèt chanjman nan kontwòl sous, epi envite zanmi yo travay avèk ou. Men, ou poko gen yon aplikasyon. Pou sa a dwe yon aplikasyon entènèt, li dwe konpile ak pake pou distribisyon oswa kouri kòm yon ègzèkutabl. (Yon langaj pwogram entèprete tankou JavaScript oswa PHP pa bezwen konpile.)

Sèvi ak yon zouti automatisation bati. Kèlkeswa zouti ou chwazi a, li pral rasanble kòd la nan bon fòma epi otomatize netwayaj, konpilasyon, tès ak livrezon. Konstwi zouti yo varye selon lang, men opsyon sous louvri sa yo yo souvan itilize.

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Pafè! Koulye a, an n mete fichye konfigirasyon zouti automatisation bati nan kontwòl sous pou zouti CI/CD bati yo.

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Li santi bon. Men, kote tout bagay sa yo woule kounye a?

Etap 4: Sèvè Aplikasyon Web

Se konsa, ou gen yon dosye pake ki ka egzekite oswa woule soti. Pou yon aplikasyon vrèman itil, li dwe gen yon kalite sèvis oswa koòdone, men ou bezwen mete tout bagay yon kote.

Yon aplikasyon entènèt ka hébergé sou yon sèvè aplikasyon entènèt. Sèvè aplikasyon an bay yon anviwònman kote ou ka egzekite lojik pake, rann koòdone, ak ekspoze sèvis entènèt sou yon priz. Ou bezwen yon sèvè HTTP ak kèk lòt anviwònman (yon machin vityèl, pou egzanp) pou enstale sèvè aplikasyon an. Pou kounye a, an n pretann w ap fè fas ak tout bagay sa yo pandan w ap ale (byenke mwen pral pale sou resipyan anba a).

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

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Nou deja gen yon chèn DevOps prèske travay. Bon travay!

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Nan prensip, ou ka sispann isit la, Lè sa a, ou ka okipe li tèt ou, men li la vo pale sou bon jan kalite a nan kòd la.

Etap 5: Pwoteksyon tès la

Tès la pran anpil tan ak efò, men li pi bon pou jwenn pinèz touswit epi amelyore kòd la pou fè itilizatè yo plezi. Pou rezon sa a, gen anpil zouti louvri ki pral pa sèlman teste kòd la, men tou, konseye sou kòman yo amelyore li. Pifò zouti CI/CD ka ploge nan zouti sa yo epi otomatize pwosesis la.

Tès yo divize an de pati: kad tès pou ekri ak egzekite tès yo, ak zouti ki gen sijesyon pou amelyore kalite kòd.

Tès Frameworks

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Zouti ak bon kalite konsèy

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Pifò nan zouti sa yo ak kad yo ekri pou Java, Python, ak JavaScript paske C++ ak C# se propriétaires (byenke GCC se sous louvri).

Nou te aplike zouti pwoteksyon tès yo, epi kounye a tiyo DevOps la ta dwe sanble ak foto a nan kòmansman leson patikilye a.

Etap adisyonèl

Resipyan

Kòm mwen te di anvan, yon sèvè aplikasyon ka anime nan yon machin vityèl oswa yon sèvè, men resipyan yo pi popilè.

Ki sa ki kontenè yo? Nan ti bout tan, nan yon machin vityèl, sistèm operasyon an souvan pran plis espas pase aplikasyon an, ak yon veso anjeneral sifi ak kèk bibliyotèk ak konfigirasyon. Nan kèk ka, machin vityèl yo endispansab, men veso a ka akomode aplikasyon an ansanm ak sèvè a san frè siplemantè.

Pou kontenè, Docker ak Kubernetes yo anjeneral pran, byenke gen lòt opsyon.

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Li atik sou Docker ak Kubernetes nan opensource.com:

Zouti automatisation middleware

Chèn DevOps nou an konsantre sou konstriksyon kolaborasyon ak livrezon yon aplikasyon, men gen lòt bagay enteresan ou ka fè ak zouti DevOps. Pou egzanp, sèvi ak zouti Enfrastrikti kòm Kòd (IaC), ke yo rele tou zouti automatisation middleware. Zouti sa yo ede otomatize enstalasyon, jesyon, ak lòt travay pou middleware. Pou egzanp, yon zouti automatisation ka pran aplikasyon (sèvè aplikasyon entènèt, baz done, zouti siveyans) ak konfigirasyon kòrèk yo epi pouse yo nan sèvè aplikasyon an.

Men kèk opsyon pou zouti automatisation middleware louvri:

Gid pou nul: Konstwi chenn DevOps ak zouti sous louvri

Detay nan atik yo opensource.com:

Kounye a ki sa?

Sa a se jis pwent iceberg la. Chèn nan DevOps ka fè anpil plis. Kòmanse ak yon zouti CI/CD epi wè ki lòt bagay ou ka otomatize pou fè travay ou pi fasil. Pa bliye sou zouti kominikasyon louvri pou kolaborasyon efikas.

Men kèk bon atik DevOps pou débutan:

Ou kapab tou entegre DevOps ak zouti louvri ajil:

Sous: www.habr.com

Add nouvo kòmantè