Mantotie pakalpojumi jūsu infrastruktūrā

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.

Mantotie pakalpojumi jūsu infrastruktūrā

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. Ielogoties, lūdzu.

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

Pievieno komentāru