Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

On teada, et CTO kompetentsi kontrollitakse vaid teisel korral, kui ta seda rolli tĂ€idab. Sest asi on selles, et töötada mitu aastat firmas, arendada koos temaga ja, olles endiselt samas kultuurikontekstis, saada jĂ€rk-jĂ€rgult rohkem vastutust, on ĂŒks asi. Ja hoopis teine on kohe tehnilise direktori ametisse astumine firmasse, millel on pĂ€rand ja hulk probleeme, mis on ettevaatlikult vaipa pĂŒhitud.

Selles mĂ”ttes on Leon Fayeri kogemus, millega ta jagas DevOpsConf, mitte just tĂ€iesti ainulaadne, kuid koos tema 20-aastase karjÀÀri ja erinevate rollde arvuga, mida ta on suutnud endale vĂ”tta, on see vĂ€ga kasulik. Allpool on 90 pĂ€eva sĂŒndmuste kronoloogia ja palju nördimusi, mille ĂŒle on hea naerda, kui need juhtuvad kellegi teisega, kuid millega pole nii lĂ”bus silmitsi seista.

Leon rÀÀgib vÀga vÀrvikalt vene keeles, seega kui sul on 35-40 minutit, soovitan videot vaadata. Tekstiversioon aja sÀÀstmiseks on allpool.

MĂ€ngi videot

Esimene versioon ettekandest oli hĂ€sti struktureeritud kirjeldus inimeste ja protsessidega töötamisest, mis sisaldas kasulikke soovitusi. Kuid see ei edastanud kĂ”iki teel ette tulnud ĂŒllatusi. SeetĂ”ttu muutsin formaati ja esitasin probleemid, millega ma uues firmas silmitsi seisime, nagu kuri vaim sulepeast, ja nende lahendamise meetodid ajalise jĂ€rjekorra alusel.

Kuu aega enne

Nagu paljude headest lugudest, algas see alkoholiga. Istusime tuttavatega baaris ja nagu IT-spetsialistide seas tavaks, kurtis igaĂŒks oma probleemide ĂŒle. Üks neist oli just tööd vahetanud ja rÀÀkis oma tehnoloogia, inimeste ja meeskonna probleemidest. Mida kauem ma teda kuulasin, seda rohkem sain aru, et tal oleks vaja lihtsalt mind palgata, sest just selliste probleemidega olen ma viimased 15 aastat tegelenud. Nii ĂŒtlesin ma talle ja jĂ€rgmisel pĂ€eval kohtusime juba ametlikus keskkonnas. EttevĂ”tte nimi oli Teaching Strategies.

Teaching Strategies on liider laste haridusprogrammidel, mis on suunatud vĂ€ga varajases eas - sĂŒnnist kuni kolme aastani. Traditsiooniline „paberivaba” ettevĂ”te on tegutsenud juba 40 aastat, samas kui digitaalne SaaS-versioon platvormist on olnud turul 10 aastat. Suhteliselt hiljuti algas digitaalsete tehnoloogiate kohandamine ettevĂ”tte standardite juurde. „Uus” versioon kĂ€ivitati 2017. aastal ja oli peaaegu sama, kuid töötas halvemini.

Huvitav on see, et selle ettevĂ”tte liiklus on vĂ€ga prognoositav — pĂ€evast pĂ€eva, aastast aastasse on vĂ”imalik vĂ€ga tĂ€pselt ennustada, kui palju inimesi tuleb ja millal. NĂ€iteks kell 13-15 lĂ€hevad kĂ”ik lapsed lasteaedades magama, samal ajal hakkavad Ă”petajad teavet sisestama. Ja see toimub iga pĂ€ev, vĂ€lja arvatud nĂ€dalavahetustel, kuna nĂ€dalavahetustel ei tööta peaaegu keegi.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

Kuid juba ette mainides ĂŒtlen, et alustasin oma tööd ajal, mil oli kĂ”ige suurem aastane liiklus, mis on huvitav mitmel pĂ”hjusel.

Platvorm, mis oli olnud alles kaks aastat, omas omamoodi teknoloogilist kihi: ColdFusion & SQL Server 2008. ColdFusion, kui te ei tea — ja tĂ”enĂ€oliselt ei tea — on selline enterprise PHP, mis ilmus 90ndate keskpaiku, ja ma pole selle kohta pĂ€rast seda isegi midagi kuulnud. Samuti olid seal: Ruby, MySQL, PostgreSQL, Java, Go, Python. Kuid peamine monoliit töötas ColdFusioni ja SQL Serveriga.

Probleemid

Mida rohkem ma ettevĂ”tte töötajatega rÀÀkisin, seda rohkem sain aru, et probleemid ei olnud ainult tehnilise iseloomuga. Nojah, tehnoloogia on vana — ja pole midagi, millega pole töötatud, kuid olid probleemid meeskonna ja protsessidega ning ettevĂ”te hakkas seda aru saama.

Traditsiooniliselt olid nende tehnikud nurgas ja tegelesid mingisuguse oma tööga. Kuid ĂŒha rohkem ja rohkem Ă€ri hakkas liikuma just lĂ€bi digitaalse versiooni. SeetĂ”ttu ilmus ettevĂ”ttes eelmisel aastal minu töö alguses uusi inimesi: juhatus, CTO, CPO ja QA-direktor. See tĂ€hendab, et ettevĂ”te hakkas investeerima tehnoloogiasektorisse.

Raske pĂ€randi jĂ€ljed olid olemas mitte ainult sĂŒsteemides. EttevĂ”ttes olid legacy-protsessid, legacy-inimesed, legacy-kultuur. KĂ”ike seda tuli muuta. MĂ”tlesin, et kindlasti ei hakka igav ja otsustasin proovida.

Kaks pÀeva enne

Kaks pÀeva enne uue töö algust tulin kontorisse, tÀitsin viimased dokumendid, tutvusin meeskonnaga ja avastasin, et sel ajal vÔitles meeskond probleemiga. Probleem seisnes selles, et lehtede keskmine laadimisaeg oli tÔusnud 4 sekundini, mis tÀhendab kahekordset kasvu.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

Graafiku pÔhjal oli selgelt midagi juhtunud, kuid ei olnud selge, mis. Selgus, et probleem oli network latency andmekeskuses: 5 ms latentsus andmekeskuses muutus 2 sekundiks kasutajatele. Miks see nii juhtus, ei teadnud ma, kuid igal juhul sai teada, et probleem on andmekeskuses.

Esimene pÀev

Kaks pÀeva hiljem avastasin ma oma esimesel tööl pÀeval, et probleem ei olnud kuhugi kadunud.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

Kaks pĂ€eva laadis leht keskmiselt 4 sekundit. KĂŒsin, kas oleme leidnud, mis probleem on.

— Jah, me avasime pileti.
— Ja?
— Noh, nad pole meile veel vastanud.

Siis mÔistsin, et kÔik, millest mulle varem rÀÀgiti, oli vaid jÀÀmÀe nÀhtav osa, millega tuleb tegeleda.

On hea tsitaat, mis sobib suurepÀraselt selle olukorra jaoks:

„MĂ”nikord on tehnoloogia muutmiseks vaja muuta organisatsiooni.“

Kuna alustasin tööd kÔige koormatud aastaaegadel, pidin vaatama mÔlemaid probleemilahenduse varianti: nii kiiret kui ka pikaajalist. Ja alustama kÔige kriitilisemast.

Kolmas pÀev

Nii, laadimine kestab 4 sekundit ja kella 13–15 on kĂ”ige suuremad tipud.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

Kolmandal pÀeval nÀgi selle ajavahemiku laadimiskiirus vÀlja nii:

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

Minu vaatenurgast ei töötanud ĂŒldse mitte midagi. KĂ”igi teiste jaoks töötas see natuke aeglasemalt kui tavaliselt. Kuid lihtsalt niimoodi ei juhtu — see on tĂ”sine probleem.

PĂŒĂŒdsin meeskonda veenda, millele nad vastasid, et meil on lihtsalt rohkem servereid vajalikud. See on muidugi probleemilahendus, kuid mitte alati ainus ja kĂ”ige tĂ”husam. KĂŒsin, miks serveritest puudu jÀÀb, kui suur on liiklus. Ekstrapoleerisin andmed ja sain, et meil on umbes 150 pĂ€ringut sekundis, mis on pĂ”himĂ”tteliselt mĂ”istlikul tasemel.

Kuid ei tohi unustada, et enne Ă”ige vastuse saamist tuleb esitada Ă”ige kĂŒsimus. Minu jĂ€rgmine kĂŒsimus oli: kui palju meil on frontend-servereid. Vastus hĂ€mmastas mind veidi — meil oli 17 frontend-serverit!

— Julgen kĂŒsida, kui jagada 150 17-ga, saame umbes 8? Tahtsite öelda, et iga server laseb lĂ€bi 8 pĂ€ringut sekundis, ja kui homme on 160 pĂ€ringut sekundis, vajame veel 2 serverit?

Muidugi ei olnud meil vajagi lisaseverid. Lahendus peitus koodis, veelgi enam, see oli pinnapealne:

var currentClass = classes.getCurrentClass();
return currentClass;

Oli funktsioon getCurrentClass(), sest kĂ”ik saidil töötab klassi kontekstis — see on Ă”ige. Ja igaĂŒhe jaoks selle funktsiooni peal iga lehe jaoks tuli 200+ pĂ€ringut.

Lahendus oli seega vĂ€ga lihtne, ei olnud isegi vaja midagi ĂŒmber kirjutada: lihtsalt ei kĂŒsi sama teavet uuesti.

if ( !isDefined("REQUEST.currentClass") ) {
    var classes = new api.private.classes.base();
   REQUEST.currentClass = classes.getCurrentClass();
}
return REQUEST.currentClass;

Olin vĂ€ga rÔÔmus, sest arvasin, et leidsin peamise probleemi vaid kolmandal pĂ€eval. Kuidas ma olin naiivne, see oli vaid ĂŒks paljusid probleeme.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

Kuid selle esimese probleemi lahendamine tÔi graafiku palju madalamale.

Sama ajal tegelesime teiste optimeerimistega. Palju asju oli silma all, mida sai parandada. NĂ€iteks avastasin kolmandal pĂ€eval, et sĂŒsteemis oli siiski vahemĂ€lu (esialgu arvasin, et kĂ”ik pĂ€ringud tulevad otse andmebaasist). Kui mĂ”tlen vahemĂ€lule, kujutan ette tavalisi Redis vĂ”i Memcached. Kuid ainult mina mĂ”tlesin nii, sest selle sĂŒsteemi vahemĂ€luks kasutati MongoDB-d ja SQL Serverit — sama, millest andmed Ă€sja loeti.

KĂŒmnes pĂ€ev

Esimese nÀdala veetsin probleemide otsimisega, mida tuli kohe lahendada. Kusagil teisel nÀdalal tulin esmakordselt stand-up'i, et suhelda meeskonnaga, nÀha, mis toimub ja kuidas kogu protsess kulgeb.

Taaskord avastasin midagi huvitavat. Meeskond koosnes: 18 arendajast; 8 testijast; 3 juhist; 2 arhitektist. Ja kĂ”ik nad osalesid ĂŒldistes rituaalides, st rohkem kui 30 inimest tuli iga hommik stand-up'ile ja rÀÀkis, mida nad tegid. Selge, et kohtumine ei kestnud 5 ega 15 minutit. Keegi ei kuulnud kedagi, sest kĂ”ik töötasid erinevates sĂŒsteemides. Sel viisil 2-3 piletit tunni jooksul grooming session'il juba oli hea tulemus.

Esimene asi, mida me tegime, oli jagada meeskond mitmeks toodete rida pidi. Erinevate sektsioonide ja sĂŒsteemide jaoks eraldasime spetsiifilised meeskonnad, kuhu kuulusid arendajad, testijad, tootjajuhid ja Ă€rianalĂŒĂŒtikud.

Tulemuseks saime:

  • Stand-upide ja koosolekute lĂŒhenemine.
  • Tootealane teadmiste baasi.
  • Omanditunne. Kui varem liikusid inimesed pidevalt sĂŒsteemide vahel, teadsid nad, et tĂ”enĂ€oliselt peavad kellegi teise vead lahendama, mitte ise.
  • Koostöö gruppide vahel. Pole vaja öelda, et QA ja arendajad ei ole varem eriti suhelnud, tootearendaja tegi oma asja jne. NĂŒĂŒd on neil ĂŒhine vastutuse koht.

Peamiselt keskendusime efektiivsusele, tootlikkusele ja kvaliteedile — need probleemid olid need, mida pĂŒĂŒdsime lahendada meeskonna transformatsiooni kaudu.

ÜheteistkĂŒmnes pĂ€ev

Meeskonna struktuuri muutmise kĂ€igus avastasin, kuidas loendatakse LuguPunktid. 1 SP oli vĂ”rdsed ĂŒhe pĂ€evaga, ja iga pilet sisaldas SP-d nii arendamiseks kui ka QA-ks, st vĂ€hemalt 2 SP-d.

Kuidas ma seda avastasin?

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

Leidsime vea: ĂŒhes raportis, kus sisestatakse algus- ja lĂ”ppkuupĂ€ev, ei arvestata viimast pĂ€eva. See tĂ€hendab, et kusagil pĂ€ringus oli mitte <=, vaid lihtsalt <. Mulle öeldi, et see on kolm Story Pointi, st 3 pĂ€eva.

PĂ€rast seda me:

  • Vaatasime ĂŒle Story Pointide hindamissĂŒsteemi. NĂŒĂŒd jĂ”uavad vĂ€ikeste vigade parandused, mida saab kiiresti sĂŒsteemi sisse viia, kiiremini kasutajani.
  • Alustasime seotud piletite ĂŒhendamist arendamiseks ja testimiseks. Varem oli iga pilet, iga viga iseseisev ekosĂŒsteem, mis ei olnud seotud millegi muuga. Kolme nupu muutmine ĂŒhel lehel vĂ”is olla kolm erinevat piletit kolme erineva QA-protsessiga, mitte ĂŒks automaatne test lehel.
  • Hakkasime arendajatega töötama töömahtude hindamise lĂ€henemise kallal. Kolm pĂ€eva, et muuta ĂŒhte nuppu — see ei ole naljakas.

KakskĂŒmmend pĂ€ev

Kusagil kuu esimeses pooles olukord veidi stabiliseerus, sain aru, mis pÔhimÔtteliselt toimub, ja hakkasin juba tulevikku vaatama ja pikaajalisi lahendusi mÔtlema.

Pikaajalised eesmÀrgid:

  • Haldatav platvorm. Sadade pĂ€ringute olemasolu igal lehel — see ei ole tĂ”siseltvĂ”etav.
  • Ettearvatavad trendid. Oli perioodilisi liikluse harjume, mis esmapilgul ei korreleerunud teiste mÔÔdikutega — pidime aru saama, miks nii juhtub ja Ă”ppima ennustama.
  • Platvormi laiendamine. Äri kasvab pidevalt, kasutajaid tuleb ĂŒha rohkem, liiklus suureneb.

Varem öeldi sageli: "Kiri see kĂ”ik [keeles/raamistikes] ĂŒle, kĂ”ik hakkab parem liikuma!"

Enamikul juhtudel see ei toimi, on hea, kui ĂŒmber kirjutatud ikka töötab. SeetĂ”ttu pidime koostama teekaardi — konkreetse strateegia, mis illustreerib samm-sammult, kuidas saavutatakse Ă€rieesmĂ€rke (mida me teeme ja miks), mis:

  • peegeldab projekti missiooni ja eesmĂ€rke;
  • prioriseerib peamised eesmĂ€rgid;
  • sisaldab ajakava nende saavutamiseks.

Kuni selle hetkeni ei olnud keegi meeskonnaga rÀÀkinud, milleks tehakse mingeid muutusi. Selle jaoks on vajalikud Ôiged edutegurid. Esmakordselt ettevÔtte ajaloos seadsime tehnilistele meeskondadele KPI-d, sidudes need organisatsioonilistega.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

See tĂ€hendab, et organisatsioonilised KPI-d toetavad meeskonnad ja meeskonna KPI-d toetavad juba individuaalsed. Vastupidisel juhul, kui tehnilised KPI-d ei kattu organisatsioonilistega, siis igaĂŒks tĂ”mbab teki enda peale.

NĂ€iteks ĂŒks organisatsiooniline KPI on turuosa suurendamine uute toodete kaudu.

Mis toetab eesmÀrki omada rohkem uusi tooteid?

  • Esiteks, me tahame kulutada rohkem aega uute toodete arendamisele selle asemel, et defekte parandada. See on loogiline lahendus, mida on lihtne mÔÔta.
  • Teiseks, me tahame toetada tehingute arvu suurenemist, sest mida suurem on turuosa, seda rohkem on kasutajaid ja seega ka rohkem liiklust.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

Siis vÔivad individuaalsed KPI-d, mis vÔivad grupis tÀituda, olla nÀiteks need kohad, kust peamised defektid tulevad. Kui keskenduda just sellele osale, saab defekte oluliselt vÀhendada, andes jÀlle aega uute toodete arendamiseks ja ka organisatsiooni KPI-de toetamiseks.

Seega peab iga otsus, sealhulgas koodi ĂŒmber kirjutamine, toetama konkreetseid eesmĂ€rke, mis ettevĂ”te meile seadis (organisatsiooni kasv, uued funktsioonid, töötajate vĂ€rbamine).

Selle protsessi kĂ€igus tuli vĂ€lja huvitav asi, mis sai uudiseks mitte ainult tehnikutele, vaid ka kogu ettevĂ”ttes: kĂ”ik piletid peavad olema suunatud vĂ€hemalt ĂŒhele KPI-le. See tĂ€hendab, et kui tootejuht ĂŒtleb, et soovib luua uut funktsiooni, peab esimene kĂŒsimus olema: „Millist KPI-d see funktsioon toetab?” Kui ei ĂŒhtegi, siis vabandust — see nĂ€ib olevat mittevajalik funktsioon.

KolmekĂŒmnes pĂ€ev

Kuu lĂ”pus avastasin veel ĂŒhe detaili: keegi minu Ops-tiimist ei olnud kunagi nĂ€inud lepinguid, mille me klientidega sĂ”lmisime. VĂ”ite kĂŒsida, miks lepinguid vaadata.

  • Esiteks, kuna lepingutes on kirjeldatud SLA-d.
  • Teiseks, SLA-d on kĂ”ik erinevad. Iga klient tuli oma nĂ”uetega, aga mĂŒĂŒgiosakond allkirjastas need pilk peal.

Veel ĂŒks huvitav detail – ĂŒhe meie suurima kliendi lepingus on kirjas, et kĂ”ik platvormi toetatavad tarkvaraversioonid peavad olema n-1, st mitte kĂ”ige uuem versioon, vaid eelviimane.

On selge, kui kaugel me olime n-1-st, kui platvorm töötas ColdFusioni ja 2008. aasta SQL Serveriga, mida juulis enam ei toetatud.

KĂŒmmend viies pĂ€ev

Umbes teise kuu keskpaiku oli mul piisavalt aega, et istuda ja teha valuestreammapping kogu protsessi jaoks. Need on vajalikud sammud, mida tuleb teha tootearendusest kuni toote tarbijani toimetamiseni, ja need tuleb maksimaalselt detailselt ĂŒles kirjutada.

Jaga protsess vÀikesteks osadeks ja vaata, mis vÔtab liiga palju aega, mida saab optimeerida, tÀiustada jne. NÀiteks, kui kaua vÔtab aega toote pÀring, selle lÀbimine grooming'is, kui see jÔuab piletini, mille arendaja saab vÔtta, QA jne. Nii detailselt vaatad iga eraldi sammu ja mÔtled, mida saab optimeerida.

Kui ma seda tegin, tÔusid silma kaks asja:

  • kĂ”rge prosent piletite tagasivĂ”tmiseks QA-st arendajatele;
  • pull request'i ĂŒlevaated vĂ”tavad liiga palju aega.

Probleem oli selles, et need olid jÀreldused nagu: tundub, et see vÔtab palju aega, aga me ei ole kindlad, kui tÀpselt.

„Ei saa parandada seda, mida ei saa mÔÔta.“

Kuidas pÔhjendada, kui tÔsine probleem on? Kas selle tÔttu kulub pÀevi vÔi tunde?

Selle mÔÔtmiseks lisasime paar sammu Jira-protsessi: „ready for dev“ ja „ready for QA“, et mÔÔta, kui kaua iga pilet ootab ja kui mitu korda see teatud sammu tagasi tuleb.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

Lisasime ka „in review“, et teada, kui kaua keskmiselt piletid review's on, ja sellest edasi liikuda. Meil olid sĂŒsteemilised mÔÔdikud, nĂŒĂŒd lisasime uusi mÔÔdikud ja hakkasime mÔÔtma:

  • Protsessi efektiivsus: tootlikkus ja planeeritud/toimetatud.
  • Protsessi kvaliteet: defektide arv, defektid QA-st.

See tÔesti aitab mÔista, mis lÀheb hÀsti ja mis halvasti.

ViiskĂŒmmend esimene pĂ€ev

See on muidugi kĂ”ik tore ja huvitav, kuid teise kuu lĂ”pu lĂ€henedes juhtus see, mis pĂ”himĂ”tteliselt oli prognoositud, kuigi ma ei oodanud sellist ulatust. Inimesed hakkasid lahkuma, kuna juhtimine muutus. Uued inimesed tulid juhtimine ja hakkasid kĂ”ike muutma, ja vanad lahkusid. Tavaline on, et ettevĂ”ttes, mis on tegutsenud juba mitu aastat, on kĂ”ik sĂ”brad ja kĂ”ik tunnevad ĂŒksteist.

See oli ootuspĂ€rane, kuid lahkumiste ulatus oli ootamatu. NĂ€iteks esitasid kaks tiimijuhti ĂŒhel nĂ€dalal korraga lahkumisavalduse. SeetĂ”ttu pidin keskenduma mitte lihtsalt teistele probleemidele, vaid kollektiivi loomisele. See on pikk ja keeruline probleem, kuid sellega tuli tegeleda, kuna soov oli sĂ€ilitada inimesi, kes olid jÀÀnud (vĂ”i enamiku neist). Pidi kuidagi reageerima sellele, et inimesed lahkusid, et hoida meeskonna moraali.

Teoreetiliselt on see hea: tuleb uus inimene, kellel on tÀiendav vabadus ja kes vÔib hinnata meeskonna oskusi ja asendada töötajad. Tegelikkuses ei saa lihtsalt uusi inimesi tuua vÀga paljusid pÔhjuseid. Alati on vajalik tasakaal.

  • Vanade ja uute vahel. Peab sĂ€ilitama vanu inimesi, kes saavad muutuda ja toetada missiooni. Kuid samal ajal tuleb tuua uut verd, millest rÀÀgime veidi hiljem.
  • Kogemus. Olen palju rÀÀkinud heade nooremate töötajatega, kes olid motiveeritud ja soovisid meie juurde tööle. Kuid ma ei saanud neid vĂ”tta, sest vanemaid ei olnud piisavalt, et toetada nooremaid ja olla nende mentoriteks. Esiteks pidi olema juhtkond ja alles siis noored.
  • Kepi ja kommi.

Mul ei ole head vastust kĂŒsimusele, milline tasakaal on Ă”ige, kuidas seda hoida, kui inimesi jĂ€tta ja kui palju survet avaldada. See on puhtalt individuaalne protsess.

ViiskĂŒmmend teine pĂ€ev

Alandasin ennast meeskonda jÀlgima, et mÔista, kes mul on, ja meenutasin taas:

"Enamik probleeme on seotud inimestega."

Avastasin, et meeskonnas, nii arendajate kui ka Opside seas, on kolm suurt probleemi:

  • Rahulolu praeguse olukorraga.
  • Vastutuse puudumine — sest keegi pole kunagi seostanud soorituse tulemusi Ă€ri mĂ”ju.
  • Muudatuste kartmine.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

Muudatused viivad alati mugavustsoonist vĂ€lja ning nooremad inimesed kipuvad muutusi rohkem kartma, kuna nad ei mĂ”ista, miks neid on vaja ja kuidas need toimivad. KĂ”ige levinum vastus, mida ma kuulnud olen: «Me pole nii kunagi teinud». Tegelikult viib see tĂ€ieliku absurdi juurde – isegi vĂ€iksemad muudatused ei möödunud ilma, et keegi ei protesteeriks. Ja ei olnud oluline, kui palju muudatused nende tööd mĂ”jutasid, inimesed ĂŒtlesid: «Ei, miks? See ei toimi».

Aga ei saa paremaks muutuda, mitte midagi muutes.

Mul oli tĂ€iesti absurdne vestlus töötajaga, rÀÀkisin talle oma ideedest optimeerimise kohta, mille peale ta ĂŒtles:
— Ah, sa ei ole nĂ€inud, mis meil eelmisel aastal oli!
— No ja mis siis?
— Praegu on palju parem kui oli.
— Kas siis ei saa veel paremaks?
— Miks?

Hea kĂŒsimus — miks? Nagu oleks, kui praegu on parem kui oli, siis on kĂ”ik piisavalt hea. See viib vastutuse puudumiseni, mis on pĂ”himĂ”tteliselt tĂ€iesti normaalne. Nagu ma ĂŒtlesin, tehniline meeskond oli veidi kĂ”rval. EttevĂ”ttes arvati, et nad peavad olema, aga keegi ei ole kunagi kehtestanud standardeid. Tugiteenuses pole kunagi SLA-d nĂ€htud, seega oli grupile tĂ€iesti «vastuvĂ”etav» (ja see ĆĄokeeris mind kĂ”ige rohkem):

  • 12 sekundi laadimisaeg;
  • 5-10 minutit seisakut iga vĂ€ljaande ajal;
  • kriitiliste probleemide lahendamine vĂ”tab pĂ€evi ja nĂ€dalat;
  • 24/7 valve puudumine / reageerimise valmidus.

Keegi pole kunagi ĂŒritanud kĂŒsida, miks me ei saaks seda paremaks muuta, ja keegi ei ole kunagi mĂ”istnud, et see ei peaks niimoodi olema.

Boonuseks oli veel ĂŒks probleem: kogemuse puudumine. Kogenud töötajad lahkusid ja jÀÀnud noor meeskond kasvas eelmistes oludes ja oli selle tĂ”ttu saastatud.

KĂ”ike seda kartisid inimesed ka ebaĂ”nnestuda, et tunduda ebakompetentsed. See avaldub selles, et nad, esiteks, ei palu mingil juhul abiKui palju kordi oleme grupis ja individuaalselt rÀÀkinud ning ma olen öelnud: „KĂŒsi kĂŒsimus, kui sa ei tea, kuidas midagi teha.” Ma usun endasse ja tean, et suudan lahendada iga probleemi, kuid see vĂ”tab aega. SeetĂ”ttu, kui on vĂ”imalik kĂŒsida kellegilt, kes teab, kuidas seda 10 minutiga lahendada, kĂŒsin ma. Mida vĂ€hem sul on kogemusi, seda rohkem sa kardad kĂŒsimusi kĂŒsida, kuna arvad, et sind peetakse ebakompetentseks.

See hirm kĂŒsimiseks avaldub huvitaval viisil. NĂ€iteks kĂŒsid: „Kuidas selle ĂŒlesandega on?” — „On jÀÀnud paar tundi, juba lĂ”petan.” JĂ€rgmisel pĂ€eval kĂŒsid jĂ€lle, saad vastuse, et kĂ”ik on hĂ€sti, kuid tekkinud on ĂŒks probleem, et pĂ€eva lĂ”puks on see kindlasti valmis. Möödub veel pĂ€ev ja seni, kuni sa kedagi nurka ei suru ja ei pane rÀÀkima, jĂ€tkub kĂ”ik samamoodi. Inimene tahab ĂŒlesande ise lahendada, ta arvab, et kui ta ise ei lahenda, on see suur ebaĂ”nnestumine.

Just seetĂ”ttu arendajad liialdasid hindamistega. See oli tĂ”eline anekdoot, kui arutasime kindlat ĂŒlesannet ja mulle anti selline number, et olin vĂ€ga ĂŒllatunud. Selle peale öeldi, et hindamistes arvestab arendaja ka aega, mille pilet QA-st tagasi tuleb, sest nad leiavad seal vigu, ja aega, mis kulub PR-ile, ja aega, mida kulutavad inimesed, kes peavad seda ĂŒle vaatama, kuna nad on hĂ”ivatud — ehk kĂ”ik, mis vĂ”imalik.

Teiseks, inimesed, kes kardavad tunduda ebakompetentsed, analĂŒĂŒsivad liigset. Kui ĂŒtled, mida konkreetselt on vaja teha, hakkab tulema: „Ei, aga mis siis, kui me siin mĂ”tleme?” Selles mĂ”ttes ei ole meie ettevĂ”te ainulaadne, see on noorte standardne probleem.

Vastuseks alustan jÀrgmiste praktikate rakendamist:

  • 30 minuti reegel. Kui poole tunni jooksul ei suuda probleemi lahendada, palu kellelgi abiks olla. See töötab varieeruva eduga, kuna inimesed ei kĂŒsi endiselt, kuid vĂ€hemalt protsess on alanud.
  • VĂ€listage kĂ”ik, vĂ€lja arvatud olemus, ĂŒlesande tĂ€itmise tĂ€htaegade hindamisel, st arvesta ainult seda, kui palju aega kulub koodi kirjutamiseks.
  • Pidev Ă”ppimine neile, kes analĂŒĂŒsivad liigset. See on lihtsalt pidev töö inimestega.

KuuekĂŒmnes pĂ€ev

Kuna ma sellega kĂ”ik tegelesin, tuli aeg eelarvega tegelema hakata. Loomulikult leidsin ma palju huvitavat selle kohta, kuhu me raha kulutasime. NĂ€iteks oli meil eraldi andmekeskuses terve riiul, millel seisis ĂŒks FTP-server, mida kasutas ĂŒks klient. Selgus, et „... me kolisime, aga ta jĂ€i nii, me ei vahetanud seda“. See oli kaks aastat tagasi.

Eriti huvitav oli arve pilveteenuste eest. Olen kindel, et suures arves pilveteenuste osas on peamine pĂ”hjus arendajad, kellel on esmakordselt elus piiramatud juurdepÀÀs serveritele. Neil ei ole vaja kĂŒsida: „Palun andke mulle testserver“, — nad saavad ise vĂ”tta. Lisaks sellele tahavad arendajad alati ehitada nii lahedat sĂŒsteemi, et Facebook ja Netflix Ă”gardavad.

Aga arendajatel ei ole kogemust serverite ostmisel ja oskust mÀÀrata vajalikke serverite suurusi, kuna nad pole seda varem vajanud. Ja tavaliselt ei mÔista nad tÀiesti vahet, mille vahel on scalability ja performance.

Inventuuri tulemused:

  • LĂ€ksime ĂŒhest andmekeskusest vĂ€lja.
  • TĂ€htsustasime koostöö lĂ”petamist kolme logiteenuse pakkujaga. Sest meil oli neid viis — iga arendaja, kes alustas millegagi mĂ€ngimist, vĂ”ttis uue.
  • Ketasime 7 AWS-sĂŒsteemi. JĂ€llegi, surnud projekte ei peatatud, nad kĂ”ik jĂ€tkasid tööd.
  • VĂ€hendasime tarkvara kulusid kuus korda.

SeitsmekĂŒmne viies pĂ€ev

Aeg kulges ja kahe ja poole kuu pÀrast pidin kohtuma juhatusega. Meie juhatus ei ole paremini ega halvemini kui teised, nad tahavad teada kÔike. Inimesed investeerivad raha ja tahavad mÔista, kuivÔrd see, mida me teeme, sobib seatud KPI-dega.

Juhatus saab iga kuu palju teavet: kasutajate arv, nende kasv, milliseid teenuseid nad kasutavad ja kuidas, tootlikkus ja lÔpuks lehe keskmine laadimisaeg.

Probleem on vaid selles, et ma arvan, et keskmine arv on puhas paha. Kuid juhatusele on seda vÀga raske selgitada. Nad on harjunud töötama aggregeeritud numbritega, mitte nÀiteks laadimisaega sekundites.

Sellega seoses olid huvitavad hetked. NĂ€iteks ĂŒtlesin, et liiklus tuleb jagada eraldi veebiserverite vahel sĂ”ltuvalt sisu tĂŒĂŒbist.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

See, ColdFusion goes through Jetty and nginx and serves the pages. Images, JS, and CSS are handled by a separate nginx with their own configurations. This is quite a standard practice, which I kirjutatud only considered a couple of years ago. As a result, images load much faster, and ... the average loading speed increased by 200 ms.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

This happened because the chart is based on data coming from Jetty. So, quick content isn't included in the calculation — the average spike increased. We understood this, laughed about it, but how do we explain to the board why something we did got worse by 12%?

The eighty-fifth day

By the end of the third month, I realized that there was one thing I hadn’t counted on at all — time. Everything I was talking about requires time.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

This is my actual calendar for the week — just a working week, not very busy. There isn't enough time for everything. So again, we need to hire people who can help solve the problems.

KokkuvÔte

This is not everything. In this story, I haven't even gotten to how we worked with the product and tried to calibrate to the same wavelength, or how we integrated technical support, or how we solved other technical issues. For example, I accidentally discovered that with the largest tables in the database, we aren't using JÕUD. We have a custom function nextID, and it's not used in a transaction.

There were a million similar things to talk about. But the most important thing still to mention is culture.

Legacy-sĂŒsteemide ja -protsesside jĂ€tkamine vĂ”i Esimesed 90 pĂ€eva CTO rollis

It’s culture, or its absence, that leads to all other problems. We are trying to build a culture where people:

  • aren't afraid of failures;
  • learn from mistakes;
  • collaborate with other teams;
  • show initiative;
  • take responsibility;
  • welcome results as a goal;
  • celebrate success.

With this, everything else will come.

Leon Fire on twitter, facebook ja medium.

Regarding legacy, there are two strategies: to avoid working with it at all costs, or to bravely overcome the accompanying challenges. We are DevOpsConf taking the second path, changing processes and approaches. Join us in youtube, the newsletter ja telegram, and together we will implement a DevOps culture.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster