Retrospetiiv ristteedest. Kuidas isetehtud lahendus osutus kallimast paremini töötavaks

Tere! Mina olen Aleksei Pjankov, peamine programmeerija ettevĂ”ttes Sportmaster. Ütlen kohe, et „peamine“ ei tĂ€henda „kĂ”ige peamine kĂ”igist programmeerijatest“, ei, see on lihtsalt nimetus, lahke tĂ”lge „Senior+".

EttevÔttes Sportmaster olen töötanud alates 2012. aastast ja selle aja jooksul on meie arendusmeeskond loonud palju tehniliselt huvitavaid lahendusi. Kuid tÀna tahaksin rÀÀkida meie tööst, keskendudes pigem sellele, kuidas me mÔtteid vahetasime teatud kaheldavates olukordades.

KĂ€esolevas artiklis ei tule konkreetseid tehnilisi lahendusi (ega midagi muud tehnilist), mida tuleks haarata ja rakendada oma projektis. Pigem on see peegeldus tehtud tööst. Oli mĂ”ned erilised hetked, mis mĂ”jutasid meid meeskonnana — ĂŒhendasid, tugevdasid ja viisid proovile. Nendest hetkest, meie meeskonna töö atmosfÀÀrist, meie takistustest ja psĂŒhholoogilistest lĂ”ksudest, kuhu me end mĂ”nikord lĂŒkkame, pĂŒĂŒan ma tĂ€na rÀÀkida.

Retrospetiiv ristteedest. Kuidas isetehtud lahendus osutus kallimast paremini töötavaks

Ja alustan just 2012. aastast.

Tulin 2012. aastal peamise eesmĂ€rgiga — töötada vĂ€lja meie lipulaev veebileht. Sel ajal oli see nagu „Frankensteini monster”: osa meeskonnast töötas meie vana sĂŒsteemiga, mis ei suutnud koormustega hĂ€sti toime tulla (Bitrix), ning teises meeskonna osas (kuhu kuulusin ka mina) pĂŒĂŒdsime rakendada uut sĂŒsteemi, mille olime valinud kriteeriumiga „Kuna see on kĂ”ige kallim e-kaubanduse sĂŒsteem maailmas, vĂ”tame selle”. Just „pĂŒĂŒdsite rakendada” — sest sĂŒsteem vastupanu osutas ja iga kord, kui saime millegagi hakkama, tekkis kindlasti â€žĂŒllatus”. Töö oli palju, kuid edusamme tegime kilpkonna kiirusel.

Isiklikult lĂ€ks viimane piisk karikasse, kui tutvusin ĂŒhe meetodi koodiga selles "maailma kallimas e-kaubanduses", kus mitu tundi intensiivset tööd keerulise vea kallal viis avastamiseni, et pĂ”hjus oli peidus custom-tag'is, mis töötab HTML-i genereerimise ajal JSP-s. Selle custom-tag'i ĂŒlesanne on kuvada mingite vÀÀrtuste summa. See on kindlasti kasulik, selle jaoks need custom-tag'id loodud ongi. Kuid ĂŒllatus peitus selles, et sellega muudetakse mĂ”ned andmed andmebaasis, mis mĂ”jutab kĂ€itumist jĂ€rgmistel lehtedel, ja kui vajutada F5 — kutsuti korduma, mis rikkus andmete jĂ€rjepidevust. Ning rikkumine ilmnes selliselt, et seda mĂ€rkasin alles paar sammu hiljem, 3. lehe jĂ€rjestuses. Ei, ma ei ole vastu sellele, et selline "meistrininjutsu" oleks meeskonnas ja oma koodiga hoiab kolleegide tĂ€helepanu teravana. Kuid mitte nii, maailma kallima sĂŒsteemi teegis!

See oli reede. LaupĂ€eva ja pĂŒhapĂ€eva veetsime kolleegiga kontoris, et vĂ€lja selgitada, millised ĂŒlesanded ettevĂ”te tĂ€na sĂŒsteemile seab ja milliseid ĂŒlesandeid vĂ”ib vĂ€lja mĂ”elda aasta pĂ€rast. Seega, kuidas me neid lahendaksime, kui me ei oleks sunnitud kasutama seda kĂ”ige kallimat ja kĂ”ige Ă€rritavamat sĂŒsteemi.

Üeldud — tehtud. Me tegime pilootprojekti, mille alusele arendasime uut Spordimeistri veebisaiti. Paljud neist ideedest on ellu Ă€rganud ja nende jĂ€tk on aktiivselt veebisaidil.

Pilootprojekti etapid ja ajakava

2 pĂ€eva. Me tegime mikrovormingu — nĂ€dalavahetuse jooksul teisendame meie andmebaasi ElasticSearch'i, teeme fassaadiotsing. VoilĂ ! Ostetud sĂŒsteemis vĂ”ttis sarnane seade aega 2 nĂ€dalat. Ja siin — vaid paar tundi! Lisaks töötab see kiiremini. TĂ€psemalt öeldes kiiremini ĂŒhe kordaga.

2 nĂ€dalat. Loodame prototĂŒĂŒpi, lisame funktsionaalsuse tĂ”husaks isikupĂ€rastatud vĂ€ljundiks.

NĂ€iteks, kui kasutajal on mitmeid allahindlusi ja pakkumisi, mis kehtivad just temale — siis peab otsingutulemustes kuvatama tĂ€pselt see hind, mida on vĂ”imalik saada, rakendades kĂ”iki saadaval olevaid vĂ”imalusi kĂ”ige soodsamal viisil.

Pakkumistega pole kĂ”ik nii lihtne. NĂ€iteks, ostsin suusad, nĂŒĂŒd on mĂŒtsile 40% allahindlus, kuid see tĂŒhistab welcome-allahindluse 10% kogu tellimusele. Jah, see on tegelik juhtum 🙂 Ja et sellist kampaaniat ostusĂŒsteemis seadistada, maksti 3 konsultatsiooni eest tarnijaga, mille tulemusena saime palju nĂ€iteid, kuidas teha erinevaid muid kampaaniaid. VĂ€ga diplomaatiline ja, arvestades konsultatsioonide hinda — vĂ€ga hea majanduslikult.

NÀitasime ettevÔttele pÔhjalikku demo. Lubasime kiiresti pilooti kokku panna ja hakkasime kohe asja kallale.

2 kuud. Pilootprojekt — teeme elu veebisaidi kujul, kus on katalooge otsimine. Otsimine koos fassaadidega, otsingutulemused — isiklike allahindlustega, nĂ€eb piloot vĂ€lja peaaegu nagu Spordimaailma sait, ja tooted on meil samad. Maius!

Lisame meie osakonnajuhataja „Krasnorechije:100“ ja esitlus Ă€ri jaoks lĂ€heb suurepĂ€raselt! Meile antakse vabad kĂ€ed eCommerce platvormi ise vĂ€ljatöötamiseks.

Ja see tÀhendab, et hoidke, poisid, head meeskonda ja hoidke, poisid, eelarvet. Ikka niksi-naks!

2 aastat. Veebilehe vĂ€ljalaskmine. Jah, see vĂ”ttis aega. KĂ”ik, mida me toona oskasime, proovisime ainult prototĂŒĂŒbi mastaabis. Kaks inimest suudavad kergesti moodustada tĂ”husa meeskonna. Ja ĂŒlesanded, mida me 'lahendasime', olid tĂ”epoolest vĂ€ikesed tĂ€iendused 'Hello World' uutes tehnoloogiates. Me genereerisime kergesti uusi hĂŒpoteese, testisime neid kiiresti, ei jĂ”udnud harjuda ning seetĂ”ttu 'tapetasin' neid kahetsuseta. Kui meid oli juba 10 inimest, ekstrapoleerisime meie töös kiirus kĂ”ikide teiste peale. Ja lubasime jĂ€rgmiste ĂŒlesannete tĂ€htaegadeks tingimisi, mis olid vĂ”rdsed ilusa ettekujutusega, korrutatud meie entusiasmiga.

Kas tuttav olukord? 🙂

Noh, kas te juba teate, mis edasi saab?

KĂŒnga №1. „Ekstrapoleerija-Ă€gedus“

On selge, et uued tehnoloogiad nĂ€evad esitluses vĂ€ga Ă€gedad vĂ€lja ja töötavad suurepĂ€raselt rakendustes tĂŒĂŒbil 'Hello World'. Kuid reaalsus on tavaliselt veidi kaugemal sellest.

Nii, vĂ”tame raamatukogu, kirjutame hulga rakenduskoodi. Üksustestid peavad meil tĂ”eliselt koormavaks (me oleme ju lahedad ja töötame superkiirusel, kood on kaasaegne ja kĂ”ik muu). Muudame ja tĂ€iendame API-d pidevalt - tĂ”siselt, millised testid siin. Ja kĂ”ik see „suurepĂ€raselt optimeeritud arendusprotsessiga“ (jah, praegu on seda isegi kohutav kirjeldada).

Edasi lĂ€heb kĂ”ik ĂŒsna ilmselgeks.

Toome uue build'i uat-ile. Äritehnika inimesed lĂ€hevad kiiresti seda testima ja nuputavad nuppu. Nad nuputavad vahel ĂŒsna loovalt — midagi kukub vĂ€lja. Siin oleks aeg minna ja teada saada, mis selleks tehtud on. Kuid monitori taga ei ole ei-heakskiidetud tester, kes annab sulle kĂ”ik keskkonna omadused arvesse vĂ”ttes ilmateadet, vaid tellija Ă€ris. Tal on lihtsalt "ei tööta". Ja see tĂ€hendab, et ta on rahulolematu. KĂŒsi temalt — ja ta on karm rahulolematu!

Retrospetiiv ristteedest. Kuidas isetehtud lahendus osutus kallimast paremini töötavaks

Sel juhul, et vea reprodutseerida, tuleb minna ja kĂ”ik kĂ€sitsi ĂŒle proovida. Loomulikult ei jĂ€tnud me ĂŒkski kaebus tĂ€helepanuta ja kĂ”ik fikseerisime. JĂ€tame planeeritud ĂŒlesanded kĂ”rvale, kuid "tulekahju kustutame".

Nii kaevasime endale jÀrgmise augu.

LÔks nr 2. "Stahanovets"

Saabus sulle mitte kĂ”ige meeldivam vead. Alustad uurimist. Ei Ă”nnestu — vihakshwa — pĂŒĂŒad uuesti aru saada — jĂ€rjekordne ebaĂ”nnestumine — tĂ€psustad kĂ”ike, mis vĂ”imalik — jĂ€lle vale — mĂ”tled sellele, et oled juba vana ja kĂ”igil on lapsed ja hĂŒpoteek — proovid uuesti — jĂ€lle vale. MĂ”ned tassid kohvi ja kĂ”ik kordub. 12–14 tundi jutustööd jĂ€rjest — peaaegu nagu norm. Ja siis, kui kĂ”ik on juba piiril — ops, selgus!

Retrospetiiv ristteedest. Kuidas isetehtud lahendus osutus kallimast paremini töötavaks

VÔib-olla, eemalt vaadates, on selle pÀeva efektiivsuse hindamine selge ja Ôige. Seestpoolt aga vÔib see olla erinev.

Minu puhul mĂ”jutas selline töö mulje, et «ma olen Ă€ge, ma suudan, ma lahendasin» . Mitte alati teadvuslikult, aga alateadlikult — alati!

Ja sellele jÀÀdki sĂ”ltuvusse, tĂ”siselt. Tundub, et sisemised edusamme mÔÔtmise kriteeriumid nihkuvad tulemuse pealt pingutuste arvu ja selle kĂ”rguse peale, kui palju kangelastegusid oled sooritanud, kuidas palju oled kannatanud, pĂŒĂŒdes ĂŒlesannet lahendada.

TÔenÀoliselt on see kÔige kohutavam lÔks.

Edasi lĂ€heb kergem ja lĂ”busam 🙂

LÔks nr 3. «Hello world'i jÔud»

Meie tol ajal kasutatav tehnoloogiate virn: ElasticSearch, Hazelcast, Pentaho, freemarker (ning tĂ”estatud Java, Spring, Tomcat, nginx). Freemarker ei andnud vigade kohta kuigi informatiivseid teadet. ElasticSearchi, Hazelcasti ja Pentaho puhul tuli teha mitmeid plaastrit — me leidisime andekalt juhtumeid, kus need ei töötanud nii, nagu dokumentatsioon ette nĂ€gi.

Kerge algus ja kiire edufaktori tunne uue tehnoloogia kasutamisest on hea, kuid need loovad eufooria ja vÀhendavad ettevaatlikkust. Sest uus tehnoloogia sisaldab vigu, kindlasti sisaldab. Ja kui nende kohta pole veel kirjutatud, siis rÔÔmusta: just sina pead olema see teerajaja, kes kindlasti leiab midagi viltu ja hakkab google'ima vÔi otsib vÀlja Stack Overflow's. Loomulikult vÔib 'viltu' leida ka tÔestatud toodetest, kuid uutes on see palju lihtsam.

Retrospetiiv ristteedest. Kuidas isetehtud lahendus osutus kallimast paremini töötavaks

Oma kĂ”ikidest raskustest hoolimata jĂ”udsime tootmisse. Jah, viivitustega. Jah, mitte kuigi stabiilselt. Kuid kokkuvĂ”ttes — ilma katastroofideta.

KokkuvÔtteks toon veel kord vÀlja lÔksud, kus moonutatakse tervet arusaama tööprotsessist.

  1. «Ekstrapolaator-kaukas». KÀesoleva edusamme muljet avaldavad, lÀheme edasi ja rÔÔmsalt ekstrapoleerime arenduskiirusest tulevasi projekte.
  2. «Stahanovets». Teeme tööd ÀÀrmuseni, oleme rahul iseendaga, kuid ei mÀrka, et lahendatavad probleemid on meie isiklike vigade / puudujÀÀkide / hooletuse tagajÀrg. Töö, mida tuleks teha.
  3. «Hello world» jÔud. Kiirustame, et rakendada tootmisse kÔik uus ja huvitav.

Miks see kÔik Ônnestus

Muidugi, ma loetlesin mitte kĂ”ik meie ajaga kaasnenud vead, vaid kĂ”ige ĂŒldisemad, mis on tĂ”enĂ€olised mistahes spetsiifika projektide jaoks. Selline vigade fikseerimine aitab neid tulevikus vĂ€ltida.

Veidi sellest, kuidas meil lĂ”ppes sellise ministartupi loomine ettevĂ”tte sees ja kuidas veenda Ă€ri loobuma juba ostetud sĂŒsteemist millegi enda kirjutatud kasuks.

Tingimus nr 0. Tervislik kliima ettevĂ”ttes. See ei ole ainult töötajate "pĂ”levad silmad" ja suhtlemine stressirohketes kĂŒpsiste omamise tingimustes, ei. See puudutab kĂ”iki suhtlemisi.

Tingimus nr 1. Usalda seda, mida teed. TĂ”siselt, ma ei arva, et meil oleks mingit vĂ”imalust, kui oleksime pilotiga tegelenud, mitte ostetud sĂŒsteemi "kuni kruvini" lahti vĂ”tnud - see tĂ€hendab, kĂ”rvale astudes ja alateadlikult teades, et see sĂŒsteem on paremini ja alistab meid.

Mida me tegime: 1) mĂ”istsime ostetud sĂŒsteemi, millega lahendasime pĂ”hikĂŒsimused Ă€ri suunalt 2) koostasime ĂŒlesannete nimekirja, mis ei hĂ”lma mitte ainult praeguseid, vaid ka tulevikus esinevaid 3) valisime lahenduse, mis sobis kĂ”ige paremini. Seega, meie lahenduse hindamine — see oli ekspertide hindamine.

Kas nad oleksid meile midagi andnud, kui me lihtsalt oleksime tulnud ja öelnud, et 'mehed, kĂ”ik on jama, ei taha sellega tegeleda ja otsustasime kĂ”ike nullist alustada'? Vaevalt. Vastus oleks tulnud sellisel kujul, et see jÀÀb hĂ€sti meelde 🙂

Tingimus №2. Teeme esimese sammu vĂ€ikese. Genereerime esimese hĂŒpoteesi ja kontrollime. Selleks vĂ”ib kulutada ka oma isiklikku aega. Kui ei taha oma aega raisata — siis ei tasu sellise asja kallale hakata. Ja kui ei taha kontrollida vĂ€ikest hĂŒpoteesi, vaid tahaks kohe midagi Ă€gedat ja silmapaistvat teha — hoidke sellistest inimestest eemale!

Meil vedas ja kĂ”ik lĂ€ks plaanipĂ€raselt - see oli meie esimene hĂŒpotees. Kuid nii juhtub mitte alati. NĂ€iteks ĂŒhes jĂ€rgnevates projektides, kui edendasime adminpaneeli sarnases pilootprojektis, töötas meil vaid kaheteistkĂŒmnes variant. Esimese 17 lĂ€henemist andsid tulemuseks ainult tĂŒhje katseid. Muide, adminpaneeli loomise ajalugu oli nagu brasiilialik sotsiaalne seiklus, sest meeskonda kuulusid kutid, kes olid juba veteranid, tĂ”elised „kogenud tegelased”.

Olenemine nr 3. Loome MVP ja uurime otsustaja probleeme. Loomulikult vĂ”ib tema nĂ€os peegelduv Ă”udus juba tekida lihtsalt sellepĂ€rast, et toote kĂ”igi probleemide lahendus on kahekĂŒmnes kord tema ette toodud. Kuid ikkagi, ja kindlasti nĂ€itame, kuidas just meie toode tema probleeme lahendab.

Olenemine nr 4. Kiirelt teeme kĂŒlma pilooti, mis nĂ€eb vĂ€lja umbes nagu lĂ”pptulemus. KĂ”ike tĂ€iuslikult teha on ahvatlev, kuid vĂ”ite sattuda perfektsionismi lĂ”ksu, mis tĂ€hendab, et tahate nĂ€idata pilootversioonis juba ideaalse toote. Kuid selliseid pole olemas. SeetĂ”ttu tehke vĂ€hemalt paluks hargnevate kĂ€epidemetega.

Olenemine nr 5. Toot. Projekt kasvab, saab rahastust ja spetsialistid, kellel on korralik kogemus, tulevad kohale.
Ja kui sa oled klassikaline startup-ettevÔtja, siis on see see hetk, mil on aeg kiirusel tagasi minna. Sest kerge lendamine kÔrgel ja generaliseeritud heaolu tunne kaovad kiiresti.

Tootekeskkonda pÀÀsemine on kokkupuude tĂ”eliste koormustega, integreerimine kĂŒmnete sĂŒsteemidega, ja kui sa lood uut funktsionaalsust, pead samal ajal vanade versioonide hooldamise kĂ€igus neid tĂ€iendama. KĂ”ik see on vĂ€ljakutsed, mis on tunduvalt tĂ”sisemad kui idee vĂ€lja mĂ”tlemine ja isegi ĂŒhe kliendi probleemi lahendamine.

Need on vÀljakutsed ja oskuste kasv - toimub just sellel etapil.

AitÀh, et lugesite. Head uut koodi!

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster