Kuidas lugeda ja parandada 100 000 rida koodi nÀdalaga

Kuidas lugeda ja parandada 100 000 rida koodi nÀdalaga
Algselt on alati raske mĂ”ista suurt ja vana projekti. Arhitektuuri hindamine on ĂŒks arhitekti tegevustest. Tavaliselt tuleb töötada suurte, vanade projektidega ning tulemused tuleb esitada nĂ€dalaga.

Kuidas hinnata 100 000 ja rohkem rida koodi nÀdalaga, pakkudes samas klientidele tÔeliselt kasulikke tulemusi.

Enamik arhitekte ja tehnilisi juhte on kokku puutunud sarnaste projekti hindamistega. See vÔib tunduda poolformaalse protsessina vÔi eraldi teenusena, nagu meie firmas, aga nii vÔi teisiti on enamik teist sellega kokku puutunud.

Originaal inglise keeles teie mitte venekeelsetele sÔpradele on siin: Architecture Assessment in a week.

Meie ettevÔtte lÀhenemine

Ma rÀÀgin teiega, kuidas see meie ettevÔttes töötab ja kuidas ma sellistes olukordades tegutsen, kuid saate seda lÀhenemist kergesti kohandada vastavalt oma projekti ja ettevÔtte vajadustele.

On kaks tĂŒĂŒpi arhitektuuri hindamist.

Sise- – me teeme seda tavaliselt ettevĂ”tte siseseks projektiks. Iga projekt vĂ”ib taotleda arhitektuuri hindamist mitmel pĂ”hjusel:

  1. Meeskond arvab, et nende projekt on ideaalne ja see on kahtlane. Oleme selliseid juhtumeid kogenud, ja tihti ei ole sellistes projektides kÔik kaugel ideaalist.
  2. Meeskond soovib oma projekti ja lahendusi kontrollida.
  3. Meeskond teab, et asjad on halvad. Nad vÔivad isegi loetleda peamised probleemid ja pÔhjused, kuid soovivad saada tÀielikku probleemide loetelu ja soovitusi projekti parendamiseks.

VĂ€line – see on formaalsem protsess kui sisehindamine. Klient tuleb alati ainult juhul, kui kĂ”ik on halvasti – vĂ€ga halvasti. Tavaliselt mĂ”istab klient, et on globaalprobleemid, kuid ei oska Ă”igeid pĂ”hjuseid kindlaks teha ja neid lihtsustada.

VĂ€lise kliendi arhitektuuri hindamine on keerulisem juhtum. Protsess peab olema ametlikum. Projektid on alati suured ja vanad. Neis on palju probleeme, vigu ja katkis koodi. Tehtud töö raport peaks olema valmis paar nĂ€dalat hiljem maksimaalselt, kus peab olema esitatud peamised probleemid ja parandusettepanekud. SeetĂ”ttu, kui me saame vĂ€lise projekti hindamisega hakkama, siis sisemine on vaid paar tĂŒhikut. Vaatame kĂ”ige keerulisemat juhtumit.

EttevÔtte projekti arhitektuuri hindamine

TĂŒĂŒpiline projekt, mida hinnata, on suur, vana, ettevĂ”tte projekt, millel on palju probleeme. Klient tuleb meie juurde ja palub oma projekti parandada. See on nagu jÀÀmĂ€gi; klient nĂ€eb vaid oma probleemide tippe ja ei aimagi, mis on vee all (koodi sĂŒgavustes).

Probleemid, mille ĂŒle klient vĂ”ib kaebada ja millest ta vĂ”ib teadlik olla:

  • TĂ”hususe probleemid
  • Rakenduse kasutusmugavuse (usability) probleemid
  • Pikad juurutamised
  • Üksuse ja teiste testide puudumine

Probleemid, millest klient tÔenÀoliselt ei tea, kuid mis vÔivad projektis esineda:

  • Turvaprobleemid
  • Disainiprobleemid
  • Vale arhitektuur
  • Algoritmivead
  • Sobimatud tehnoloogiad
  • Tehniline vĂ”lg
  • Vale arendusprotsess

Ajalooline arhitektuuri hindamise protsess

See on ametlik protsess, mida jÀrgime ettevÔttes, kuid saate seda kohandada vastavalt oma ettevÔtte ja projekti vajadustele.

Kliendi pÀring

Klient palub hinnata praeguse projekti arhitektuuri. Meie poolt vastutav isik kogub projekti kohta pÔhiteavet ja otsib vajalikud eksperdid. SÔltuvalt projektist vÔivad need olla erinevad eksperdid.

Lahenduste arhitekt – peamine isik, kes on vastutav hindamise ja koordineerimise eest (ja sageli ainus).
Tehnoloogia-spetsiifilised eksperdid – .Net, Java, Python ja muud tehnilised spetsialistid sĂ”ltuvalt projektist ja tehnoloogiatest.
Pilveeksperdid – need vĂ”ivad olla Azure, GCP vĂ”i AWS pilvearhitektid.
Infrastruktuur – DevOps, sĂŒsteemiadministraator jne.
Muud eksperdid – nĂ€iteks suurandmete, masinĂ”ppe, jĂ”udluse insenerid, turbeeksperdid, QA juhid.

Projekti teabe kogumine

Te peate koguma vÔimalikult palju teavet projekti kohta. Saate kasutada erinevaid tehnikaid sÔltuvalt olukorrast:

  • KĂŒsimustikud ja muud suhtlusviisid e-posti kaudu. KĂ”ige vĂ€hem efektiivne meetod.
  • Veebikohtumid.
  • Spetsiaalsed tööriistad teabe vahetamiseks, nagu: Google doc, Confluence, hoidlad jne.
  • FĂŒĂŒsilised kohtumised. KĂ”ige efektiivsem ja kallim meetod.

Mida tuleb kliendilt saada?

PĂ”hiinfo. Millest projekt rÀÀgib. Selle eesmĂ€rk ja vÀÀrtus. PĂ”hieesmĂ€rgid ja tulevikuplaanid. ÄrieesmĂ€rgid ja strateegiad. Peamised probleemid ja soovitud tulemus.

Projektiteave. Tehnoloogiline tugi, raamistikud, programmeerimiskeeled. On-premise vÔi pilve juurutamine. Kui projekt on pilves, siis milliseid teenuseid kasutatakse. Milliseid arhitektuuri ja disaini mustreid on rakendatud.

Mittefunktsionaalsed nĂ”uded. KĂ”ik nĂ”uded, mis on seotud sĂŒsteemi jĂ”udluse, kĂ€ttesaadavuse, kasutusmugavuse. TurvanĂ”uded jne.

PÔhikasutuse juhtumid ja andmevood.

LigipÀÀs lÀhtekoodile. Peamine osa! Teil on kindlasti vajalik pÀÀseda tagavarade ja dokumentatsiooni juurde, kuidas projekti koostada.

PÀÀs infrastruktuurile. Hea oleks saada ligipÀÀs stage vĂ”i production infrastruktuurile, et töötada "elava" sĂŒsteemiga. See on suur Ă”nn, kui kliendil on infrastruktuuri ja jĂ”udluse jĂ€lgimise tööriistu. Nendest tööriistadest rÀÀgime jĂ€rgmises osas.

Dokumentatsioon. Kui kliendil on dokumentatsioon, siis on see hea algus. See vĂ”ib olla aegunud, kuid siiski hea algus. Ärge uskuge kunagi dokumentatsioonile – kontrollige seda kliendi, reaalse infrastruktuuri ja lĂ€htekoodi pĂ”hjal.

Arhitektuuri hindamise protsess

Kuidas töödelda nii suurt hulka teavet nii lĂŒhikese aja jooksul? Esiteks jagage töö paralleelselt.

DevOps peab vaatama infrastruktuuri. Tehniline juht vaatab koodi. JĂ”udluse insener peab vaatama jĂ”udluse mÔÔdikuid. Andmebaasi spetsialist peaks sĂŒgavamalt uurima andmestruktuure.

Kuid see on ideaalne olukord, kui teil on palju ressursse. TĂŒĂŒpiliselt teevad projekti hindamise ĂŒks kuni kolm inimest. Te saate isegi ise hindamise lĂ€bi viia, mis on sageli nii, kui teil on piisavalt teadmisi ja kogemusi kĂ”igis projekti valdkondades. Sellisel juhul peate automatiseerima kĂ”ik protsessid nii palju, kui vĂ”imalik.

Kahjuks peate dokumentatsiooni lugema kĂ€sitsi. Kui teil on piisav kogemus, suudate ĂŒsna kiiresti mĂ”ista dokumentatsiooni kvaliteeti. Mis seal on tĂ”si ja mis selgelt ei vasta reaalsusele. MĂ”nikord vĂ”ite dokumentatsioonis kohata arhitektuuri, mis ei toimi kunagi reaalses elus. See on teie jaoks signaal mĂ”elda, kuidas see tegelikult projektis realiseeritud on.

Kasulikud tööriistad projekti hindamise automatiseerimiseks

Koodi hindamine on lihtne ĂŒlesanne. Te saate kasutada staatilisi koodi analĂŒsaatoreid, mis nĂ€itavad disaini, jĂ”udluse ja turvalisuse probleeme. Siin on mĂ”ned neist:

Structure 101 – see on suurepĂ€rane tööriist arhitektile. See nĂ€itab teile ĂŒldpilti, sĂ”ltuvust moodulite vahel ja potentsiaalseid ĂŒmberkujundamise kohti. Nagu kĂ”ik head tööriistad, maksab see ka korralikult, kuid samas saate kasutada 30-pĂ€evast prooviversiooni.

SonarQube – vana hea tööriist. Statistilise koodianalĂŒĂŒsi tööriist. See aitab tuvastada halba koodi, vigu ja turvaprogresse rohkem kui 20 programmeerimiskeele jaoks.

KÔigil pilveteenuse pakkujatel on infrastruktuuri jÀlgimise tööriistad. Need aitavad Ôigesti hinnata infrastruktuuri efektiivsust kulude ja jÔudluse vaatenurgast. AWS-i puhul on see trusted advisor. Azure'i puhul on see lihtsalt Azure Advisor.

LisajĂ€lgimise ja logimise abil saate leida jĂ”udlusprobleeme kĂ”ikidel tasanditel. Alustades andmebaasist, kus on ebaefektiivsed pĂ€ringud, tagumisest lĂ”pust ja lĂ”petades esiosa. Isegi kui klient ei ole neid tööriistu varem installinud, saate neid olemasolevasse sĂŒsteemi ĂŒsna kiiresti integreerida, et tuvastada jĂ”udlusprobleemid.

Nagu alati, head tööriistad maksavad hÀsti. Soovitan paar tasulist tööriista. Muidugi vÔite kasutada avatud lÀhtekoodi lahendusi, kuid nende kasutamiseks lÀheb rohkem aega. Ja see tuleb teha eelnevalt, mitte arhitektuuri hindamise protsessi kÀigus.

New Relic – rakenduste jĂ”udluse hindamise tööriist
Datadog – pilvepĂ”hine sĂŒsteemide monitooringuteenuse

Turvakatsete jaoks on palju tööriistu. Seekord soovitan teile tasuta sĂŒsteemi skannimistööriista.

OWASP ZAP – veebirakenduste skannimise tööriist turvastandardite mĂ”istes.

Kogume kĂ”ik ĂŒheks.

Valmistame aruande

Alustage oma aruannet kogutud kliendiandmetest. Kirjeldage projekti eesmÀrke, piiranguid, mittefunktsionaalnÔudeid. SeejÀrel tuleks mainida kÔiki sisendeid, sealhulgas lÀhtekoodi, dokumentatsiooni ja infrastruktuuri.

JĂ€rgmine samm. Loetlege kĂ”ik probleemid, mille leidsite kĂ€sitsi vĂ”i automaatsete tööriistade abil. Suured automaatselt genereeritud aruanded paigutage lĂ”ppu lisaossa. Siin peaksid olema lĂŒhikesed ja selged tĂ”endid leitud probleemide kohta.
Prioriseerige leitud probleemid kategooriate jĂ€rgi: viga, hoiatus, teave. VĂ”ite valida oma skaalal, kuid see on ĂŒldiselt aktsepteeritud.

Nagu ehtne arhitekt, olete kohustatud andma soovitusi leitud probleemide lahendamiseks. Kirjeldage parandusi ja vÀÀrtust, mida klient saab. Kuidas nÀidata ÀÀrmiselt vÀÀrtust arhitektuuri refaktooring millest me varem rÀÀkisime.

Valmistage ette teekaart vÀikeetappidega. Iga etapp peaks sisaldama tÀitmiseks kuluvat aega, kirjeldust, vajalike ressursside hulka parandamiseks, tehnilist vÀÀrtust ja Àriteenuse vÀÀrtust.

KĂ€tkeme arhitektuuri hindamist ja esitame kliendile aruande.

Ärge saatke raportit lihtsalt e-postiga. Seda vĂ”idakse mitte lugeda vĂ”i lugeda, kuid mitte Ă”igesti mĂ”ista, ilma piisava selgituseta. LĂŒhidalt – otsekontakt aitab vĂ€ltida inimestega arusaamatusi. Te peaksite kliendiga kohtumise mÀÀrama ja rÀÀkima avastatud probleemidest, pöörates tĂ€helepanu kĂ”ige olulisematele. Tasub juhtida kliendi tĂ€helepanu probleemidele, mille olemasolust ta vĂ”is isegi mitte aimata, nĂ€iteks turvaprobleemid ning selgitada, kuidas need vĂ”ivad mĂ”jutada tema ettevĂ”tet. NĂ€idake oma arengukaarti parendustest ja arutage erinevaid vĂ”imalusi, mis sobivad paremini kliendile. See vĂ”ib olla seotud ajaga, ressurssidega, töö mahuga.

Kohtumise tulemuste kokkuvÔtte tegemisel saatke kliendile oma raport.

KokkuvÔtteks

Arhitektuuri hindamine on keeruline protsess. Hindamise nÔuetekohaseks teostamiseks on teil vaja piisavalt kogemusi ja teadmisi.

See on tĂ”epoolest vĂ”imalik – pakkuda kliendile tema jaoks ja tema Ă€ri jaoks kasulikke tulemusi vaid nĂ€dalaga. Isegi kui teete seda ĂŒksi.

Minu kogemuse pĂ”hjal on paljusid tĂ€iustusi laaditud keset protsessi ja mĂ”nikord isegi mitte alustades. Need, kes valisid kuldse kesktee ja tegid ainult neid tĂ€iustusi, mis olid Ă€ri jaoks maksimaalselt kasulikud minimaalse töökoormusega, parandasid oma toote kvaliteeti mĂ€rkimisvÀÀrselt. Need, kes ei teinud midagi, vĂ”isid paar aastat hiljem projekti ĂŒldse sulgeda.

Teie eesmÀrk on nÀidata kliendile maksimaalseid tÀiustusi minimaalse hinna eest.

Muud artiklid jaotisest arhitektuur vÔib lugeda vabalt aega viites.

Soovin teile puhtaid koodiridade ja hÀid arhitektuurilisi lahendusi.

Meie Facebooki grupp — Tarkvara arhitektuur ja arendus.

Allikas: habr.com

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