Middle+
Ar manote, kad teisinga yra viename darbo sraute sujungti kūrimą, testavimą ir vaizdo įkėlimą į saugyklą, taip pat pridėti žingsnius diegimui skirtingose aplinkose?
sobes.tech AI
Atsakymas iš AI
Tai ne visada yra optimalu. Nors toks požiūris gali būti patogus mažiems projektams ar vietiniams testavimo rinkiniams, visų etapų sujungimas į vieną darbo eigą turi trūkumų:
- Lankstumo sumažėjimas: Diegimas į skirtingas aplinkas (dev, staging, production) reikalauja skirtingų parametrų ir dažnai skirtingų prieigos teisių. Sujungimas apsunkina šių skirtumų valdymą:
- Aplinkos priklausomybė: Jei diegimas vienoje iš aplinkų nepavyksta, visa surinkimo eilutė laikoma nesėkminga, net jei vaizdo surinkimas ir jo testavimas buvo sėkmingi:
- Atstatymo sudėtingumas: Diegimo atstatymas tampa mažiau paprastas, nes reikia atstatyti visą darbo eigą:
- Vykdymo laiko padidėjimas: Visa pipeline užima daugiau laiko, tai sulėtina kūrėjų grįžtamąjį ryšį:
- Mažesnis mastelis: Kai projektas auga ir diegimo aplinkų skaičius didėja, tokia darbo eiga tampa sunki ir sunkiai valdoma:
Dažniau naudojama ir lankstesnė praktika yra šių etapų atskyrimas:
- Build & Test Pipeline: Atsakingas už kodo surinkimą, testavimą, vaizdo kūrimą ir jį saugojimą artefaktų registre (pvz., Docker Registry, Nexus). Ši darbo eiga vyksta kiekvieno įsipareigojimo ar pull request metu:
- Deployment Pipelines: Atskiri darbo procesai diegimui į kiekvieną aplinką. Jie paima jau surinktą ir ištestuotą vaizdą iš artefaktų registro ir diegia jį į tikslinę aplinką. Šie darbo procesai gali būti pradėti rankiniu būdu, pagal grafiką arba automatiškai po ankstesnio etapo sėkmingo užbaigimo (pvz., sėkmingo diegimo staging'e):
Tai leidžia:
- Greičiau gauti atsiliepimus apie kodo kokybę (build & test):
- Diegti į skirtingas aplinkas nepriklausomai:
- Lankstesnį diegimo parametrų valdymą kiekvienai aplinkai:
- Supaprastinti atstatymo procesą:
Mažiems pet projektams arba paprastam diegimo procesui turinčioms monolitinėms programoms, kuriose išlaidos skaidymui viršija naudą, tai gali būti naudinga. Tačiau daugumoje organizacijų darbo eigų skaidymas yra geriausia praktika.