Mantoto sistÄmu un procesu mantoÅ”ana vai pirmÄs 90 dienas kÄ CTO
ZinÄms, ka CTO kompetence tiek pÄrbaudÄ«ta tikai otrreiz, kad viÅÅ” pilda Å”o pienÄkumu. Jo viena lieta ir strÄdÄt uzÅÄmumÄ vairÄkus gadus, attÄ«stÄ«ties lÄ«dzi un, atrodoties vienÄ kultÅ«ras kontekstÄ, pamazÄm uzÅemties lielÄku atbildÄ«bu. Un pavisam cita lieta ir nonÄkt tieÅ”i tehniskÄ direktora amatÄ uzÅÄmumÄ ar mantotu bagÄžu un daudzÄm problÄmÄm, kas glÄ«ti paslaucÄ«tas zem paklÄja.
Å ajÄ ziÅÄ Leona Fire pieredze, kurÄ viÅÅ” dalÄ«jÄs DevOpsConf, ne gluži unikÄls, bet, reizinot ar viÅa pieredzi un dažÄdo lomu skaitu, ko viÅam izdevÄs izmÄÄ£inÄt 20 gadu laikÄ, tas ir ļoti noderÄ«gi. Zem griezuma ir redzama notikumu hronoloÄ£ija 90 dienu laikÄ un daudzi stÄsti, par kuriem ir jautri pasmieties, kad tie notiek ar kÄdu citu, bet kuriem nav tik jautri saskarties klÄtienÄ.
Leons ļoti krÄsaini runÄ krieviski, tÄpÄc, ja ir 35-40 minÅ«tes, iesaku noskatÄ«ties video. Teksta versija, lai ietaupÄ«tu laiku.
PirmÄ ziÅojuma versija bija labi strukturÄts apraksts par darbu ar cilvÄkiem un procesiem, kas satur noderÄ«gus ieteikumus. Bet viÅa nenodeva visus pÄrsteigumus, kas tika sastapti ceļÄ. TÄpÄc es mainÄ«ju formÄtu un hronoloÄ£iskÄ secÄ«bÄ izklÄstÄ«ju problÄmas, kas manÄ priekÅ”Ä parÄdÄ«jÄs kÄ domkrats jaunajÄ uzÅÄmumÄ, un metodes to risinÄÅ”anai.
Pirms mÄneÅ”a
TÄpat kÄ daudzi labi stÄsti, arÄ« Å”is sÄkÄs ar alkoholu. SÄdÄjÄm ar draugiem bÄrÄ, un, kÄ jau IT speciÄlistu vidÅ« bija gaidÄms, visi raudÄja par savÄm problÄmÄm. Viens no viÅiem tikko bija mainÄ«jis darbu un runÄja par savÄm problÄmÄm saistÄ«bÄ ar tehnoloÄ£ijÄm, cilvÄkiem un komandu. Jo vairÄk klausÄ«jos, jo vairÄk sapratu, ka viÅam vajadzÄtu mani vienkÄrÅ”i pieÅemt darbÄ, jo tieÅ”i Å”Ädas problÄmas es risinu pÄdÄjos 15 gadus. Es viÅam to pateicu, un nÄkamajÄ dienÄ mÄs satikÄmies darba vidÄ. UzÅÄmums saucÄs Teaching Strategies.
Teaching Strategies ir tirgus lÄ«deris mÄcÄ«bu programmÄs ļoti maziem bÄrniem no dzimÅ”anas lÄ«dz trÄ«s gadu vecumam. TradicionÄlajam āpapÄ«raā uzÅÄmumam ir jau 40 gadi, bet platformas digitÄlajai SaaS versijai ā 10. SalÄ«dzinoÅ”i nesen sÄkÄs digitÄlo tehnoloÄ£iju pielÄgoÅ”anas process uzÅÄmuma standartiem. āJaunÄā versija tika izlaista 2017. gadÄ un bija gandrÄ«z tÄda pati kÄ vecÄ, tikai tÄ darbojÄs sliktÄk.
Pats interesantÄkais ir tas, ka Ŕī uzÅÄmuma satiksme ir ļoti paredzama ā katru dienu, gadu no gada var ļoti skaidri paredzÄt, cik cilvÄku un kad ieradÄ«sies. PiemÄram, no pulksten 13 lÄ«dz 15:XNUMX visi bÄrni bÄrnudÄrzos iet gulÄt, un skolotÄji sÄk ievadÄ«t informÄciju. Un tas notiek katru dienu, izÅemot nedÄļas nogales, jo brÄ«vdienÄs gandrÄ«z neviens nestrÄdÄ.
Nedaudz paraugoties uz priekÅ”u, atzÄ«mÄÅ”u, ka savu darbu sÄku gada lielÄkÄs satiksmes laikÄ, kas ir interesants dažÄdu iemeslu dÄļ.
Platformai, kas, Ŕķiet, bija tikai 2 gadus veca, bija savdabÄ«ga kaudze: ColdFusion & SQL Server no 2008. gada. ColdFusion, ja jÅ«s nezinÄt un, visticamÄk, nezinÄt, ir uzÅÄmuma PHP, kas iznÄca 90. gadu vidÅ«, un kopÅ” tÄ laika es par to neesmu pat dzirdÄjis. Bija arÄ«: Ruby, MySQL, PostgreSQL, Java, Go, Python. Bet galvenais monolÄ«ts darbojÄs ColdFusion un SQL Server.
ProblÄmas
Jo vairÄk runÄju ar uzÅÄmuma darbiniekiem par darbu un raduÅ”ajÄm problÄmÄm, jo āāvairÄk sapratu, ka problÄmÄm nav tikai tehniska rakstura. Labi, tehnoloÄ£ija ir veca - un viÅi pie tÄs nestrÄdÄja, taÄu radÄs problÄmas ar komandu un procesiem, un uzÅÄmums sÄka to saprast.
TradicionÄli viÅu tehniÄ·i sÄdÄja stÅ«rÄ« un darÄ«ja kÄdu darbu. TaÄu arvien vairÄk uzÅÄmumu sÄka izmantot digitÄlo versiju. TÄpÄc pÄdÄjÄ gadÄ pirms darba sÄkÅ”anas uzÅÄmumÄ parÄdÄ«jÄs jauni: direktoru padome, CTO, CPO un QA direktors. Tas ir, uzÅÄmums sÄka investÄt tehnoloÄ£iju nozarÄ.
Smaga mantojuma pÄdas bija ne tikai sistÄmÄs. UzÅÄmumam bija mantoti procesi, mantoti cilvÄki, mantota kultÅ«ra. Tas viss bija jÄmaina. Es domÄju, ka tas noteikti nebÅ«s garlaicÄ«gi, un nolÄmu izmÄÄ£inÄt.
Divas dienas iepriekÅ”
Divas dienas pirms jauna darba sÄkÅ”anas es ierados birojÄ, aizpildÄ«ju pÄdÄjos dokumentus, satiku komandu un atklÄju, ka komanda tobrÄ«d cÄ«nÄs ar problÄmu. VidÄjais lapas ielÄdes laiks pieauga lÄ«dz 4 sekundÄm, tas ir, 2 reizes.
Spriežot pÄc grafika, kaut kas skaidri notika, un nav skaidrs, kas. IzrÄdÄ«jÄs, ka problÄma bija tÄ«kla latentumÄ datu centrÄ: 5 ms latentums datu centrÄ lietotÄjiem pÄrvÄrtÄs par 2 s. Es nezinÄju, kÄpÄc tas notika, bet jebkurÄ gadÄ«jumÄ kļuva zinÄms, ka problÄma ir datu centrÄ.
PirmÄ diena
PagÄja divas dienas, un manÄ pirmajÄ darba dienÄ es atklÄju, ka problÄma nav pazudusi.
Divu dienu laikÄ lietotÄju lapas tika ielÄdÄtas vidÄji 4 sekundÄs. Es jautÄju, vai viÅi atklÄja, kÄda ir problÄma.
ā JÄ, mÄs atvÄrÄm biļeti.
- un?
- Nu, viÅi mums vÄl nav atbildÄjuÅ”i.
Tad es sapratu, ka viss, par ko man bija stÄstÄ«ts iepriekÅ”, ir tikai maza aisberga redzamÄ daļa, ar kuru man jÄcÄ«nÄs.
Ir labs citÄts, kas tam ļoti labi atbilst:
"Dažreiz, lai mainÄ«tu tehnoloÄ£iju, ir jÄmaina organizÄcija."
Bet, tÄ kÄ darbu sÄku gada noslogotÄkajÄ laikÄ, nÄcÄs izskatÄ«t abus problÄmas risinÄÅ”anas variantus: gan Ätro, gan ilgtermiÅa. Un sÄciet ar to, kas Å”obrÄ«d ir kritisks.
TreÅ”Ä diena
TÄtad, ielÄde ilgst 4 sekundes, un no 13 lÄ«dz 15 lielÄkÄs virsotnes.
TreÅ”ajÄ dienÄ Å”ajÄ laika periodÄ lejupielÄdes Ätrums izskatÄ«jÄs Å”Ädi:
No mana viedokļa nekas nedarbojÄs. No visu citu viedokļa tas skrÄja nedaudz lÄnÄk nekÄ parasti. Bet tÄ vienkÄrÅ”i nenotiek ā tÄ ir nopietna problÄma.
MÄÄ£inÄju pÄrliecinÄt komandu, uz ko viÅi atbildÄja, ka vienkÄrÅ”i vajag vairÄk serveru. Tas, protams, ir problÄmas risinÄjums, taÄu ne vienmÄr tas ir vienÄ«gais un efektÄ«vÄkais. JautÄju, kÄpÄc nav pietiekami daudz serveru, kÄds ir trafika apjoms. Es ekstrapolÄju datus un atklÄju, ka mums ir aptuveni 150 pieprasÄ«jumu sekundÄ, kas principÄ ietilpst saprÄtÄ«gÄs robežÄs.
Bet mÄs nedrÄ«kstam aizmirst, ka, pirms saÅemat pareizo atbildi, jums ir jÄuzdod pareizais jautÄjums. Mans nÄkamais jautÄjums bija: cik priekÅ”gala serveru mums ir? Atbilde āmani nedaudz mulsinÄjaā - mums bija 17 frontend serveri!
ā Man ir neÄrti jautÄt, bet 150 dalÄ«ts ar 17 dod apmÄram 8? Vai jÅ«s gribat teikt, ka katrs serveris pieļauj 8 pieprasÄ«jumus sekundÄ, un, ja rÄ«t bÅ«s 160 pieprasÄ«jumi sekundÄ, mums vajadzÄs vÄl 2 serverus?
Protams, papildu serveri mums nebija vajadzÄ«gi. RisinÄjums bija paÅ”Ä kodÄ un virspusÄ:
var currentClass = classes.getCurrentClass();
return currentClass;
Bija funkcija getCurrentClass(), jo viss vietnÄ darbojas klases kontekstÄ - tieÅ”i tÄ. Un Å”ai funkcijai katrÄ lapÄ bija viena funkcija VairÄk nekÄ 200 pieprasÄ«jumu.
RisinÄjums Å”ÄdÄ veidÄ bija ļoti vienkÄrÅ”s, jums pat nekas nebija jÄpÄrraksta: vienkÄrÅ”i neprasiet to paÅ”u informÄciju vÄlreiz.
if ( !isDefined("REQUEST.currentClass") ) {
var classes = new api.private.classes.base();
REQUEST.currentClass = classes.getCurrentClass();
}
return REQUEST.currentClass;
Es biju ļoti priecÄ«ga, jo nolÄmu, ka tikai treÅ”ajÄ dienÄ esmu atradusi galveno problÄmu. Lai arÄ« cik naiva es biju, Ŕī bija tikai viena no daudzajÄm problÄmÄm.
Bet, atrisinot Å”o pirmo problÄmu, grafiks samazinÄjÄs daudz zemÄk.
TajÄ paÅ”Ä laikÄ mÄs veicÄm citas optimizÄcijas. Bija redzamas daudzas lietas, kuras varÄja labot. PiemÄram, tajÄ paÅ”Ä treÅ”ajÄ dienÄ es atklÄju, ka sistÄmÄ tomÄr ir keÅ”atmiÅa (sÄkumÄ domÄju, ka visi pieprasÄ«jumi nÄk tieÅ”i no datu bÄzes). Kad es domÄju par keÅ”atmiÅu, es domÄju par standarta Redis vai Memcached. Bet es biju vienÄ«gais, kurÅ” tÄ domÄja, jo Ŕī sistÄma keÅ”atmiÅÄ izmantoja MongoDB un SQL Server - to paÅ”u, no kura tikko tika nolasÄ«ti dati.
DesmitÄ diena
PirmajÄ nedÄÄ¼Ä es tiku galÄ ar problÄmÄm, kuras bija jÄatrisina tieÅ”i tagad. Kaut kur otrajÄ nedÄÄ¼Ä pirmo reizi atnÄcu pie stand-up, lai komunicÄtu ar komandu, paskatÄ«tos, kas notiek un kÄ viss process norit.
Atkal tika atklÄts kaut kas interesants. Komanda sastÄvÄja no: 18 izstrÄdÄtÄjiem; 8 testeri; 3 vadÄ«tÄji; 2 arhitekti. Un viÅi visi piedalÄ«jÄs kopÄ«gos rituÄlos, tas ir, vairÄk nekÄ 30 cilvÄki ik rÄ«tu nÄca pie stand-up un stÄstÄ«ja, ko viÅi darÄ«juÅ”i. Skaidrs, ka tikÅ”anÄs neaizÅÄma 5 vai 15 minÅ«tes. Neviens nevienu neklausÄ«jÄs, jo visi strÄdÄ pie dažÄdÄm sistÄmÄm. Å ÄdÄ formÄ 2-3 biļetes stundÄ uz kopÅ”anas sesiju jau bija labs rezultÄts.
PirmÄ lieta, ko izdarÄ«jÄm, bija komandas sadalÄ«Å”ana vairÄkÄs produktu lÄ«nijÄs. DažÄdÄm sadaļÄm un sistÄmÄm mÄs pieŔķīrÄm atseviŔķas komandas, kurÄs bija izstrÄdÄtÄji, testÄtÄji, produktu vadÄ«tÄji un biznesa analÄ«tiÄ·i.
RezultÄtÄ mÄs saÅÄmÄm:
Stand-up un mÄ«tiÅu samazinÄÅ”ana.
PriekÅ”meta zinÄÅ”anas par produktu.
ÄŖpaÅ”umtiesÄ«bas sajÅ«ta. Kad cilvÄki visu laiku ÄalojÄs ar sistÄmÄm, viÅi zinÄja, ka ar savÄm kļūdÄm, visticamÄk, bÅ«s jÄstrÄdÄ kÄdam citam, bet ne paÅ”iem.
SadarbÄ«ba starp grupÄm. Lieki piebilst, ka QA iepriekÅ” Ä«paÅ”i nekomunicÄja ar programmÄtÄjiem, produkts darÄ«ja savu utt. Tagad viÅiem ir kopÄ«gs atbildÄ«bas punkts.
GalvenokÄrt koncentrÄjÄmies uz efektivitÄti, produktivitÄti un kvalitÄti ā tÄs ir problÄmas, kuras centÄmies atrisinÄt ar komandas pÄrveidi.
VienpadsmitÄ diena
Komandas struktÅ«ras maiÅas procesÄ atklÄju, kÄ skaitÄ«t stÄstsPunkti. 1 SP bija vienÄds ar vienu dienu, un katrÄ biļetÄ bija SP gan izstrÄdei, gan kvalitÄtes nodroÅ”inÄÅ”anai, tas ir, vismaz 2 SP.
KÄ es to atklÄju?
AtradÄm kļūdu: vienÄ no pÄrskatiem, kur ir ievadÄ«ts tÄ perioda sÄkuma un beigu datums, par kuru atskaite ir nepiecieÅ”ama, pÄdÄjÄ diena netiek Åemta vÄrÄ. Tas ir, kaut kur pieprasÄ«jumÄ nebija <=, bet vienkÄrÅ”i <. Man teica, ka tie ir trÄ«s stÄstu punkti, tas ir 3 dienas.
PÄc tam mÄs:
StÄstu punktu vÄrtÄÅ”anas sistÄma ir pÄrskatÄ«ta. Tagad sÄ«ku kļūdu labojumi, kurus var Ätri izlaist caur sistÄmu, ÄtrÄk sasniedz lietotÄju.
MÄs sÄkÄm apvienot saistÄ«tÄs biļetes izstrÄdei un testÄÅ”anai. IepriekÅ” katra biļete, katra kļūda bija slÄgta ekosistÄma, kas nebija saistÄ«ta ne ar ko citu. TrÄ«s pogu maiÅa vienÄ lapÄ varÄja bÅ«t trÄ«s dažÄdas biļetes ar trim dažÄdiem kvalitÄtes nodroÅ”inÄÅ”anas procesiem, nevis viena automatizÄta pÄrbaude katrÄ lapÄ.
MÄs sÄkÄm strÄdÄt ar izstrÄdÄtÄjiem pie pieejas darbaspÄka izmaksu aprÄÄ·inÄÅ”anai. TrÄ«s dienas, lai mainÄ«tu vienu pogu, nav smieklÄ«gi.
DivdesmitÄ diena
Kaut kur pirmÄ mÄneÅ”a vidÅ« situÄcija nedaudz nostabilizÄjÄs, sapratu, kas pamatÄ notiek, un jau sÄku skatÄ«ties nÄkotnÄ un domÄt par ilgtermiÅa risinÄjumiem.
IlgtermiÅa mÄrÄ·i:
PÄrvaldÄ«ta platforma. Simtiem pieprasÄ«jumu katrÄ lapÄ nav nopietni.
Paredzamas tendences. Bija periodiski satiksmes maksimumi, kas no pirmÄ acu uzmetiena nekorelÄja ar citiem rÄdÄ«tÄjiem ā mums bija jÄsaprot, kÄpÄc tas notika, un jÄiemÄcÄs paredzÄt.
Platformas paplaÅ”inÄÅ”ana. Bizness nepÄrtraukti aug, ienÄk arvien vairÄk lietotÄju, un palielinÄs satiksme.
AgrÄk bieži teica: āPÄrrakstÄ«sim visu [valodÄ/ietvarÄ], viss darbosies labÄk!ā
VairumÄ gadÄ«jumu tas nedarbojas, ir labi, ja pÄrrakstÄ«Å”ana vispÄr darbojas. TÄpÄc mums bija jÄizveido ceļvedis ā konkrÄta stratÄÄ£ija, kas soli pa solim ilustrÄ, kÄ tiks sasniegti biznesa mÄrÄ·i (ko un kÄpÄc darÄ«sim), kas:
atspoguļo projekta misiju un mÄrÄ·us;
izvirza prioritÄti galvenajiem mÄrÄ·iem;
satur grafiku to sasniegŔanai.
Pirms tam neviens ar komandu nebija runÄjis par izmaiÅu mÄrÄ·i. Tam nepiecieÅ”ami pareizi veiksmes rÄdÄ«tÄji. Pirmo reizi uzÅÄmuma vÄsturÄ mÄs iestatÄ«jÄm KPI tehniskajai grupai, un Å”ie rÄdÄ«tÄji tika piesaistÄ«ti organizatoriskiem.
Tas nozÄ«mÄ, ka organizÄcijas KPI atbalsta komandas, bet komandas KPI atbalsta atseviŔķi KPI. PretÄjÄ gadÄ«jumÄ, ja tehnoloÄ£iskie KPI nesakrÄ«t ar organizatoriskiem, tad katrs velk segu uz sevi.
PiemÄram, viens no organizatoriskajiem KPI palielina tirgus daļu, izmantojot jaunus produktus.
KÄ jÅ«s varat atbalstÄ«t mÄrÄ·i iegÅ«t vairÄk jaunu produktu?
PirmkÄrt, mÄs vÄlamies vairÄk laika veltÄ«t jaunu produktu izstrÄdei, nevis defektu laboÅ”anai. Tas ir loÄ£isks risinÄjums, ko ir viegli izmÄrÄ«t.
OtrkÄrt, vÄlamies atbalstÄ«t darÄ«jumu apjoma pieaugumu, jo jo lielÄka tirgus daļa, jo vairÄk lietotÄju un attiecÄ«gi arÄ« trafika.
Tad atseviŔķi KPI, ko var izpildÄ«t grupas ietvaros, bÅ«s, piemÄram, vietÄ, no kuras rodas galvenie defekti. Ja koncentrÄjaties tieÅ”i uz Å”o sadaļu, varat pÄrliecinÄties, ka tajÄ ir daudz mazÄk defektu, un tad palielinÄsies laiks jaunu produktu izstrÄdei un atkal organizatorisko KPI atbalstam.
TÄdÄjÄdi katram lÄmumam, ieskaitot koda pÄrrakstÄ«Å”anu, ir jÄatbalsta konkrÄtie mÄrÄ·i, ko uzÅÄmums mums ir izvirzÄ«jis (organizÄcijas izaugsme, jaunas iespÄjas, personÄla atlase).
Å Ä« procesa gaitÄ atklÄjÄs interesanta lieta, kas kļuva par jaunumu ne tikai tehniÄ·iem, bet vispÄr uzÅÄmumÄ: visÄm biļetÄm jÄbÅ«t vÄrstÄm vismaz uz vienu KPI. Tas ir, ja produkts saka, ka tas vÄlas izveidot jaunu funkciju, pirmais jautÄjums ir jÄuzdod: āKÄdu KPI atbalsta Ŕī funkcija?ā Ja nÄ, tad atvainojiet - Ŕķiet, ka tÄ ir nevajadzÄ«ga funkcija.
TrÄ«sdesmitÄ diena
MÄneÅ”a beigÄs es atklÄju vÄl vienu niansi: neviens no manas Ops komandas nekad nav redzÄjis lÄ«gumus, kurus mÄs slÄdzam ar klientiem. JÅ«s varat jautÄt, kÄpÄc jums ir jÄredz kontakti.
PirmkÄrt, tÄpÄc, ka SLA ir norÄdÄ«ti lÄ«gumos.
OtrkÄrt, SLA lÄ«gumi ir atŔķirÄ«gi. Katrs klients nÄca ar savÄm prasÄ«bÄm, un pÄrdoÅ”anas nodaļa parakstÄ«jÄs, neskatoties.
Interesanta nianse ir arÄ« tÄ, ka lÄ«gumÄ ar vienu no lielÄkajiem klientiem ir norÄdÄ«ts, ka visÄm platformas atbalstÄ«tajÄm programmatÅ«ras versijÄm jÄbÅ«t n-1, proti, nevis jaunÄkajai, bet gan priekÅ”pÄdÄjai.
Ir skaidrs, cik tÄlu mÄs bijÄm no n-1, ja platformas pamatÄ bija ColdFusion un SQL Server 2008, kas jÅ«lijÄ vairs netika atbalstÄ«ts.
Äetrdesmit piektÄ diena
Ap otrÄ mÄneÅ”a vidu man bija pietiekami daudz laika, lai apsÄstos un darÄ«tu vÄrtÄ«baplÅ«smakartografÄÅ”ana pilnÄ«bÄ visam procesam. Tie ir nepiecieÅ”amie soļi, kas jÄveic, sÄkot no produkta izveides lÄ«dz tÄ piegÄdei patÄrÄtÄjam, un tie ir jÄapraksta pÄc iespÄjas detalizÄtÄk.
JÅ«s sadalÄt procesu mazos gabaliÅos un redzat, kas aizÅem pÄrÄk daudz laika, ko var optimizÄt, uzlabot utt. PiemÄram, cik ilgs laiks nepiecieÅ”ams, lÄ«dz produkta pieprasÄ«jums tiek apstrÄdÄts, kad tas sasniedz biļeti, ko izstrÄdÄtÄjs var izmantot, QA utt. TÄpÄc jÅ«s detalizÄti aplÅ«kojat katru atseviŔķu darbÄ«bu un domÄjat par to, ko var optimizÄt.
Kad es to izdarīju, manu uzmanību piesaistīja divas lietas:
liels skaits biļeÅ”u, kas no QA tiek atgrieztas izstrÄdÄtÄjiem;
vilkÅ”anas pieprasÄ«juma pÄrskatÄ«Å”ana aizÅÄma pÄrÄk ilgu laiku.
ProblÄma bija tÄ, ka tie bija Å”Ädi secinÄjumi: Å Ä·iet, ka tas aizÅem daudz laika, bet mÄs nezinÄm, cik ilgi.
"JÅ«s nevarat uzlabot to, ko nevarat izmÄrÄ«t."
KÄ pamatot, cik nopietna ir problÄma? Vai tas iznieko dienas vai stundas?
Lai to izmÄrÄ«tu, Jira procesam pievienojÄm dažas darbÄ«bas: āgatavs izstrÄdeiā un āgatavs kvalitÄtes nodroÅ”inÄÅ”anaiā, lai noteiktu, cik ilgi katra biļete gaida un cik reižu tÄ atgriežas uz noteiktu darbÄ«bu.
MÄs arÄ« pievienojÄm āpÄrskatÄā, lai uzzinÄtu, cik biļeÅ”u vidÄji ir paredzÄts pÄrskatÄ«Å”anai, un no tÄ jÅ«s varat sÄkt dejot. Mums bija sistÄmas metrika, tagad mÄs pievienojÄm jaunus rÄdÄ«tÄjus un sÄkÄm mÄrÄ«t:
Procesa efektivitÄte: veiktspÄju un plÄnoto/piegÄdÄto.
Procesa kvalitÄte: defektu skaits, defekti no QA.
Tas tieÅ”Äm palÄ«dz saprast, kas iet labi un kas ne.
PiecdesmitÄ diena
Tas viss, protams, ir labi un interesanti, bet otrÄ mÄneÅ”a beigÄs notika kaut kas, kas principÄ bija paredzams, lai gan es negaidÄ«ju tÄdus mÄrogus. CilvÄki sÄka aiziet, jo bija mainÄ«jusies augstÄkÄ vadÄ«ba. Jauni cilvÄki ienÄca vadÄ«bÄ un sÄka visu mainÄ«t, un vecie aizgÄja. Un parasti uzÅÄmumÄ, kas ir vairÄkus gadus vecs, visi ir draugi un visi viens otru pazÄ«st.
Tas bija gaidÄms, taÄu atlaiÅ”anas apmÄri bija negaidÄ«ti. PiemÄram, vienas nedÄļas laikÄ divi komandu vadÄ«tÄji pÄc paÅ”a vÄlÄÅ”anÄs vienlaikus iesniedza atlÅ«gumu. TÄpÄc man bija ne tikai jÄaizmirst par citÄm problÄmÄm, bet jÄkoncentrÄjas uz komandas izveidoÅ”ana. Å Ä« ir ilgstoÅ”a un grÅ«ti risinÄma problÄma, taÄu ar to bija jÄtiek galÄ, jo vÄlÄjos glÄbt palikuÅ”os cilvÄkus (vai lielÄko daļu no viÅiem). VajadzÄja kaut kÄ reaÄ£Ät uz cilvÄku aizieÅ”anu, lai saglabÄtu morÄli komandÄ.
TeorÄtiski tas ir labi: ienÄk jauns cilvÄks, kuram ir pilnÄ«ga brÄ«vÄ izvÄle, kurÅ” var novÄrtÄt komandas prasmes un nomainÄ«t personÄlu. PatiesÄ«bÄ jÅ«s nevarat vienkÄrÅ”i piesaistÄ«t jaunus cilvÄkus tik daudzu iemeslu dÄļ. LÄ«dzsvars vienmÄr ir vajadzÄ«gs.
Vecs un jauns. Mums ir jÄsaglabÄ veci cilvÄki, kuri var mainÄ«ties un atbalstÄ«t misiju. Bet tajÄ paÅ”Ä laikÄ mums ir jÄienes jaunas asinis, par to mÄs runÄsim nedaudz vÄlÄk.
Pieredze. Es daudz runÄju ar labiem junioriem, kuri vÄlÄjÄs ar mums strÄdÄt. Bet es nevarÄju viÅus uzÅemties, jo nebija pietiekami daudz senioru, kas atbalstÄ«tu juniorus un darbotos kÄ viÅu mentori. Vispirms vajadzÄja savervÄt virsotni un tikai tad jaunatni.
BurkÄns un nÅ«ja.
Man nav labas atbildes uz jautÄjumu, kÄds ir pareizais lÄ«dzsvars, kÄ to uzturÄt, cik cilvÄku saglabÄt un cik daudz uzspiest. Tas ir tÄ«ri individuÄls process.
Piecdesmit pirmÄ diena
Es sÄku rÅ«pÄ«gi aplÅ«kot komandu, lai saprastu, kas man ir, un atkal atcerÄjos:
"LielÄkÄ daļa problÄmu ir cilvÄku problÄmas."
Esmu atklÄjis, ka komandai kÄ tÄdai ā gan Dev, gan Ops ā ir trÄ«s lielas problÄmas:
ApmierinÄtÄ«ba ar paÅ”reizÄjo lietu stÄvokli.
AtbildÄ«bas trÅ«kums - jo neviens nekad nav nesis izpildÄ«tÄju darba rezultÄtus, lai ietekmÄtu biznesu.
Bailes no pÄrmaiÅÄm.
PÄrmaiÅas vienmÄr izved jÅ«s no jÅ«su komforta zonas, un, jo jaunÄki ir cilvÄki, jo vairÄk viÅiem nepatÄ«k pÄrmaiÅas, jo viÅi nesaprot, kÄpÄc, un viÅi nesaprot, kÄ. VisizplatÄ«tÄkÄ atbilde, ko esmu dzirdÄjis, ir: "MÄs nekad to neesam darÄ«juÅ”i." TurklÄt tas nonÄca lÄ«dz pilnÄ«gam absurdam ā mazÄkÄs izmaiÅas nevarÄja notikt bez kÄda saÅ”utuma. Un neatkarÄ«gi no tÄ, cik izmaiÅas ietekmÄja viÅu darbu, cilvÄki teica: āNÄ, kÄpÄc? Tas nedarbosies."
Bet jÅ«s nevarat kļūt labÄks, neko nemainot.
Man bija absolÅ«ti absurda saruna ar darbinieku, es viÅam izstÄstÄ«ju savas idejas optimizÄcijai, uz ko viÅÅ” man teica: - Ak, jÅ«s neredzÄjÄt to, kas mums bija pagÄjuÅ”ajÄ gadÄ!
- Nu un ko?
"Tagad tas ir daudz labÄk nekÄ tas bija."
- TÄtad, vai tas nevar bÅ«t labÄks?
- PriekÅ” kam?
Labs jautÄjums - kÄpÄc? It kÄ tagad ir labÄk nekÄ bija, tad viss ir pietiekami labi. Tas noved pie atbildÄ«bas trÅ«kuma, kas principÄ ir pilnÄ«gi normÄli. KÄ jau teicu, tehniskÄ grupa bija nedaudz malÄ. UzÅÄmums uzskatÄ«ja, ka tiem vajadzÄtu pastÄvÄt, bet neviens nekad nav noteicis standartus. Tehniskais atbalsts nekad neredzÄja SLA, tÄpÄc grupai tas bija diezgan āpieÅemamsā (un tas mani pÄrsteidza visvairÄk):
12 sekunžu ielÄde;
5-10 minÅ«Å”u dÄ«kstÄve katrai izlaiÅ”anai;
Kritisku problÄmu novÄrÅ”ana prasa dienas un nedÄļas;
dežūrpersonÄla trÅ«kums 24x7 / dežūras.
Neviens nekad nav mÄÄ£inÄjis jautÄt, kÄpÄc mÄs to nedarÄm labÄk, un neviens nekad nav sapratis, ka tÄ tam nav jÄbÅ«t.
KÄ bonuss bija vÄl viena problÄma: pieredzes trÅ«kums. VecÄkie aizgÄja, un palikuÅ”ais jaunais kolektÄ«vs uzauga iepriekÅ”ÄjÄ režīmÄ un saindÄjÄs ar to.
TurklÄt cilvÄki baidÄ«jÄs izgÄzties un izrÄdÄ«ties nekompetenti. Tas izpaužas faktÄ, ka, pirmkÄrt, viÅi nekÄdÄ gadÄ«jumÄ nelÅ«dza palÄ«dzÄ«bu. Cik reizes mÄs esam runÄjuÅ”i kÄ grupa un individuÄli, un es esmu teicis: "Uzdodiet jautÄjumu, ja nezinÄt, kÄ kaut ko darÄ«t." Esmu pÄrliecinÄta par sevi un zinu, ka varu atrisinÄt jebkuru problÄmu, bet tas prasÄ«s laiku. TÄpÄc, ja varÄÅ”u pajautÄt kÄdam, kurÅ” zina, kÄ to atrisinÄt 10 minÅ«tÄs, pajautÄÅ”u. Jo mazÄka pieredze jums ir, jo vairÄk baidÄties jautÄt, jo domÄjat, ka jÅ«s uzskatÄ«s par nekompetentu.
Å Ä«s bailes uzdot jautÄjumus izpaužas interesantÄ veidÄ. PiemÄram, jÅ«s jautÄjat: "KÄ jums veicas ar Å”o uzdevumu?" - "PalikuÅ”as pÄris stundas, es jau beidzu." NÄkamajÄ dienÄ jautÄ vÄlreiz, saÅem atbildi, ka viss kÄrtÄ«bÄ, bet bija viena problÄma, lÄ«dz dienas beigÄm noteikti bÅ«s gatavs. Paiet vÄl viena diena, un lÄ«dz brÄ«dim, kad esi piespiests pie sienas un spiests ar kÄdu runÄt, tas turpinÄs. CilvÄks vÄlas pats atrisinÄt problÄmu; viÅÅ” uzskata, ka, ja viÅÅ” pats to neatrisinÄs, tÄ bÅ«s liela neveiksme.
TÄpÄc izstrÄdÄtÄji uzpÅ«ta aplÄses. TÄ bija tÄ pati anekdote, kad viÅi apsprieda noteiktu uzdevumu, viÅi man iedeva tÄdu skaitli, ka es biju ļoti pÄrsteigts. Uz ko man teica, ka izstrÄdÄtÄja aplÄsÄs izstrÄdÄtÄjs iekļauj laiku, kad biļete tiks atgriezta no QA, jo viÅi tur atradÄ«s kļūdas, un laiku, ko prasÄ«s PR, un laiku, kamÄr cilvÄki, kuriem vajadzÄtu pÄrskatÄ«t tas bÅ«s aizÅemts - tas ir, viss, kas ir iespÄjams.
OtrkÄrt, cilvÄki, kuri baidÄs izrÄdÄ«ties nekompetenti pÄranalizÄt. Kad jÅ«s sakÄt, kas tieÅ”i ir jÄdara, tas sÄkas: "NÄ, ja mÄs par to padomÄsim Å”eit?" Å ajÄ ziÅÄ mÅ«su uzÅÄmums nav unikÄls, tÄ ir standarta problÄma jaunieÅ”iem.
Atbildot uz to, es ieviesu Å”Ädu praksi:
Noteikums 30 minÅ«tes. Ja nevarat atrisinÄt problÄmu pusstundas laikÄ, lÅ«dziet kÄdam palÄ«dzÄt. Tas darbojas ar mainÄ«giem panÄkumiem, jo āācilvÄki joprojÄm nejautÄ, bet vismaz process ir sÄcies.
LikvidÄjiet visu, izÅemot bÅ«tÄ«bu, aplÄÅ”ot uzdevuma izpildes termiÅu, tas ir, Åemiet vÄrÄ tikai to, cik ilgs laiks bÅ«s nepiecieÅ”ams koda rakstÄ«Å”anai.
MūžizglÄ«tÄ«ba tiem, kas pÄrlieku analizÄ. Tas ir tikai pastÄvÄ«gs darbs ar cilvÄkiem.
SeÅ”desmitÄ diena
KamÄr es to visu darÄ«ju, bija pienÄcis laiks izdomÄt budžetu. Protams, es atklÄju daudz interesantu lietu, kur mÄs tÄrÄjÄm savu naudu. PiemÄram, mums bija viss plaukts atseviÅ”Ä·Ä datu centrÄ ar vienu FTP serveri, ko izmantoja viens klients. IzrÄdÄ«jÄs, ka "... mÄs pÄrcÄlÄmies, bet viÅÅ” tÄds palika, mÄs viÅu nemainÄ«jÄm." Tas bija pirms 2 gadiem.
ÄŖpaÅ”u interesi izraisÄ«ja rÄÄ·ins par mÄkoÅpakalpojumiem. Es uzskatu, ka galvenais iemesls lielajam mÄkoÅa rÄÄ·inam ir izstrÄdÄtÄji, kuriem pirmo reizi mÅ«Å¾Ä ir neierobežota piekļuve serveriem. ViÅiem nav jÄjautÄ: āLÅ«dzu, iedodiet man testa serveriā, viÅi to var paÅemt paÅ”i. TurklÄt izstrÄdÄtÄji vienmÄr vÄlas izveidot tik forÅ”u sistÄmu, ka Facebook un Netflix bÅ«s greizsirdÄ«gi.
Bet izstrÄdÄtÄjiem nav pieredzes serveru iegÄdÄ un prasmes noteikt nepiecieÅ”amo serveru izmÄru, jo iepriekÅ” tas nebija vajadzÄ«gs. Un viÅi parasti Ä«sti nesaprot atŔķirÄ«bu starp mÄrogojamÄ«bu un veiktspÄju.
InventarizÄcijas rezultÄti:
MÄs atstÄjÄm to paÅ”u datu centru.
PÄrtraukÄm lÄ«gumu ar 3 baļķu pakalpojumiem. TÄ kÄ mums bija 5 no tiem - katrs izstrÄdÄtÄjs, kurÅ” sÄka spÄlÄt ar kaut ko, paÅÄma jaunu.
Tika izslÄgtas 7 AWS sistÄmas. Atkal neviens neapturÄja miruÅ”os projektus; viÅi visi turpinÄja strÄdÄt.
SamazinÄtas programmatÅ«ras izmaksas 6 reizes.
SeptiÅdesmit piektÄ diena
GÄja laiks, un pÄc divarpus mÄneÅ”iem man bija jÄtiekas ar direktoru padomi. MÅ«su direktoru padome nav ne labÄka, ne sliktÄka par citÄm; tÄpat kÄ visas direktoru padomes, tÄ vÄlas zinÄt visu. CilvÄki iegulda naudu un vÄlas saprast, cik daudz tas, ko mÄs darÄm, iekļaujas noteiktajos KPI.
Direktoru padome katru mÄnesi saÅem daudz informÄcijas: lietotÄju skaits, to pieaugums, kÄdus pakalpojumus viÅi izmanto un kÄ, veiktspÄju un produktivitÄti un, visbeidzot, vidÄjo lapas ielÄdes Ätrumu.
VienÄ«gÄ problÄma ir tÄ, ka es uzskatu, ka vidÄjais ir tÄ«rais ļaunums. Bet to ir ļoti grÅ«ti izskaidrot direktoru padomei. ViÅi ir pieraduÅ”i darboties ar apkopotiem skaitļiem, nevis, piemÄram, ar ielÄdes laiku sadalÄ«jumu sekundÄ.
Å ajÄ sakarÄ bija daži interesanti punkti. PiemÄram, es teicu, ka mums ir jÄsadala trafiks starp atseviŔķiem tÄ«mekļa serveriem atkarÄ«bÄ no satura veida.
Tas ir, ColdFusion iet caur Jetty un nginx un palaiž lapas. Un attÄli, JS un CSS iziet cauri atseviŔķai nginx ar savÄm konfigurÄcijÄm. TÄ ir diezgan standarta prakse, par kuru es runÄju rakstÄ«ja: pirms pÄris gadiem. LÄ«dz ar to bildes ielÄdÄjas daudz ÄtrÄk, un... vidÄjais ielÄdes Ätrums pieaudzis par 200 ms.
Tas notika, jo diagramma ir izveidota, pamatojoties uz datiem, kas tiek piegÄdÄti kopÄ ar Jetty. Tas ir, Ätrais saturs nav iekļauts aprÄÄ·inÄ - vidÄjÄ vÄrtÄ«ba ir uzlÄkusi. Tas mums bija skaidrs, mÄs smÄjÄmies, bet kÄ mÄs varam paskaidrot direktoru padomei, kÄpÄc mÄs kaut ko izdarÄ«jÄm un viss pasliktinÄjÄs par 12%?
AstoÅdesmit piektÄ diena
TreÅ”Ä mÄneÅ”a beigÄs es sapratu, ka ir viena lieta, ar ko es nemaz nebiju rÄÄ·inÄjusies: laiks. Viss, par ko es runÄju, prasa laiku.
Å is ir mans Ä«stais nedÄļas kalendÄrs ā tikai darba nedÄļa, ne pÄrÄk aizÅemta. Laika visam nepietiek. TÄpÄc atkal ir jÄpieÅem darbÄ cilvÄki, kas palÄ«dzÄs tikt galÄ ar problÄmÄm.
SecinÄjums
Tas vÄl nav viss. Å ajÄ stÄstÄ es pat neesmu sapratis, kÄ mÄs strÄdÄjÄm ar produktu un mÄÄ£inÄjÄm noskaÅoties uz vispÄrÄjo vilni vai kÄ mÄs integrÄjÄm tehnisko atbalstu, vai kÄ mÄs risinÄjÄm citas tehniskas problÄmas. PiemÄram, pavisam nejauÅ”i uzzinÄju, ka uz lielÄkajÄm datubÄzes tabulÄm mÄs neizmantojam SEQUENCE. Mums ir paÅ”rakstÄ«ta funkcija nextID, un tas netiek izmantots darÄ«jumÄ.
Bija vÄl miljons lÄ«dzÄ«gu lietu, par kurÄm mÄs varÄtu runÄt ilgi. Bet svarÄ«gÄkais, kas vÄl jÄpasaka, ir kultÅ«ra.
TÄ ir kultÅ«ra vai tÄs trÅ«kums, kas noved pie visÄm pÄrÄjÄm problÄmÄm. MÄs cenÅ”amies veidot kultÅ«ru, kurÄ cilvÄki:
Ir divas stratÄÄ£ijas attiecÄ«bÄ uz mantojumu: izvairÄ«ties no darba ar to par katru cenu vai drosmÄ«gi pÄrvarÄt ar to saistÄ«tÄs grÅ«tÄ«bas. MÄs c DevOpsConf MÄs ejam otro ceļu, mainot procesus un pieejas. Pievienojieties mums youtube, adresÄtu sarakstu Šø telegramma, un kopÄ mÄs ieviesÄ«sim DevOps kultÅ«ru.