Sveiki! Mani sauc Pasha Chernyak, es esmu vadoÅ”ais QIWI izstrÄdÄtÄjs, un Å”odien es vÄlos runÄt par neizbÄgamo. Par Legacy.
SÄksim ar jautÄjumu: kas ir Legacy pakalpojums? Vai mantotais pakalpojums ir pakalpojums, ko izstrÄdÄtÄjs nav izmantojis nedÄļu/mÄnesi/gadu? Vai arÄ« tas ir serviss, kuru rakstÄ«jis mazÄk pieredzÄjis programmÄtÄjs, piemÄram, jÅ«s speciÄli, bet pirms gada? Un tagad jÅ«s esat forÅ”Äks un pieredzÄjuÅ”Äks. Vai arÄ« Legacy pakalpojums ir pakalpojums, kuru esat nolÄmis nekad vairs neizmantot un lÄnÄm gatavojat tam aizstÄjÄju? JebkurÄ gadÄ«jumÄ Å”Äda servisa atstÄÅ”ana bez uzraudzÄ«bas un neatjauninÄÅ”ana ir bumba ar laika degli, kas vÄlÄk var uzsprÄgt.
Pirms pÄriet uz to, kÄ mÄs QIWI strÄdÄjam ar mÅ«su mantotajiem pakalpojumiem, es jums pastÄstÄ«Å”u, kÄ mÄs veicÄm pakalpojumu kÄrtÄ«bu makÄ. Jau divus gadus esmu atbildÄ«gs par tÄ darbÄ«bu. Ja ir kÄda problÄma, viÅi vienmÄr man piezvana pirmajam. Man parasti nav nervu zvanÄ«t kÄdam citam pulksten 11:XNUMX, tÄpÄc man nÄcÄs apsÄsties un izdomÄt visus pakalpojumus mÅ«su domÄnÄ.
Bet man, tÄpat kÄ jebkuram cilvÄkam, patÄ«k naktÄ«s gulÄt, tÄpÄc es mÄÄ£inÄju tikt galÄ ar ekspluatÄciju: "PuiÅ”i, kÄpÄc jÅ«s man zvanÄt?" Uz ko saÅÄmu diezgan lakonisku atbildi, piemÄram, "KurÅ” vÄl?" Jo es laboju pakalpojumus, un puiÅ”i vienkÄrÅ”i nezina, kam zvanÄ«t.
TÄpÄc vienÄ no Wallet aizmugursistÄmas komandas retrospekcijÄm nolÄmÄm, ka mums ir jÄizveido zÄ«me ar mÅ«su pakalpojumu, mikropakalpojumu un maku monolÄ«tu un par tiem atbildÄ«go sarakstu. ZÄ«mes parasti ir noderÄ«gas saprÄtÄ«gÄs robežÄs.
Papildus informÄcijai par to, kurÅ” par ko ir atbildÄ«gs, tika sniegtas atbildes uz jautÄjumiem: kurÅ” ir pakalpojuma Ä«paÅ”nieks, kurÅ” atbild par tÄ attÄ«stÄ«bu, arhitektÅ«ru un dzÄ«ves ciklu. Par Å”o pakalpojumu ir atbildÄ«gi cilvÄki, kas var to salabot, ja kaut kas notiek. Pakalpojuma Ä«paÅ”niekam ir tiesÄ«bas atstÄt +2 saistÄ«bÄs, arÄ« atbildÄ«gajiem jÄbÅ«t klÄt pÄrskatÄ«Å”anÄ, pirms Å”is pakalpojums pieÅem jaunu apÅemÅ”anos.
Laikam ejot, sÄka pielietot jaunus paÅÄmienus, piemÄram, migrÄcija uz Kubernetes, visa veida checkstyle, spotbugs, ktlint, žurnÄlu klÄtbÅ«tne KibanÄ, automÄtiskÄs atklÄÅ”anas pakalpojumi, nevis tieÅ”as adreses norÄdÄ«Å”ana un citas noderÄ«gas lietas. Un visur, kur mÅ«su galds ļÄva mums saglabÄt mÅ«su pakalpojumu atbilstÄ«bu. Mums Å”is ir sava veida kontrolsaraksts, kurÄ teikts, ka Å”is pakalpojums to var izdarÄ«t, bet vÄl ne. TaÄu mÄs devÄmies tÄlÄk, saprotot, ka mums trÅ«kst informÄcijas par mÅ«su pakalpojumiem, kurus uzraugÄm, kur atrodas pakalpojumu avoti, kur TeamCity tiek uzsÄkti montÄžas uzdevumi, kÄ tie tiek izvietoti, kur tiek glabÄti end2end testu avoti, fotogrÄfijas no kopÅ”anas sesijÄm par arhitektÅ«ru, par pieÅemtajiem lÄmumiem. IdeÄlÄ gadÄ«jumÄ es gribÄju, lai visa Ŕī informÄcija kaut kur atrodas un bÅ«tu pie rokas, kad tas ir nepiecieÅ”ams. TÄpÄc mÅ«su zÄ«me kļuva par sÄkumpunktu informÄcijas meklÄÅ”anai.
Bet QIWI, lai arÄ« saglabÄ starta garu, ir liels uzÅÄmums. Mums jau ir 12 gadi, un komandas mainÄs: cilvÄki aiziet, cilvÄki nÄk, veidojas jaunas komandas. Un mÄs savÄ domÄnÄ atklÄjÄm vairÄkus pakalpojumus, kurus esam mantojuÅ”i. Dažas nÄca no izstrÄdÄtÄjiem no citÄm komandÄm, dažas vienkÄrÅ”i kaut kÄdÄ veidÄ ir saistÄ«tas ar maku, tÄpÄc pakalpojums tagad ir mÅ«su bilancÄ. Saprast, kas un kÄ tas darbojas ā kÄpÄc? Pakalpojums darbojas, un mums ir produkta funkcijas, kuras noteikti ir jÄuzlabo.
KÄ tas notiek
TaÄu kÄdÄ brÄ«dÄ« atklÄjam, ka serviss pÄrstÄj pildÄ«t savu funkciju, kaut kas ir salÅ«zis ā ko darÄ«t Å”ÄdÄ situÄcijÄ? Pakalpojums vienkÄrÅ”i pÄrstÄja darboties. Pavisam. Un mÄs par to uzzinÄjÄm, pirmkÄrt, nejauÅ”i, otrkÄrt, seÅ”us mÄneÅ”us vÄlÄk. Tas notiek. VienÄ«gais, ko mÄs zinÄjÄm, bija tas, kurÄs virtuÄlajÄs maŔīnÄs pakalpojums tiks izvietots, kur atrodas tÄ avoti, un tas arÄ« viss. MÄs veicam git klonu un iedziļinÄmies tÄ cilvÄka prÄtÄ, kurÅ” to rakstÄ«ja pirms dažiem gadiem, bet ko mÄs redzam? Neviens no mums pazÄ«stamajiem Spring Boot, lai gan esam pieraduÅ”i pie visa, mums ir pilna steka un viss. VarbÅ«t tur ir Pavasara ietvars? Bet nÄ.
Puisis, kurÅ” to visu rakstÄ«ja, bija grÅ«ts un visu rakstÄ«ja tÄ«rÄ Java valodÄ. IzstrÄdÄtÄjam nav ierastu rÄ«ku, un rodas doma - mums tas viss ir jÄpÄrraksta. Mums ir mikropakalpojumi, un no katra tostera nÄk parastais "PuiÅ”i, mikropakalpojumi ir tas, kas jums nepiecieÅ”ams!" Ja pÄkÅ”Åi kaut kas noiet greizi, varat mierÄ«gi pieÅemt jebkuru valodu un viss bÅ«s kÄrtÄ«bÄ.
Lieta tÄda, ka tagad mums nav klienta, kurÅ” bÅ«tu atbildÄ«gs par Å”o pakalpojumu. KÄdas biznesa prasÄ«bas viÅam bija, ko Å”im dienestam vajadzÄtu darÄ«t? Un pakalpojums ir cieÅ”i integrÄts jÅ«su biznesa procesos.
Tagad pastÄstiet man, cik viegli ir pÄrrakstÄ«t pakalpojumu, nezinot tÄ biznesa prasÄ«bas? Nav skaidrs, kÄ pakalpojums tiek reÄ£istrÄts; nav zinÄms, vai ir metrika. Kas tie ir, ja tÄdi ir, vÄl jo vairÄk nav zinÄms. Un tajÄ paÅ”Ä laikÄ pakalpojums satur milzÄ«gu skaitu nesaprotamas biznesa loÄ£ikas klaÅ”u. Kaut kas ir iekļauts kaut kÄdÄ datu bÄzÄ, par kuru mÄs arÄ« vÄl neko nezinÄm.
Kur sÄkt?
No loÄ£iskÄkÄ punkta - testu pieejamÄ«ba. Tur parasti ir vismaz kaut kÄda loÄ£ika ierakstÄ«ta un var izdarÄ«t secinÄjumus par notiekoÅ”o. Tagad TDD ir modÄ, bet mÄs redzam, ka pirms 5 gadiem viss bija gandrÄ«z tÄpat kÄ tagad: gandrÄ«z nav vienÄ«bu testu, un tie mums vispÄr neko neteiks. Nu, izÅemot varbÅ«t kaut kÄdu pÄrbaudi, kÄ kÄds xml ir parakstÄ«ts ar kÄdu pielÄgotu sertifikÄtu.
MÄs neko nevarÄjÄm saprast no koda, tÄpÄc devÄmies redzÄt, kas atrodas virtuÄlajÄ maŔīnÄ. AtvÄrÄm servisa žurnÄlus un tajos atradÄm http klienta kļūdu; lietojumprogrammas resursos iegultais paÅ”parakstÄ«tais sertifikÄts bija nekaunÄ«gi sapuvis. MÄs sazinÄjÄmies ar saviem analÄ«tiÄ·iem, viÅi lÅ«dza jaunu sertifikÄtu, viÅi mums to izsniedza, un pakalpojums atkal darbojas. Å Ä·iet, ka tas arÄ« viss. Vai nÄ? Galu galÄ serviss strÄdÄ, tas veic kÄdu funkciju, kas ir nepiecieÅ”ama mÅ«su biznesam. Mums ir noteikti lietojumprogrammu izstrÄdes standarti, kas, visticamÄk, ir arÄ« jums. PiemÄram, neglabÄjiet žurnÄlus mezglÄ mapÄ, bet glabÄjiet tos kaut kÄdÄ krÄtuvÄ, piemÄram, elastÄ«gajÄ, un apskatiet tos KibanÄ. Varat arÄ« atcerÄties zelta metriku. Tas ir, pakalpojuma slodze, pakalpojuma pieprasÄ«jumu skaits neatkarÄ«gi no tÄ, vai viÅÅ” ir dzÄ«vs vai nÄ, kÄ notiek viÅa HealthCheck. Vismaz Å”ie rÄdÄ«tÄji palÄ«dzÄs jums uzzinÄt, kad to var pÄrtraukt ar tÄ«ru sirdsapziÅu un aizmirst kÄ sliktu sapni.
Ko darīt
TÄpÄc tabulai pievienojam tik vecu servisu, un tad ejam meklÄt brÄ«vprÄtÄ«gos no izstrÄdÄtÄju vidus, kas parÅ«pÄsies par pakalpojumu un sakÄrtos to: uzrakstÄ«s vismaz kÄdu informÄciju par pakalpojumu, pievienos saites uz informÄcijas paneļi programmÄ grafana, lai veiktu montÄžas uzdevumus un saprastu, kÄ izvietot lietojumprogrammu, neaugÅ”upielÄdÄjiet failus manuÄli, izmantojot ftp.
Galvenais, cik ilgi visa Ŕī noderÄ«gÄ brÄ«vprÄtÄ«gÄ darbÄ«ba prasÄ«s? Viens sprints vairÄk vai mazÄk pieredzÄjuÅ”am izstrÄdÄtÄjam, piemÄram, 20% tehniskÄ parÄda laikÄ. Cik ilgs laiks bija vajadzÄ«gs, lai izprastu visu iesakÅojuÅ”os loÄ£iku saziÅai ar noteiktu valsts iekÄrtu un ieviestu to jaunÄkÄs tehnoloÄ£ijÄs? Es nevaru par to galvot, varbÅ«t mÄnesi vai varbÅ«t divus no komandas darba. Es to saku no pieredzes saistÄ«bÄ ar paÅ”reizÄjo integrÄciju ar kÄdu jaunu pakalpojumu.
TajÄ paÅ”Ä laikÄ netiek atbrÄ«vota biznesa vÄrtÄ«ba. Pavisam. Ir normÄli nolÄ«gt pakalpojumu atbalsta sniegÅ”anai un veltÄ«t tam nedaudz laika. Bet pÄc mÅ«su standarta dejÄm ar servisu mÄs to pievienojÄm tabulai, pievienojÄm informÄciju par to un, iespÄjams, kÄdreiz to pÄrrakstÄ«sim. Bet tagad tas atbilst mÅ«su pakalpojumu standartiem.
RezultÄtÄ es vÄlÄtos izstrÄdÄt plÄnu, ko darÄ«t ar Legacy pakalpojumiem.
Mantojuma pÄrrakstÄ«Å”ana no nulles ir slikta ideja
Nopietni, jums pat nav par to jÄdomÄ. Ir skaidrs, ka man tas patiktu, un ir dažas priekÅ”rocÄ«bas, bet parasti tas nevienam nav vajadzÄ«gs, ieskaitot sevi.
Katalogs
Izrakstiet savu lietojumprogrammu pirmkodus, izveidojiet uzziÅu grÄmatu, kurÄ bÅ«s norÄdÄ«ts, kas ir kur un kÄ tas darbojas, ievadiet tur projekta aprakstu (conditional readme.md), lai Ätri saprastu, kur atrodas žurnÄli un metrika. IzstrÄdÄtÄjs, kurÅ” ar to nodarbosies pÄc tam, kad jÅ«s pateiks tikai paldies.
Izprotiet domÄnu
Ja jums pieder domÄns, mÄÄ£iniet sekot lÄ«dzi. JÄ, tas izklausÄs triviÄli, taÄu ne visi pÄrliecinÄs, ka pakalpojumi ir vienÄ taustiÅÄ. Bet strÄdÄt vienÄ standartÄ patiesÄ«bÄ ir ievÄrojami vieglÄk.
AptaujÄ var piedalÄ«ties tikai reÄ£istrÄti lietotÄji.
Ko jÅ«s darÄt ar savu mantojumu?
-
31.5%Es pÄrrakstu no nulles, pareizÄk ir 12
-
52.6%GandrÄ«z tÄds pats kÄ tu20
-
10.5%Mums nav mantojuma, mÄs esam lieliski4
-
5.2%Es rakstÄ«Å”u komentÄros2
Nobalsoja 38 lietotÄji. 20 lietotÄji atturÄjÄs.
Avots: www.habr.com