Sveiks, Habr! AgrÄk es sÅ«dzÄjos par dzÄ«vi infrastruktÅ«ras kÄ koda paradigmas ietvaros un nepiedÄvÄju risinÄjumus esoÅ”ajai situÄcijai. Å odien esmu atgriezies, lai pastÄstÄ«tu, kÄdi pieejas un prakses var palÄ«dzÄt izkļūt no izmisuma bezdibeÅa un novirzÄ«t situÄciju pareizajÄ virzienÄ.

IepriekÅ”ÄjÄ rakstÄ Es dalÄ«jos ar savÄm pÄrdomÄm par Å”o jomu, mÄÄ£inÄju apspriest paÅ”reizÄjo situÄciju un pat pieļÄvu, ka standarta, visiem izstrÄdÄtÄjiem zinÄmÄs prakses var palÄ«dzÄt. VarÄja Ŕķist, ka tajÄ bija daudz sÅ«dzÄ«bu par dzÄ«vi, bet nebija piedÄvÄjumu par risinÄjumiem sarežģījumiem.
Kas mÄs esam, kur mÄs esam un kÄdas ir mÅ«su problÄmas
PaÅ”laik mÄs atrodamies SRE onboarding komandÄ, kas sastÄv no seÅ”iem programmÄtÄjiem un trim infrastruktÅ«ras inženieriem. Visi mÄs cenÅ”amies rakstÄ«t infrastruktÅ«ru kÄ kodu (IaC). MÄs to darÄm, jo principÄ spÄjam rakstÄ«t kodu un mÅ«su pieredze ir vidÄjÄ lÄ«menÄ«.
- Mums ir vairÄki plusi: noteikta pieredze, prakses zinÄÅ”anas, spÄjas rakstÄ«t kodu, vÄlme mÄcÄ«ties jauno.
- Un ir vÄjÄ puse, kas ir mÄ«nuss: zinÄÅ”anu trÅ«kums par infrastruktÅ«ras pamata lietÄm.
TehnoloÄ£iju kaudze, ko mÄs izmantojam mÅ«su IaC.
- Terraform resursu izveidei.
- Packer attÄlu veidoÅ”anai. Tas ir Windows, CentOS 7 attÄli.
- Jsonnet, lai veidotu jaudÄ«gas struktÅ«ras drone.io, kÄ arÄ« packer json un mÅ«su Terraform moduļu Ä£enerÄÅ”anai.
- Azure.
- Ansible attÄlu sagatavoÅ”anai.
- Python palÄ«gservisiem, kÄ arÄ« provizionÄÅ”anas skriptiem.
- Un viss tas VSCode ar paplaÅ”inÄjumiem, ko kopÄ«gi izmanto komandas dalÄ«bnieki.
IzvÄrsts no manas secinÄjuma: es centos ieviest (vispirms sevÄ«) optimismu, gribÄju teikt, ka mÄs izmÄÄ£inÄsim mums zinÄmÄs pieejas un prakses, lai cÄ«nÄ«tos ar grÅ«tÄ«bÄm un sarežģījumiem, kas pastÄv Å”ajÄ jomÄ.
PaÅ”laik mÄs saskaramies ar Å”ÄdÄm IaC problÄmÄm:
- RÄ«ku, kodu izstrÄdes lÄ«dzekļu nepilnÄ«bas.
- LÄna izvÄrÅ”ana. InfrastruktÅ«ra ir reÄla pasaule, un tÄ var bÅ«t lÄna.
- Pieejas un prakses trūkums.
- MÄs esam jauni un daudz nezinoÅ”i.
EkstremÄlÄ programmÄÅ”ana (XP) steidzas palÄ«gÄ.
Visi izstrÄdÄtÄji labi zina ekstrÄmo programmÄÅ”anu (XP) un tÄs pamatprincipus. Daudzi no mums ir strÄdÄjuÅ”i pÄc Å”Äda pieejas, un tÄ ir bijusi veiksmÄ«ga. TÄtad, kÄpÄc neizmantot principus un prakses, kas tur ir iekļautas, lai pÄrvarÄtu infrastruktÅ«ras grÅ«tÄ«bas? MÄs nolÄmÄm piemÄrot Å”o pieeju un noskaidrot, kas no tÄ sanÄks.
PÄrbaude par XP pieejas piemÄrotÄ«bu jÅ«su jomaiPiedÄvÄju aprakstu par vidi, kurai XP ir labi piemÄrots, un kÄ tas attiecas uz mums:
1. Dinamiski mainÄ«gas programmatÅ«ras prasÄ«bas. Mums bija skaidrs, kas ir galamÄrÄ·is. Bet detaļÄs var variÄt. MÄs paÅ”i nosakÄm, uz kurieni mums jÄdodas, tÄpÄc prasÄ«bas periodiski mainÄs (pamatÄ tos nosakÄm mÄs paÅ”i). Ja Åemam SRE komandu, kas pati veic automatizÄciju un pati nosaka prasÄ«bas un darba apjomu, tad Å”is punkts ir piemÄrots.
2. Riski, ko rada fiksÄtÄ laika projekti jaunÄs tehnoloÄ£ijas izmantoÅ”ana. Mums var rasties riski, izmantojot dažas mums nezinÄmas lietas. Un tas ir 100% mÅ«su gadÄ«jums. Visu mÅ«su projektu veido tehnoloÄ£ijas, ar kurÄm mÄs nebijÄm lÄ«dz galam pazÄ«stami. PatiesÄ«bÄ tÄ ir pastÄvÄ«ga problÄma, jo infrastruktÅ«ras jomÄ pastÄvÄ«gi parÄdÄs daudzas jaunas tehnoloÄ£ijas.
3,4. Mazas, kopÄ strÄdÄjoÅ”as pagarinÄtÄs izstrÄdes komandas. TehnoloÄ£ija, ko jÅ«s izmantojat, ļauj veikt automatizÄtus vienÄ«bu un funkcionÄlos testus. Å ie divi punkti mums nav pilnÄ«bÄ piemÄroti. PirmkÄrt, mÄs neesam kolocÄta komanda, otrkÄrt, mÅ«s ir deviÅi, kas var tikt uzskatÄ«ts par lielu komandu. Lai gan, saskaÅÄ ar daudziem definÄ«cijÄm "liela" komanda ir 14+ cilvÄki.
ApskatÄ«sim dažas XP prakses un to, kÄ tÄs ietekmÄ atgriezeniskÄs saites Ätrumu un kvalitÄti.
AtgriezeniskÄs saites cikls XP
ManÄ izpratnÄ atgriezeniskÄ saite ir atbilde uz jautÄjumu, vai es to daru pareizi, vai mÄs ejam pareizajÄ virzienÄ? XP Å”ajÄ jautÄjumÄ ir dieviÅ”Ä·Ä shÄma: atgriezeniskÄs saites cikls pÄc laika. Interesanti ir tas, ka jo dziļÄk mÄs esam, jo ÄtrÄk mÄs varam saÅemam OS, lai atbildÄtu uz nepiecieÅ”amajiem jautÄjumiem.

Å Ä« ir diezgan interesanta tÄma diskusijai, jo mÅ«su IT industrijÄ iespÄjams Ätri saÅemt OS. IedomÄjieties, cik sÄpÄ«gi ir strÄdÄt pie kÄda projekta pusgadu un tikai pÄc tam uzzinÄt, ka paÅ”Ä sÄkumÄ tika ieviesta kļūda. Tas notiek gan projektÄÅ”anÄ, gan jebkurÄ sarežģītu sistÄmu veidoÅ”anÄ.
MÅ«su gadÄ«jumÄ IaC mums palÄ«dz atgriezeniskÄ saite. NekavÄjoties veicu nelielu koriÄ£ÄÅ”anu iepriekÅ”ÄjÄ shÄmÄ: izlaiduma plÄns nav mÄneÅ”a cikls, bet notiek vairÄkas reizes dienÄ. Å im ciklam ir pievienotas dažas prakses, kuras mÄs apskatÄ«sim detalizÄtÄk.
SvarÄ«gi: atgriezeniskÄ saite var kļūt par risinÄjumu visÄm iepriekÅ” minÄtajÄm problÄmÄm. ApvienojumÄ ar XP praksÄm tÄ var izvilkt no izmisuma bezdibeÅa.
KÄ izvilkt sevi no izmisuma bezdibeÅa: trÄ«s prakses
Testi
Testi tiek minÄti divreiz paÅ”Ä XP atgriezeniskÄs saites ciklÄ. Tas nav vienkÄrÅ”i tÄ. Tie ir ÄrkÄrtÄ«gi svarÄ«gi visai ekstrÄmÄ programmÄÅ”anas tehnoloÄ£ijai.
PretstatÄ ir jÄbÅ«t Unit un Acceptance testiem. Viens dod tev atsauksmes pÄris minÅ«tÄs, cits ā pÄris dienÄs, jo tie tiek rakstÄ«ti ilgÄk un izpildÄ«ti retÄk.
Ir klasiskÄ testÄÅ”anas piramÄ«da, kas parÄdÄ«jusi, ka kÄdu testu vajadzÄtu bÅ«t vairÄk.

KÄ Å”Ä« shÄma ir piemÄrojama mÅ«su IaC projektÄ? PatiesÄ«bÄ⦠nekÄdÄ veidÄ.
- Unit testu, lai gan to vajadzÄtu bÅ«t ļoti daudz, nevar bÅ«t ļoti daudz. Vai nu tie ļoti netieÅ”i testÄ kaut ko. Faktiski var teikt, ka mÄs tos vispÄr nerakstÄm. Bet ir dažas Unit testu lietojumprogrammas, kuras mums tomÄr izdevÄs izveidot:
- Koda testÄÅ”ana uz jsonnet. PiemÄram, mÅ«su bÅ«vÄÅ”anas pipeline Drone, kas ir pietiekami sarežģīts. Kods uz jsonnet labi tiek pÄrklÄts ar testiem.
MÄs izmantojam Å”o . - Testi uz skriptiem, kas tiek izpildÄ«ti resursu palaiÅ”anas laikÄ. Skripti ir uz Python, tÄpÄc arÄ« testus uz tiem var rakstÄ«t.
- Koda testÄÅ”ana uz jsonnet. PiemÄram, mÅ«su bÅ«vÄÅ”anas pipeline Drone, kas ir pietiekami sarežģīts. Kods uz jsonnet labi tiek pÄrklÄts ar testiem.
- PotenciÄli ir iespÄjama konfigurÄcijas pÄrbaude testos, bet mÄs to nedarÄm. VÄl ir iespÄjas konfigurÄcijas noteikumu pÄrbaudes iestatīŔanai resursiem caur . TomÄr, vienkÄrÅ”i Terraform ir pÄrÄk pamata pÄrbaudes, bet daudz pÄrbaudes scenÄriju ir uzrakstÄ«ti AWS. MÄs esam Azure, tÄpÄc tas atkal nepiestÄv.
- Komponentu integrÄcijas testi: Å”eit atkarÄ«gs no tÄ, kÄ tu tos klasificÄ un kur tos izliek. Bet principÄ tie darbojas.
TÄ izskatÄs integrÄcijas testi.

Tas ir piemÄrs, kÄ notiek attÄlu veidoÅ”ana Drone CI. Lai pie tiem tiktu, ir jÄgaida 30 minÅ«tes, kamÄr Packer izveido attÄlu, pÄc tam vÄl 15 minÅ«tes, kamÄr tie tiek izpildÄ«ti. Bet tie ir!AttÄlu pÄrbaudes algoritms
- Vispirms Packer ir jÄizveido attÄls pilnÄ«bÄ.
- Blakus testam ir Terraform ar lokÄlo stÄvokli, ar kuru mÄs Å”o attÄlu izvÄrÅ”am.
- IzvÄrÅ”anas procesÄ tiek izmantots neliels modulis, kas atrodas blakus, lai vieglÄk strÄdÄtu ar attÄlu.
- Kad no attÄla ir izvÄrsta VM, var sÄkt pÄrbaudes. GalvenokÄrt pÄrbaudes tiek veiktas uz maŔīnas. Tiek pÄrbaudÄ«ts, kÄ skripti darbojÄs startÄÅ”anas laikÄ, kÄ darbojas dÄmoni. Tam mÄs caur ssh vai winrm piekļūstam tieÅ”i izveidotajai maŔīnai un pÄrbaudÄm konfigurÄcijas stÄvokli vai vai pakalpojumi ir palaižami.
- LÄ«dzÄ«ga situÄcija ir ar integrÄcijas testiem un Terraform moduļiem. Å eit ir Ä«sa tabula, kas izskaidro Å”Ädu testu Ä«patnÄ«bas.

Atsauksmes par pipeline ir apmÄram 40 minÅ«tes. Viss notiek ļoti lÄni. To var izmantot regresijas testi, bet jauniem izstrÄdÄjumiem tas ir pilnÄ«gi nereÄli. Ja ļoti labi sagatavosies, sagatavos running, skriptus, tad var samazinÄt lÄ«dz 10 minÅ«tÄm. Bet tas joprojÄm nav Unit testi, kas 5 sekunžu laikÄ var izpildÄ«t 100 testus.
Unit testu trÅ«kums attÄlu vai Terraform moduļu izveidÄ liek pÄrrakstÄ«t darbu uz atseviŔķiem pakalpojumiem, kurus vienkÄrÅ”i var izsist caur REST vai uz Python skriptiem.
PiemÄram, mums bija jÄdara tÄ, lai, startÄjot virtuÄlo maŔīnu, tÄ reÄ£istrÄtu sevi pakalpojumÄ , bet, dzÄÅ”ot virtuÄlo maŔīnu, tÄ dzÄstu sevi.
TÄ kÄ ScaleFT mums ir kÄ pakalpojums, mÄs esam spiesti strÄdÄt ar to caur API. Tur ir uzrakstÄ«ta apvalka kode, ko var izsist un teikt: "Ieej un izdzÄs to, to". Tas glabÄ visas nepiecieÅ”amÄs iestatÄ«jumus un pieejas.
Uz to mÄs jau varam rakstÄ«t normÄlus testus, jo tas nekÄdÄ veidÄ neatŔķiras no parasta programmatÅ«ras: apvirs tiek mÄtÄts, tu izsiti, un skatÄmies, kas notiek.

Testu rezultÄti: Unit testÄÅ”ana, kas sola OS sniegt rezultÄtu minÅ«tÄ, to nenodroÅ”ina. Bet augstÄki testÄÅ”anas veidi nodroÅ”ina efektu, taÄu risina tikai daļu problÄmu.
PÄra programmÄÅ”ana
Testi ir, protams, labi. Tos var rakstÄ«t daudz, tie var bÅ«t dažÄdu veidu. Tie darbosies savos lÄ«meÅos un sniegs mums atgriezenisko saiti. Bet problÄma ar sliktajiem Unit testiem, kuri dod visÄtrÄko OS, paliek. TomÄr turpinÄm ilgoties pÄc Ätras OS, ar kuru ir viegli un patÄ«kami strÄdÄt. Neaizmirstot par iegÅ«tÄ risinÄjuma kvalitÄti. Pateicoties, ir tehnoloÄ£ijas, kas sniedz vÄl ÄtrÄku atgriezenisko saiti nekÄ modulÄrie testi. Tas ir pÄru programmÄÅ”ana.
Rakstot kodu, ir vÄlme pÄc iespÄjas ÄtrÄk saÅemt atgriezenisko saiti par tÄ kvalitÄti. JÄ, jÅ«s varat visu rakstÄ«t feature zarÄ (lai nevienam neko nesabojÄtu), izveidot pull request GitHubÄ, pieŔķirt kÄdam, kuru viedoklis ir svarÄ«gs, un gaidÄ«t atbildi.
Bet gaidÄ«t var ilgi. CilvÄki visi ir aizÅemti, un atbilde, pat ja tÄ ierodas, var nebÅ«t visaugstÄkÄ kvalitÄte. PieÅemsim, ka atbilde pienÄk uzreiz, recenzents momentÄli saprot visu ieceri, bet atbilde tomÄr tiek saÅemta ar aizkavÄÅ”anos, pÄc fakta. Un tomÄr gribas ÄtrÄk. TÄpÄc pÄru programmÄÅ”ana ir vÄrsta uz to ā lai to darÄ«tu uzreiz, rakstīŔanas brÄ«dÄ«.
NÄkamajÄ rindkopÄ uzskaitīŔu pÄru programmÄÅ”anas stilus un to piemÄrojamÄ«bu, strÄdÄjot ar IaC:
1. Klasiskais, pieredzÄjis + pieredzÄjis, maiÅa pÄc taimeru. Divas lomas ā vadÄ«tÄjs un navigators. Divi cilvÄki. ViÅi strÄdÄ pie viena koda un mainÄs lomÄs pÄc noteikta iepriekÅ” norunÄta laika perioda.
ApskatÄ«sim mÅ«su problÄmu kombinÄcijas ar stilu:
- ProblÄma: rÄ«ku, lÄ«dzekļu nepilnÄ«bas kodu izstrÄdÄ.
NegatÄ«va ietekme: ilgÄk izstrÄdÄt, mÄs palÄninÄmies, tiek izjaukts darbs/ritms.
KÄ cÄ«nÄmies: izmantojam citu rÄ«kspuises, kopÄ«go IDE un vÄl mÄcÄmies Å”ortkatus. - ProblÄma: lÄna izvÄrÅ”ana.
NegatÄ«va ietekme: palielina laiku, kas nepiecieÅ”ams, lai izveidotu strÄdÄjoÅ”u koda daļu. Gaida, kamÄr gaida, rokas stiepjas nodarboties ar ko citu, kamÄr gaidi.
KÄ cÄ«nÄmies: neesam uzvarÄjuÅ”i. - ProblÄma: pieeju un prakses trÅ«kums.
NegatÄ«va ietekme: nav zinÄÅ”anu, kÄ darÄ«t labi, bet kÄ slikti. PagarinÄts atgriezeniskÄs saites iegūŔanas laiks.
KÄ cÄ«nÄmies: viedokļu un prakses apmaiÅa pÄru darbÄ gandrÄ«z atrisina problÄmu.
GalvenÄ problÄma Ŕī stila izmantoÅ”anÄ IaC ir nevienmÄrÄ«gais darba temps. TradicionÄlajÄ programmatÅ«ras izstrÄdÄ tev ir ļoti vienmÄrÄ«ga kustÄ«ba. Tu vari veltÄ«t piecas minÅ«tes un uzrakstÄ«t N. VeltÄ«t desmit minÅ«tes un uzrakstÄ«t 2N, piecpadsmit minÅ«tes ā 3N. Å eit tu vari veltÄ«t piecas minÅ«tes un uzrakstÄ«t N, bet pÄc tam vÄl trÄ«sdesmit minÅ«tes un uzrakstÄ«t desmito daļu no N. Å eit tu neko nezini, ir aizÄ·erÅ”anÄs, apjukums. Izpratnes iegūŔana prasa laiku un novirza no tieÅ”Ä programmÄÅ”anas.
SecinÄjums: tÄ«rÄ veidÄ mums neder.
2. Ping-pong. Å is pieejas pieÅem, ka viens dalÄ«bnieks raksta testu, bet otrs veic tÄ Ä«stenoÅ”anu. Å emot vÄrÄ, ka ar vienÄ«bas testiem viss ir sarežģīti un jÄraksta ilgstoÅ”s integrÄcijas tests, visa ping-pong vieglums pazÅ«d.
Varu teikt, ka mÄs esam izmÄÄ£inÄjuÅ”i pienÄkumu sadalÄ«jumu testu scenÄrija izstrÄdÄ un tÄ koda Ä«stenoÅ”anÄ. Viens dalÄ«bnieks izdomÄja scenÄriju, Å”ajÄ darba daÄ¼Ä viÅÅ” bija atbildÄ«gs, viÅam bija pÄdÄjais vÄrds. Bet otrs bija atbildÄ«gs par Ä«stenoÅ”anu. Tas izdevÄs labi. ScenÄrija kvalitÄte Å”ÄdÄ pieejÄ palielinÄs.
SecinÄjums: diemžÄl darba temps neļauj izmantot ping-pong kÄ pÄrÄ« programmÄÅ”anas praksi IaC.
3. SpÄcÄ«gais stils. . Ideja ir tÄda, ka viens dalÄ«bnieks kļūst par vadlÄ«niju sniedzÄju, bet otrs uzÅemas izpildÄ«tÄja lomu. Å ajÄ gadÄ«jumÄ lÄmumu pieÅemÅ”ana ir tikai vadlÄ«niju sniedzÄja rokÄs. IzpildÄ«tÄjs tikai raksta un vÄrds var ietekmÄt notiekoÅ”o. Lomas nemainÄs ilgu laiku.
Labi piemÄrots mÄcÄ«bÄm, bet prasa spÄcÄ«gas sociÄlÄs prasmes. Å eit mÄs arÄ« apstÄjÄmies. Tehnika gÄja sarežģīti. Un Å”eit pat neiet runa par infrastruktÅ«ru.
SecinÄjums: potenciÄli var tikt izmantots, mÄs nebeidzam centienus.
4. Mobbing, swarming un visi zinÄmie, bet Å”eit neuzskaitÄ«tie stili netiek aplÅ«koti, jo neesam tos izmÄÄ£inÄjuÅ”i un nevaram par to runÄt mÅ«su darba kontekstÄ.
KopÄjie secinÄjumi par pÄrÄ« programmÄÅ”anas izmantoÅ”anu:
- Mums ir nevienmÄrÄ«gs darba temps, kas novÄrÅ” uzmanÄ«bu.
- MÄs esam saskÄruÅ”ies ar nepietiekami labÄm sociÄlajÄm prasmÄm. Un tÄmas joma neveicina Å”o mÅ«su trÅ«kumu pÄrvarÄÅ”anu.
- Ilgi testi, problÄmas ar rÄ«kiem padara pÄru izstrÄdi lÄnu.
5. TomÄr bija arÄ« panÄkumi. MÄs izstrÄdÄjÄm savu metodi āSakritÄ«ba ā pretrunaā. ÄŖsumÄ aprakstīŔu, kÄ tas darbojas.
Mums ir pastÄvÄ«gi partneri uz dažÄm dienÄm (mazÄk nekÄ nedÄļa). MÄs kopÄ risinÄm vienu uzdevumu. KÄdu laiku mÄs strÄdÄjam kopÄ: viens raksta, otrs uzrauga, kÄ strÄdÄ atbalsta komanda. PÄc tam mÄs uz kÄdu laiku izklÄ«stam, katrs veic savus neatkarÄ«gos darbus, tad atkal apvienojam spÄkus, ļoti Ätri sinhronizÄjamies, darÄm kaut ko kopÄ un atkal izklÄ«stam.
PlÄnoÅ”ana un komunikÄcija
PÄdÄjais prakses bloks, caur kuru tiek risinÄtas OS problÄmas, ir darbu organizÄcija ar paÅ”iem uzdevumiem. Å eit ietilpst arÄ« pieredzes apmaiÅa, kas notiek Ärpus pÄra darba. ApskatÄ«sim trÄ«s prakses:
1. Uzdevumi caur mÄrÄ·u koku. Projektu kopÄ«gi organizÄjam caur koku, kas bezgalÄ«gi ieiet nÄkotnÄ. Tehniski tas tiek veikts Miro. Ir viens uzdevums ā tas ir starpposma mÄrÄ·is. No tÄ iet gan mazÄki mÄrÄ·i, gan uzdevumu grupas. No tÄm jau paÅ”i uzdevumi. Visi uzdevumi tiek izveidoti un vadÄ«ti uz Ŕīs dÄļa.

Å Ä« shÄma arÄ« sniedz atgriezenisko saiti, kas notiek vienreiz dienÄ, kad mÄs sinhronizÄjamies sanÄksmÄs. VispÄrÄja plÄna klÄtbÅ«tne, turklÄt strukturÄta un pilnÄ«bÄ atklÄta, ļauj ikvienam bÅ«t informÄtam par notiekoÅ”o un to, cik tÄlu mÄs esam progresÄjuÅ”i.
Uzdevumu vizuÄlÄs redzamÄ«bas priekÅ”rocÄ«bas:
- CÄloÅsakarÄ«ba. Katrs uzdevums noved pie kÄda globÄlÄ mÄrÄ·a. Uzdevumi tiek grupÄti pÄc mazÄkiem mÄrÄ·iem. InfrastruktÅ«ras joma pati par sevi ir diezgan tehniska. Ne vienmÄr ir skaidrs, kÄ rakstīŔana par migrÄcijas rokasgrÄmatu uz citiem nginx ietekmÄ biznesu. KlÄt esoÅ”Ä mÄrÄ·a karte padara to saprotamÄku.

CÄloÅsakarÄ«ba ir svarÄ«ga uzdevumu Ä«paŔība. TÄ tieÅ”i atbild uz jautÄjumu: āVai es daru pareizo?ā - ParalÄlisms. Mums ir deviÅi cilvÄki, un visiem uz viena uzdevuma uzbrukt fiziski nav iespÄjams. Uzdevumu no vienas jomas arÄ« ne vienmÄr var pietikt. MÄs spiesti paralelizÄt darbu starp mazÄm darba grupÄm. Å ajÄ procesÄ grupas kÄdu laiku strÄdÄ pie sava uzdevuma, tÄs var tikt stiprinÄtas ar kÄdu citu. No Ŕīs darba grupas reizÄm aiziet cilvÄki. KÄds dodas atvaļinÄjumÄ, kÄds sagatavo ziÅojumu konferencei DevOps conf, kÄds raksta rakstu uz Habr. ZinÄt, kÄdi mÄrÄ·i un uzdevumi var tikt veikti paralÄli, kļūst ļoti svarÄ«gi.
2. MainÄ«gie vadÄ«tÄji rÄ«ta sapulcÄm. Stand-up sapulcÄs radÄs tÄda problÄma ā cilvÄki veic daudz uzdevumu paralÄli. Dažreiz uzdevumi ir vÄji saistÄ«ti un nav skaidrs, kas ko dara. Un vÄl viena komandas dalÄ«bnieka viedoklis ir ļoti svarÄ«gs. Tas ir papildu informÄcija, kas spÄj mainÄ«t uzdevuma risinÄÅ”anas gaitu. Protams, parasti tev ir pÄrinieks, bet konsultÄcijas un padomi vienmÄr nav lieki.
Lai uzlabotu Å”o situÄciju, mÄs ieviesÄm paÅÄmiÅu "VadÄ«tÄja maiÅa stand-up sapulcÄ". Tagad viÅi rotÄ pÄc noteikta saraksta, un tam ir savs efekts. Kad pienÄk tava kÄrta, tev ir jÄiegremdÄjas un jÄizprot, kas notiek, lai labi vadÄ«tu scrums sapulci.

3. IekÅ”Äjais demos. PalÄ«dzÄ«ba uzdevuma risinÄÅ”anÄ no pÄrÄ« programmÄÅ”anas, vizualizÄcija ar uzdevumu koku un palÄ«dzÄ«ba rÄ«ta scrums sapulcÄs ā ir labi, bet ne ideÄli. PÄrÄ« tu esi ierobežots tikai ar savÄm zinÄÅ”anÄm. Uzdevumu koks palÄ«dz globÄli saprast, kas un ko dara. Bet vadÄ«tÄjs un kolÄÄ£i no rÄ«ta sapulcÄ nevar iedziļinÄties tavÄs problÄmÄs. ViÅi, protams, var kaut ko arÄ« nokavÄt.
RisinÄjums tika atrasts, demonstrÄjot paveikto darbus cits citam un pÄc tam apspriežot tos. MÄs sanÄkam reizi nedÄÄ¼Ä uz stundu un parÄdÄm risinÄjumu detaļas uzdevumiem, kurus esam veikuÅ”i pÄdÄjÄ nedÄļÄ.
DemonstrÄcijas procesÄ ir jÄatklÄj uzdevuma detaļas un obligÄti jÄparÄda tÄs darbs.
ZiÅojums var tikt veidots pÄc kontrolsaraksta.1. Ievietojiet kontekstÄ. No kurienes radÄs uzdevums, kÄpÄc tas vispÄr bija nepiecieÅ”ams?
2. KÄ uzdevums tika risinÄts iepriekÅ”? PiemÄram, bija nepiecieÅ”ama masveida peles klikŔķinÄÅ”ana, vai arÄ« vispÄr bija neiespÄjami kaut ko izdarÄ«t.
3. KÄ mÄs uzlabojam to. PiemÄram: "Skatieties, tagad ir skriptiÅÅ”, lÅ«k, rÄ«cÄ«bas plÄns."
4. ParÄdiet, kÄ tas darbojas. VÄlams uzreiz izpildÄ«t kÄdu lietotÄja scenÄriju. Gribu X, daru Y, redzu Z. PiemÄram, deployoju NGINX, skatos url, iegÅ«stu 200 OK. Ja darbÄ«ba ir ilgstoÅ”a, sagatavojiet iepriekÅ”, lai vÄlÄk parÄdÄ«tu. VÄlams jau stundu pirms demo Ä«paÅ”i nesabojÄt, ja tas ir trausls.
5. Izskaidrojiet, cik veiksmÄ«gi ir atrisinÄta problÄma, kÄdas grÅ«tÄ«bas ir palikuÅ”as, kas nav pabeigts, kÄdas uzlabojumu iespÄjas pastÄv nÄkotnÄ. PiemÄram, tagad cli, pÄc tam bÅ«s pilnÄ«ga automatizÄcija CI.
VÄlams katram runÄtÄjam iztikt 5-10 minÅ«tÄs. Ja jÅ«su uzstÄÅ”anÄs ir bÅ«tiska un aizÅems vairÄk laika, iepriekÅ” saskaÅojiet to kanÄlÄ sre-takeover.
PÄc klÄtienes daļas obligÄti seko diskusija threadÄ. TieÅ”i Å”eit parÄdÄs nepiecieÅ”amÄ atgriezeniskÄ saite par saviem uzdevumiem.

NoslÄgumÄ tiek veikta anketa, lai noteiktu notikuma lietderÄ«bu. Tas jau ir atgriezeniskÄ saite par uzstÄÅ”anÄs bÅ«tÄ«bu un uzdevuma nozÄ«mÄ«gumu.

Garie secinÄjumi un kas tÄlÄk
VarÄtu Ŕķist, ka raksta tonis ir nedaudz pesimistisks. TÄ nav. Divi pamata lÄ«meÅi atgriezeniskÄs saites iegūŔanai, proti, testi un pÄru programmÄÅ”ana, strÄdÄ. Ne visai ideÄli kÄ tradicionÄlajÄ izstrÄdÄ, bet ir pozitÄ«vs efekts.
Testi, paÅ”reizÄjÄ to formÄ, sniedz tikai daļÄju koda pÄrklÄjumu. Daudzas konfigurÄcijas funkcijas paliek netestÄtas. To ietekme uz tieÅ”o darbu rakstot kodu ir maza. TomÄr integrÄcijas testiem ir efekts, un tie tieÅ”i ļauj bezbailÄ«gi veikt refaktoringus. Tas ir liels sasniegums. Ar fokusa pÄreju uz augsta lÄ«meÅa valodÄm (mums ir python, go) problÄma izzÅ«d. Un uz "lÄ«mes" ir daudz pÄrbaudes un nav nepiecieÅ”ams, pietiek ar vispÄrÄjo integrÄciju.
Darbs pÄri vairÄk ir atkarÄ«gs no konkrÄtÄm personÄm. Ir uzdevuma faktors un mÅ«su soft skills. Ar kÄdu ir ļoti labi, ar kÄdu sliktÄk. Å im ir noteikti ieguvumi. Skaidrs, ka pat nepietiekama pÄru darba noteikumu ievÄroÅ”ana pats fakts, ka uzdevumi tiek veikti kopÄ, pozitÄ«vi ietekmÄ rezultÄta kvalitÄti. PersonÄ«gi man pÄris darbÄ ir vieglÄk un patÄ«kamÄk.
AugstÄka lÄ«meÅa veidi ietekmes uz OS ā plÄnoÅ”ana un darbÄ«ba ar uzdevumiem noteikti dod rezultÄtus: kvalitatÄ«va zinÄÅ”anu apmaiÅa un izstrÄdes kvalitÄtes uzlaboÅ”ana.
ÄŖsi secinÄjumi vienÄ teikumÄ
- XP prakse strÄdÄ IaC, bet ar mazÄku efektivitÄti.
- Pastipriniet to, kas strÄdÄ.
- IzdomÄjiet savus kompensÄcijas mehÄnismus un prakses.
Avots: habr.com



