Eldri þjónusta í innviðum þínum

Halló! Ég heiti Pasha Chernyak, ég er leiðandi þróunaraðili hjá QIWI og í dag vil ég tala um hið óumflýjanlega. Um Legacy.

Við skulum byrja á spurningunni: hvað er Legacy þjónusta? Er eldri þjónusta þjónusta sem verktaki hefur ekki snert í viku/mánuð/ár? Eða er það þjónusta sem var skrifuð af minna reyndum forritara, til dæmis af þér sérstaklega, en fyrir ári síðan? Og nú ertu svalari og reyndari. Eða er Legacy þjónustan þjónusta sem þú hefur ákveðið að skuldbinda þig aldrei aftur og ert hægt og rólega að undirbúa skipti fyrir hana? Hvað sem því líður er það tímasprengja að skilja eftir slíka þjónustu eftirlitslausa og ekki uppfæra.

Eldri þjónusta í innviðum þínum

Áður en við höldum áfram að því hvernig við hjá QIWI vinnum með Legacy þjónustuna okkar mun ég segja þér hvernig við komum reglu á þjónustuna í veskinu. Í tvö ár hef ég nú borið ábyrgð á frammistöðu þess. Ef það er einhver vandamál hringja þeir alltaf í mig fyrst. Ég hef yfirleitt ekki taugar til að hringja í einhvern annan klukkan 11, svo ég þurfti að setjast niður og finna út alla þjónustuna á léninu okkar.

En mér, eins og hverri manneskju, finnst gaman að sofa á nóttunni, svo ég reyndi að takast á við misnotkunina: „Krakkar, af hverju ertu að hringja í mig? Við sem ég fékk frekar lélegt svar eins og "Hver annar?" Vegna þess að ég laga þjónustu og strákarnir vita einfaldlega ekki í hvern þeir eiga að hringja.

Þess vegna ákváðum við, á einni af yfirlitssýningum Wallet bakenda teymisins, að við þyrftum að búa til skilti með lista yfir þjónustu okkar, örþjónustur og veskiseiningar og þá sem bera ábyrgð á þeim. Skilti eru almennt gagnleg, innan skynsamlegra marka.

Auk upplýsinga um hver ber ábyrgð á hverju voru svör við spurningunum: hver er eigandi þjónustunnar, hver ber ábyrgð á þróun hennar, byggingarlist og líftíma. Þeir sem bera ábyrgð á þessari þjónustu eru þeir sem geta lagað hana ef eitthvað kemur upp á. Eigandi þjónustunnar hefur rétt á að skilja eftir +2 í skuldbindingum, þeir sem bera ábyrgð verða einnig að vera viðstaddir endurskoðun áður en þessi þjónusta samþykkir nýja skuldbindingu.

Eftir því sem tíminn leið fór að beita nýjum starfsháttum, til dæmis, flutningur til Kubernetes, alls kyns checkstyle, spotbugs, ktlint, tilvist logs í Kibana, sjálfvirk uppgötvunarþjónusta í stað þess að tilgreina beint heimilisföng og annað gagnlegt. Og alls staðar gerði borðið okkur kleift að viðhalda mikilvægi þjónustu okkar. Fyrir okkur er þetta eins konar gátlisti sem segir að þessi þjónusta geti gert þetta, en hún gerir það ekki ennþá, en við komumst að því að okkur skortir upplýsingar um þjónustu okkar, sem við fylgjumst með, hvar þjónustuveiturnar eru staðsettar. þar sem samsetningarverkefni eru sett af stað í TeamCity, hvernig þeim er dreift, hvar uppsprettur end2end prófa eru geymdar, myndir frá snyrtitímum um arkitektúrinn, um ákvarðanir sem teknar eru. Helst vildi ég að allar þessar upplýsingar lægju einhvers staðar og væru við höndina þegar þörf krefur. Þess vegna varð skiltið okkar upphafspunktur upplýsingaleitar.

En QIWI, þó að það haldi anda sprotafyrirtækis, er stórt fyrirtæki. Við erum nú þegar 12 ára og liðin eru að breytast: fólk fer, fólk kemur, ný lið eru stofnuð. Og við uppgötvuðum nokkrar þjónustur á léninu okkar sem við erfðum. Sumir komu frá hönnuðum frá öðrum teymum, sumir einfaldlega tengdir veskinu á einhvern óbeinan hátt, þannig að við höfum núna þjónustuna á efnahagsreikningi okkar. Að skilja hvað og hvernig það virkar - hvers vegna? Þjónustan virkar og við erum með vörueiginleika sem þarf sannarlega að bæta.

Hvernig það gerist

En á einhverjum tímapunkti uppgötvum við að þjónustan hættir að sinna hlutverki sínu, eitthvað er bilað - hvað á að gera í slíkum aðstæðum? Þjónustan hætti einfaldlega að virka. Alls. Og við komumst að þessu, í fyrsta lagi fyrir tilviljun og í öðru lagi sex mánuðum síðar. Það gerist. Það eina sem við vissum var á hvaða sýndarvélum þjónustan yrði notuð, hvar upptök hennar voru staðsett, og það er allt. Við gerum git klón og kafum inn í huga þess sem skrifaði þetta fyrir nokkrum árum, en hvað sjáum við? Ekkert af Spring Boot sem er okkur kunnuglegt, þó við séum vön öllu, erum við með fullan stafla og allt það. Kannski er Spring Framework þarna? En nei.

Gaurinn sem skrifaði þetta allt var harður og skrifaði allt á hreinu Java. Það eru engin venjuleg verkfæri fyrir þróunaraðila og hugmynd vaknar: við þurfum að endurskrifa þetta allt. Við erum með örþjónustur og frá hverri brauðrist kemur hið venjulega „krakkar, örþjónusta er það sem þú þarft!“ Ef skyndilega eitthvað fer úrskeiðis geturðu tekið hvaða tungumál sem er í rólegheitum og allt verður í lagi.

Málið er að núna erum við ekki með viðskiptavin sem ber ábyrgð á þessari þjónustu. Hvaða viðskiptakröfur hafði hann, hvað ætti þessi þjónusta að gera? Og þjónustan er nátengd viðskiptaferlum þínum.

Segðu mér nú, hversu auðvelt er að endurskrifa þjónustu án þess að vita viðskiptakröfur hennar? Ekki er ljóst hvernig þjónustan er skráð hvort það eru mæligildi er óþekkt. Hver þau eru, ef einhver eru, er þeim mun óþekkt. Og á sama tíma inniheldur þjónustan gríðarlegan fjölda flokka af óskiljanlegum viðskiptarökfræði. Eitthvað er innifalið í einhvers konar gagnagrunni, sem við vitum heldur ekki neitt um ennþá.

Með hvað á að byrja?

Frá rökréttasta punkti - framboð á prófum. Það er yfirleitt að minnsta kosti einhver rökfræði skrifuð þarna og þú getur dregið ályktanir um hvað er að gerast. Nú er TDD í tísku, en við sjáum að fyrir 5 árum var allt næstum eins og það er núna: það eru nánast engin einingapróf og þau segja okkur alls ekki neitt. Jæja, nema kannski einhvers konar sannprófun, hvernig eitthvað xml er undirritað með einhverju sérsniðnu vottorði.

Við gátum ekki skilið neitt af kóðanum, svo við fórum að sjá hvað var í sýndarvélinni. Við opnuðum þjónustuskrána og fundum http-biðlaravillu í þeim. Við höfðum samband við greiningaraðila okkar, þeir báðu um nýtt vottorð, þeir gáfu okkur það út og þjónustan er að virka aftur. Það virðist sem það sé allt. Eða ekki? Þegar öllu er á botninn hvolft virkar þjónustan, hún sinnir einhverjum aðgerðum sem fyrirtækið okkar þarfnast. Við höfum ákveðna staðla fyrir þróun forrita, sem þú hefur líklegast líka. Til dæmis, geymdu ekki logs á hnútnum í möppu, heldur geymdu þá í einhvers konar geymslu, eins og teygju, og skoðaðu þá í Kibana. Þú getur líka muna gullnu mælikvarðana. Það er, álagið á þjónustuna, fjölda beiðna um þjónustuna, hvort hann er á lífi eða ekki, hvernig HealthCheck hans gengur. Að minnsta kosti munu þessar mælingar hjálpa þér að vita hvenær hægt er að taka það úr notkun með góðri samvisku og gleyma því eins og vondum draumi.

Hvað á að gera

Þess vegna bætum við svo gamalli þjónustu við borðið og förum svo að leita að sjálfboðaliðum úr hópi þróunaraðila sem sjá um þjónustuna og koma henni í lag: þeir skrifa að minnsta kosti einhverjar upplýsingar um þjónustuna, bæta við tenglum á mælaborð í grafana, til að setja saman verkefni og skilja hvernig Dreifa forritinu, ekki hlaða upp skrám handvirkt með ftp.

Aðalatriðið er hversu langan tíma mun allt þetta gagnlega sjálfboðaliðastarf taka? Einn sprett fyrir meira eða minna reyndan þróunaraðila, til dæmis á meðan 20% tækniskuld stendur. Hversu langan tíma tók það að skilja alla þá rótgrónu rökfræði sem felst í samskiptum við ákveðið ríkiskerfi og koma því yfir í nýrri tækni? Ég get ekki ábyrgst þetta, kannski einn mánuð eða kannski tvo af vinnu liðsins. Ég segi þetta af reynslu af núverandi samþættingu við einhverja nýja þjónustu.

Á sama tíma er engin losun á viðskiptavirði. Alls. Það er eðlilegt að ráða þjónustu til stuðnings og eyða smá tíma í hana. En eftir staðlaða dansana okkar við þjónustuna bættum við henni við borðið, bættum við upplýsingum um hana og munum ef til vill endurskrifa hana einhvern tíma. En nú uppfyllir það þjónustustaðla okkar.

Þar af leiðandi langar mig að koma með áætlun um hvað á að gera við Legacy þjónustu.

Að endurskrifa arfleifð frá grunni er slæm hugmynd
Í alvöru, þú þarft ekki einu sinni að hugsa um það. Það er ljóst að ég myndi vilja það, og það eru nokkrir kostir, en venjulega þarf enginn þess, þar á meðal þú sjálfur.

Handbók
Grafa út frumkóða forritanna þinna, búa til uppflettibók sem gefur til kynna hvar og hvernig það virkar, sláðu inn lýsingu á verkefninu þar (skilyrt readme.md) til að skilja fljótt hvar annálarnir og mælikvarðar eru staðsettir. Verktaki sem mun takast á við þetta eftir þig mun aðeins segja takk.

Skildu lénið
Ef þú átt lén skaltu reyna að hafa puttann á púlsinum. Það hljómar léttvægt, já, en ekki allir ganga úr skugga um að þjónustan sé í einum lykli. En að vinna í einum staðli er í raun verulega auðveldara.

Aðeins skráðir notendur geta tekið þátt í könnuninni. Skráðu þig inn, takk.

Hvað gerir þú við arfleifð þína?

  • 31.5%Ég er að endurskrifa frá grunni, það er réttara 12

  • 52.6%Næstum það sama og þú20

  • 10.5%Við höfum ekki arfleifð, við erum frábærir4

  • 5.2%Ég mun skrifa í athugasemdir2

38 notendur kusu. 20 notendur sátu hjá.

Heimild: www.habr.com

Bæta við athugasemd