Andmeväli on tarkvarasüsteemi üks väiksemaid tähendusühikuid, kuid selle jälgimine kogu ettevõttes on üks raskemaid asju, mida arendajalt, analüütikult või vastavusametnikult paluda saab. customer_id See väli eksisteerib kusagil definitsioonina. See on salvestatud ühte või mitmesse tabelisse. Programmid loevad seda, edastavad teenuseid, ETL-tööd teisendavad seda, ärireeglid valideerivad seda ja lõpuks renderdavad seda aruannetes, armatuurlaudadel või API vastustes, mida teised süsteemid täielikult tarbivad. Küsimus, kust see väli pärineb, kuhu see läheb ja mis sellega vahepeal juhtub, ei ole dokumentatsiooni- ega arhitektuuriküsimus. See on reaalajas küsimus tegeliku koodi, tegelike andmete ja töötava ettevõtte süsteemi tegelike teostusradade kohta. Sellele täpseks vastamiseks tuleb välja jälgida läbi iga kihi, kus see esineb, igas keeles, platvormil ja repositooriumis, kus see asub.
Andmeväljade jälgimine kogu süsteemis
SMART TS XL loob täieliku väljataseme ristviite mis tahes keeles ja platvormil teie keskkonnas.
Kliki siiaTänapäevastes andmeteadlikes organisatsioonides nimetatakse seda võimekust andmete pärandiks ning tänapäevaste analüüsiplatvormide, sealhulgas pilveandmeladude, ETL-torustike ja BI-platvormide tööriistad on märkimisväärselt küpsenud. Veerutaseme pärand on paljudes analüüsikeskkondades standardne. Kuid ettevõtte tarkvarasüsteemid ei ole analüüsiplatvormid. Need on heterogeensed kombinatsioonid suurarvutiprogrammidest, partiitöödest, relatsioonandmebaasidest, hajusteenustest ja tänapäevastest API-dest, mida igaüht juhivad erinevad tööriistad, erinevad meeskonnad ja erinevate aastakümnete pikkused disainiotsused. Valdkond ACCT-BALANCE COBOL-i koopiaraamatus määratletud väärtus ei ilmu Databricksis ega dbt-s. JCL-töö, mis selle välja partiivärskendust edastab, ei jäädvustata üheski pilvepõhises andmepäringu tööriistas. Java-teenus, mis loeb saadud andmebaasirida ja täidab vastuseobjekti, on kolmas süsteem, millel on sama alusväärtuse jaoks oma nimetamiskonventsioon. Nagu üksikasjalikult uuritud kontekstis JCL-i ja COBOL-i kaardistamine, on need kolm kihti sügavalt seotud viisil, mille lahtiharutamiseks pole loodud ühtegi tööriista, ning ühtse jälje puudumine ei ole väike lünk, vaid struktuuriline pimeala, mis mõjutab iga ülesannet, mis puudutab jagatud andmeid.
See artikkel on praktiline juhend selle kohta, mida väljade jälgimine ettevõtte süsteemis tegelikult hõlmab: milliseid kihte väli läbib, millised meetodid selle jälgimiseks saadaval on, miks need meetodid kihtide piiridel ebaõnnestuvad, mida tõeline väljataseme jälgimine nõuab ja kuidas organisatsioonid, kes sellesse võimekusse investeerivad, kasutavad seda riski vähendamiseks, uurimise kiirendamiseks ja oma andmete kontrolli säilitamiseks ulatuslikult.
Mida tähendab andmevälja jälgimine ettevõtte süsteemis
Andmevälja jälgimine tähendab nimetatud andmeelemendi jälgimist selle definitsioonipunktist läbi iga teisenduse, liikumise, salvestamise ja tarbimise sündmuse süsteemis mõlemas suunas: ülesvoolu välja väärtuse algallikani ja allavoolu iga kohani, mis seda väärtust loeb, kopeerib, arvutab või avaldab. Täielik väljajälg on välja kogu elutsükli kaart: kus see loodi, kuidas see on muutunud, kes seda loeb ja mida nad sellega teevad. See erineb lihtsalt väljanime otsimisest, mis on kasulik alguspunkt ja sügavalt ebapiisav lõpp-punkt. Otsingutulemuste loend sisaldab kõiki kohti, kus string esineb, sealhulgas kommentaare, logisõnumeid, testimisseadiseid ja dokumentatsioonistringe, kuid puuduvad viited kohtadele, kus väli on ümber nimetatud, varjundatud või sellele on juurde pääsetud arvutatud võtme kaudu. Välja jälgimine nõuab eristusi, mida otsing ei suuda teha: definitsiooni kasutusest, lugemist kirjutamisest, teisendust, mis muudab välja väärtust lihtsa läbipääsu kaudu.
Küsimus, millele iga jälgi vastust palutakse, määrab selle vajaliku suuna ja detailsuse. Mõjuanalüüs jälgib allavoolu: välja definitsioonist väljapoole iga tarbijani. Põhjuste analüüs jälgib ülesvoolu: täheldatud valest väärtusest tagasi läbi iga teisenduse kuni veaallikani. Vastavuse kaardistamise jäljed üle kogu süsteemi: millised süsteemid välja salvestavad või töötlevad, olenemata suunast. Iga jälgimissuund nõuab sama aluseks olevat võimekust: süsteemi mudelit, mis esindab väljataseme suhteid kõigil kihtidel, mitte ainult ühe kihi sees. Nagu on uuritud analüüsis andmete ja juhtimisvoo analüüsSelleks, et mõista, mida väli süsteemis teeb, on vaja arutleda nii andmete üle, mida see kannab, kui ka täitmisteede üle, mida see läbib, ning need kaks arutlusviisi peavad täpse ja täieliku tulemuse saamiseks koos töötama.
Tabeli ja väljataseme jälgimise erinevus
Andmete päritolu käsitlevas kirjanduses eristatakse kahte detailsust: tabeli tasemel päritolu, mis näitab, kuidas andmekogumid on omavahel seotud, ja veeru tasemel päritolu, mis näitab, kuidas üksikuid välju luuakse, teisendatakse ja tarbitakse. Erinevus ei seisne ainult täpsuses. See on erinevus teadmise ja süsteemi A väärtuse teadmise ning süsteemi B väärtuse teadmise vahel. customer_segment süsteemis B tuletatakse arvutusest, mida rakendatakse account_type ja tenure_months süsteemis A. Tabeli tasemel päritolu annab meeskonnale teada, et süsteemi A muudatus võib mõjutada süsteemi B. Välja tasemel päritolu annab neile teada, millist konkreetset välja süsteemis B see mõjutab, millist konkreetset transformatsiooni ja millistel konkreetsetel tingimustel. See detailsus muudabki päritolu suunatud kaardist tegutsemiskõlblikuks.
Ettevõtte süsteemides, mis sisaldavad suurarvuteid ja pärandkomponente, muudab detailsuse küsimuse veelgi keerulisemaks andmete esitamise konventsioonid, mis erinevad kihtide lõikes oluliselt. COBOL-i töömälu väli, mis on defineeritud kui WS-ACCT-BAL PIC S9(13)V99 sisaldab sama ärikontseptsiooni kui Java muutuja accountBalance tüüpi BigDecimal, mis sisaldab sama kontseptsiooni mis andmebaasiveerg ACCT_BALANCE DECIMAL(15,2)Tabeli tasemel jälgimine näitab, et andmed liiguvad COBOL-programmist andmebaasi tabelisse ja sealt edasi Java-teenusesse. Välja tasemel jälgimine lahendab selle probleemi. WS-ACCT-BAL, ACCT_BALANCEja accountBalance on kõik sama ärikontseptsiooni esitused koos dokumenteeritud teisendustega nende vahel. See lahendus muudab jälje rakendatavaks.
Miks on ettevõtte väljade jälgimine keerulisem kui analüütilise päritolu jälgimine?
Analüütika liinitööriistad, sealhulgas andmeladude ja teisendusraamistike (nt dbt) ümber ehitatud kaasaegsed platvormid, töötavad keskkondades, kus andmete liikumine on selgesõnaliselt korraldatud määratletud torujuhtme etappide kaudu ja kus iga etapi sisendid ja väljundid on registreeritud metaandmetes, mida liinitööriist saab lugeda. Liini konstrueeritakse torujuhtme definitsioonidest, mis on masinloetavad esemed, mis on spetsiaalselt loodud seda tüüpi analüüsi toetamiseks. Ettevõtte tarkvarasüsteemid ei tööta sel viisil. COBOL-programm ei deklareeri oma andmete sisendeid ja väljundeid masinloetavas manifestis. JCL-töö ei avalda metaandmete registrisse loetavate ja kirjutatavate väljade skeemi. Java-teenus ei märgista iga väljaviidet selle kontseptuaalse seosega andmebaasi veeruga. Seosed väljaviidete vahel kihtide vahel on väljendatud koodis endas: MOVE-lausetes, programmidesse manustatud SQL-päringutes, failipaigutuse definitsioonides, teenusemeetodite signatuurides. Nende seoste jälgimine nõuab tegeliku koodi lugemist ja mõistmist, mitte torujuhtme metaandmete registri tarbimist. Nagu on uuritud kontekstis staatiline analüüs hajutatud süsteemides, keeruka hajussüsteemi komponentide vahelise andmevoo arutlemine nõuab koodi enda struktuurianalüüsi, mitte ainult süsteemi välise käitumise jälgimist.
Ettevõtte süsteemis andmevälja läbivad kihid
Enne kui välja saab jälgida, tuleb mõista kihte, mida see läbib. Ettevõtte süsteemid on oma arhitektuuri poolest väga erinevad, kuid väljade liikumine järgib äratuntavaid mustreid, mis vastavad tehnilistele kihtidele, mida enamik suuri organisatsioone kasutab. Iga kihi rolli mõistmine välja elutsüklis on eeltingimuseks sellise jälje loomiseks, mis on tõeliselt täielik, mitte piiratud uurimise alguskihiga.
Määratluskiht: kust väli pärineb
Igal väljal on alguspunkt: koht, kus see esmakordselt defineeritakse nimega andmeelemendina, millel on tüüp, pikkus ja tähendus. COBOL-keskkondades on see tavaliselt töömälu definitsioon või koopiaraamatu liige. Relatsioonandmebaasides on see tabeli skeemi veeru definitsioon. Java või .NET-teenustes on see klassi või struktuuri väljadeklaratsioon. Sõnumipõhistes süsteemides on see skeemi definitsiooni väli, olgu see siis JSON Schema, Avro, Protobuf või XSD. Definitsioonikiht on oluline, sest see määrab välja kanoonilise identiteedi. Väli nimega CUST-ID COBOL-i käsikirjas on selle kontseptsiooni autoriteetne definitsioon suurarvuti keskkonnas ning kõik, mis seda loeb, kirjutab või teisendab CUST-ID selles keskkonnas on selle definitsiooni tarbija. Välja jälgimine algab siit ja järgneb viidetele väljapoole läbi koodi, mis seda kasutab.
Ühel ärikontseptsioonil on sageli mitu definitsiooni, üks kihi kohta, mis on ühendatud teisenduse abil. Täieliku jälgimise eeltingimuseks on sama kontseptsiooni kõigi esituste tuvastamine ja see pole alati lihtne: nimetamiskonventsioonid erinevad meeskondade ja aastakümnete lõikes, tüübiesitused erinevad keelte lõikes ning valdkonna kontseptuaalsed piirid nõuavad valdkonna hindamist, mida automatiseeritud tööriistad üksi ei suuda alati pakkuda. See on üks põhjusi, miks väljade jälgimine heterogeensetes keskkondades nõuab enamat kui indekseerimist. See nõuab mudelit, mis jäädvustab kavatsuse, mitte ainult süntaksi.
Salvestuskiht: andmebaasid, failid ja andmekogumid
Pärast esialgset töötlemist jääb välja väärtus peaaegu alati püsima. Relatsioonandmebaasides asub see veerus. Suurarvutites võib see asuda VSAM-failis, määratletud paigutusega lamefailis või CICS-i või IMS-i kaudu hallatavas andmebaasis. Hajutatud süsteemides võib see asuda NoSQL-i salves, sõnumijärjekorras, hajutatud vahemälus või blob-salvestussüsteemis. Salvestuskiht on koht, kus väljaviited kõige sagedamini esitust muudavad: väli nimega CUST-ID COBOL-programmis kirjutatakse veergu nimega CUSTOMER_ID DB2 tabelis ja Java teenus loeb CUSTOMER_ID samast tabelist ja salvestab selle objektiväljale nimega customerIdKõik need on sama väärtusega, kuid ükski automatiseeritud tööriist ei suuda seda samaväärsust tuvastada ilma mudelita, mis seob COBOL-välja viite andmebaasi veeruga Java objektiväljaga.
Salvestuskiht toob kaasa ka vaikse teisenduse ohu. Andmebaasis numbritüübina salvestatud ja rakenduskoodis stringmuutujana hangitud väli on läbinud tüübi teisenduse, mis võib säilitada kogu teabe või mitte. COBOL-faili pakitud kümnendsüsteemis salvestatud ja Java-teenusesse loetud väli nõuab selgesõnalist teisendust, mis võib vale rakendamise korral põhjustada ümardusvigu. Täielik väljajälg hõlmab neid salvestuskihi teisendusi selgesõnaliste sammudena, mitte ainult mõlemal poolel olevate süsteemide nimesid.
Töötlemiskiht: programmid, teenused ja partiitööd
Määratluse ja salvestamise ning salvestamise ja tarbimise vahel töödeldakse väljaväärtusi. Programmid arvutavad nende põhjal tuletatud väärtusi. Teenused valideerivad neid ärireeglite alusel. Pakktöötlus koondab neid, teisendab nende vormingut, filtreerib kirjeid nende sisu põhjal või suunab töötlemist nende väärtuste põhjal. Igaüks neist töötlemisetappidest on välja jäljes sõlm ja igaüht neist tuleb mõista, et vastata küsimustele väärtuse õigsuse, teisendusloogika ja töötlemisjärjekorra kohta. Suurarvutikeskkondades asub suurem osa keerukusest töötlemiskihis ja nagu on üksikasjalikult kirjeldatud uurimises COBOLi staatilise analüüsi lahendused, COBOL-programmi tegeliku tegevuse arutlemine väljaga nõuab programmi täieliku struktuuri parsimist ja mõistmist, sealhulgas tingimusloogikat, mis määrab, millist töötlemisteed antud sisendi korral käivitatakse.
Töötluskihis esinevad ka kõige sagedamini keeltevahelised piirid. Kui COBOL-paketttöö kirjutab andmebaasi ja Java-teenus loeb sealt või kui Pythoni ETL-töö teisendab suurarvuti protsessi loodud faili, siis liigub väli ühe keele töötluskeelest teise. Töötluskihti katva väljajälg peab jälgima välja nende ületuste ajal, lahendades igas keeles kantavad erinevad nimed ja esitused ning tehes seda struktuurianalüüsi, mitte stringide sobitamise abil.
Tarbimiskiht: aruanded, API-d ja allavoolu süsteemid
Välja teekonna lõpus selle väärtus tarbitakse: kuvatakse aruandes, tagastatakse API vastuses, sisestatakse masinõppe mudelisse, avaldatakse teise süsteemi sõnumijärjekorras või esitatakse regulatiivses esituses. Need tarbimispunktid on olulised kahel põhjusel. Esiteks määratlevad need, keda mõjutab, kui välja väärtus on vale või pole saadaval. Teiseks määratlevad need, millised välised süsteemid, kasutajad ja regulatiivsed kohustused väljast sõltuvad, mis määrab muudatuste mõju ulatuse, kui välja definitsiooni või töötlemist tuleb muuta. Tarbimiskihi jälgimine on sageli see, mida vastavus- ja regulatiivsed meeskonnad kõige rohkem vajavad, ja nagu on kirjeldatud laiemas kontekstis... sõltuvusgraafikud ja rakenduse risksüsteemi iga komponendi sõltuva olemuse kaardistamine on muudatuste ohutu haldamise ja tõendatud jälgitavust nõudvate kohustuste täitmise alus.
Miks standardsed jälgimismeetodid ettevõttekeskkondades ebaõnnestuvad?
Organisatsioonid, mis üritavad väljajälgimist ilma spetsiaalselt loodud tööriistadeta teha, kasutavad tavaliselt tekstiotsingu, dokumenteerimise ja käsitsi kontrolli kombinatsiooni. Igal neist lähenemisviisidest on oma piirangud, mis muutuvad suurtes mitmekeelsetes ettevõttekeskkondades tõsiseks. Oluline on mõista, kus iga meetod ebaõnnestub ja miks, sest need meetodid on nii sageli vaikimisi kasutatavad, et nende rikkeid seostatakse sageli ülesande keerukusega, mitte tööriista ebapiisavusega.
Tekstiotsing tekitab müra ja jätab viited vahele
Väljajälgimise kõige levinum alguspunkt on tekstiotsing: väljanime leidmine lähtekoodist, SQL-skriptidest ja konfiguratsioonifailidest. Tekstiotsing on kiire, saadaval kõikjal ega vaja spetsiaalseid tööriistu. See on ka täieliku ja täpse väljajälgimise eesmärgil ebausaldusväärne. Usaldusväärsusprobleem toimib mõlemas suunas. Tekstiotsing annab liiga palju tulemusi: lühikesed väljanimed, näiteks ID, STATUSvõi DATE esinevad tuhandetes omavahel mitteseotud kontekstides ja isegi pikemates nimedes, näiteks account_balance võivad ilmuda logiteadetes, kommentaarides ja testandmetes, kus neil puudub jälgitava väljaga struktuuriline seos. Samal ajal annab tekstiotsing liiga vähe tulemusi, puuduvad viited juhtudel, kus väljanimi kihtide lõikes erineb, viited on väljendatud arvutatud võtmete või aliaste kaudu, viited on genereeritud koodis ja viited on vahendatud andmete, mitte otsese koodiviite kaudu.
Mõelge jäljele WS-CUSTOMER-ID, väli COBOL-i töösalvestussektsioonis:
kobol
WORKING-STORAGE SECTION.
05 WS-CUSTOMER-ID PIC X(10).
PROCEDURE DIVISION.
MOVE CUSTOMER-RECORD-ID TO WS-CUSTOMER-ID.
EXEC SQL
INSERT INTO CUSTOMER_AUDIT
(CUST_ID, AUDIT_TS)
VALUES (:WS-CUSTOMER-ID, CURRENT TIMESTAMP)
END-EXEC.
Tekstiotsing WS-CUSTOMER-ID leiab töömälu definitsiooni ja viited sellest programmist. See ei leia:
- Andmebaasi veerg
CUST_IDmis saab välja väärtuse manustatud SQL INSERT-i kaudu - Java teenus, mis loeb
CUST_IDRohkem kuiCUSTOMER_AUDITja salvestab selle kuicustomerId - API vastus, mis serialiseerib
customerIdascustomer_idJSON-vormingus allavoolu tarbijatele - Aruanne või armatuurlaud, mis lõppkokkuvõttes seda väärtust lõppkasutajatele kuvab
Igaüks neist ühendustest vajab erinevat tüüpi analüüsi: SQL-i parsimist, skeemi kaardistamist, Java AST-analüüsi ja API-lepingu kontrolli. Tekstiotsing ei paku ühtegi neist ja selle tulemuste komplekt ei anna mingit viidet selle kohta, et need ühendused eksisteerivad või jäid märkamata.
Dokumentatsioon aegub enne selle valmimist
Automatiseeritud tööriistade puudumisel tuginevad organisatsioonid sageli käsitsi hallatavale dokumentatsioonile: andmesõnastikele, väljakaardistamise arvutustabelitele, andmevoo diagrammidele ja arhitektuurilistele andmetele. Need esemed on väärtuslikud, kui need on täpsed ja ajakohased. Nad on harva mõlemad korraga. Probleem ei ole dokumentatsioonimeeskondade hooletuses. Probleem on selles, et koodi muutmise tempo ja käsitsi dokumenteerimise töömahukus on ettevõtte tasandil põhimõtteliselt kokkusobimatud. Kolmele uuele teenusele ühe sprindiga lisatud väli nõuab iga andmesõnastiku, iga vooskeemi ja iga kaardistamise arvutustabeli värskendamist, mis kirjeldab süsteeme, millega need teenused suhtlevad. Praktikas jäävad mõned neist värskendustest kahe silma vahele. Dokumentatsioon kaldub tegelikkusest kõrvale, muutub viitena ebausaldusväärseks ja sellest järk-järgult loobutakse. Vananenud moderniseerimisprojektid järjepidevalt tuvastavad ebatäpse või puuduva dokumentatsiooni ühe peamise riskitegurina just seetõttu, et ohutu moderniseerimine eeldab iga komponendi toimimise ja sellest sõltumise tundmist ning dokumentatsioonile ei saa selle teadmise usaldusväärsuse tagamiseks loota.
Manuaalne kontroll ei ole skaleeritav
Manuaalne koodikontroll on väljade jälgimise kõige täpsem lähenemisviis: arendaja loeb lähtekoodi, järgib viiteid ja loob välja elutsüklist mentaalse mudeli. Ühe programmi ühe välja puhul toimib see hästi. Välja puhul, mis esineb viiekümnes programmis kolmes keeles ja kahel platvormil, muutub käsitsi kontroll mitmepäevaseks ja ikkagi mittetäielikuks harjutuseks, kuna ükski inimene ei suuda nii palju konteksti korraga hallata. Välja puhul, mis on olnud tootmises kakskümmend aastat ja mida on puudutanud sajad arendajad, ei ole käsitsi kontroll realistlik valik ühegi tähtajalise ülesande jaoks. Organisatsioonilised kulud ulatuvad kaugemale kui see võtab aega: käsitsi kontrolli käigus loodud teadmised elavad selle tegijas, mitte jagatavas artefaktis. Need ei ole otsitavad, ülekantavad ega kontrollitavad. Järgmine inimene, kes peab sama välja jälgima, alustab samast tühjast baasjoonest ja kordab sama tööd. See on struktuuriline muster, mille murdmiseks väljade jälgimise tööriistad on olemas.
Kuidas peaks ühtne väljajälg praktikas toimima
Täielikuks väljajälgiks ettevõtte süsteemis on vaja tööriista, mis on indekseerinud kogu süsteemi struktuurilisel tasandil: parsinud iga lähteartefakti igas keeles, loonud mudeli nende artefaktide sümbolitest ja seostest ning lahendanud keelte- ja kihtideülesed ühendused, mis seovad väljaviiteid üle süsteemi piiride. Selle mudeli abil on väljajälg graafikupäring, mis jälgib sõltuvusservi alguspunktist väljapoole mis tahes suunas, mida küsimus nõuab. Päring tagastab konkreetsed artefaktid, konkreetsed reaviited ja konkreetsed seosetüübid, mitte käsitsi kontrollitavate failide loendi.
Jälje alustamine: õige kinnituspunkti valimine
Väljajälg algab ankurpunktist: konkreetsest väljaviitest konkreetses artefaktis. Ankur võib olla välja kanooniline definitsioon, näiteks koopiaraamatu liige, andmebaasi veeruskeem või Java klassi väljadeklaratsioon, või see võib olla vaadeldav kasutus konkreetses programmis, mis on praegu uurimise objekt. Õige ankru valimine on oluline, sest see määrab jälje algsuuna. Mõjuanalüüsi puhul on ankur tavaliselt definitsioon ja sellest edasi jälgides loetletakse kõik tarbijad, keda muudatus mõjutab. Põhjuste analüüsi puhul on ankur tavaliselt tarbimispunktis täheldatud vale väärtus ja sellest tagasi jälgides järgitakse töötlemisahelat ülesvoolu vea allika poole. Vastavuse kaardistamisel on jälg kahesuunaline: leitakse iga süsteem, mis välja salvestab, töötleb või avaldab, olenemata suunast.
Jälgides jälge läbi iga kihi
Ankrust alates järgib jälg väljaviiteid läbi süsteemi iga kihi sobivas suunas. Selleks, et see läbimine oleks täpne ja täielik, peavad mitmed erinevad lahutusastmed koos töötama:
Ühe programmi raames: Väljaviidete lahendamine ühes lähtekoodifailis, sealhulgas definitsioonid, lugemised, kirjutamised, teisendused ja tingimuslikud kasutusviisid. COBOLi puhul tähendab see MOVE-lausete, COMPUTE-lausete, REDEFINES-klauslite ja lõigutasemel andmevoo mõistmist. Java puhul tähendab see väljadele juurdepääsu, välja edastavate või tagastavate meetodikutsete ja teisendusavaldiste lahendamist.
Sama keele piires programmide piirideüleselt: Selle lahendamine, kuidas välja väärtus liigub, kui üks programm kutsub teist, edastab andmeid jagatud faili või andmestiku kaudu või kirjutab jagatud salvestuskihile. COBOL-keskkondades hõlmab see koopiaraamatu viidete lahendamist, et leida kõik programmid, mis jagavad väljamääratlust, ja VSAM-failile juurdepääsu jälgimist, et leida kõik programmid, mis loevad või kirjutavad sama failipaigutust.
Keelepiiride üleselt: Keeltevaheliste seoste lahendamine, kus välja väärtus liigub COBOL-programmist andmebaasi veergu, andmebaasi veerust Java-objekti väljale, Java-objektist JSON API vastusesse või mis tahes muust lähtekeele esitusest sihtkeele esitusse. See nõuab ühtset mudelit, mis esitab kõigi keelte väljaviiteid ühises struktuuris ja lahendab sama ärikontseptsiooni erinevate esituste kontseptuaalsed ekvivalentsused.
Süsteemi- ja platvormipiiride üleselt: välja jälgimine süsteemidevaheliste liideste kaudu, sealhulgas sõnumijärjekorrad, failiedastused, partiide üleandmised ja API-kõned. Neid süsteemidevahelisi ühendusi on sageli kõige raskem automaatselt jälgida, kuna need võivad olla väljendatud pigem konfiguratsioonis kui koodis või käitusaja nimetamiskonventsioonide kaudu, mida ükski staatiline artefakt ei esinda.
Keeltevaheliste väljade ekvivalentide lahendamine
Praktikas kõige sagedamini ebaõnnestuv samm on keeltevahelise väljaekvivalentsuse lahendamine: selle kindlakstegemine WS-CUSTOMER-ID COBOL-is CUST_ID DB2 veerus ja customerId Java-objektis on kõik sama ärikontseptsiooni esitused. Ilma selle ekvivalentsuseta ei saa jälg, mis jõuab COBOL-i ja andmebaasi piirini, Java-kihti jätkuda. Kõige usaldusväärsem lähenemisviis nende ekvivalentsuste kindlakstegemiseks on sihtvälja täitev koodi struktuurianalüüs. Kui COBOL-programm käivitub INSERT INTO CUSTOMER_AUDIT (CUST_ID) VALUES (:WS-CUSTOMER-ID), SQL-lause struktuurianalüüs näitab otseselt, et CUST_ID saab oma väärtuse WS-CUSTOMER-IDSellest ühendusest saab välja jälgimisgraafiku serv ja jälgimine jätkub andmebaasi poolel.
Allolev tabel näitab, milline näeb välja täielik väljajälg kui representatiivse välja lahendusetappide struktureeritud jada:
| Jälgimise samm | Allikasartefakt | Sihtmärgi artefakt | Ühenduse tüüp |
|---|---|---|---|
| 1. Programmi vihik | CUSTCOPY käsikirja liige CUST-ID | COBOL-programm CUSTINQ | COPY avalduse viide |
| 2. Programmeeri andmebaasi | COBOL-i hostimuutuja :WS-CUSTOMER-ID | DB2 veerg CUST_ID in CUSTOMER_AUDIT | Sisseehitatud SQL INSERT |
| 3. Teenindatav andmebaas | DB2 CUST_ID | Java väli customerId in CustomerAuditService | JDBC ResultSet kaardistamine |
| 4. Teenus API-le | Java customerId | JSON-väli customer_id REST-vastuses | Jacksoni serialiseerimine |
| 5. API aruandluseks | JSON customer_id | Armatuurlaua mõõde Customer Identifier | API tarbimine BI kihi poolt |
Ettevõtte väljajälgimise kõige olulisemad kasutusjuhud
Välistingimuste jälgimine ei ole akadeemiline harjutus. See on praktiline võimekus, mis määrab, kui kiiresti ja täpselt suudab organisatsioon reageerida konkreetsetele kõrge riskiga olukordadele, mis tekivad suurte mitmekihiliste ettevõttesüsteemide töös rutiinselt. Järgmised juhtumid esindavad stsenaariume, kus välitingimuste jälgimise puudumisel on kõige otsesem ja mõõdetavam kulu.
Skeemi muutmise mõju analüüs
Skeemimuudatused on ettevõtte süsteemides ühed levinumad tootmisintsidentide allikad. Veeru ümbernimetamine, veeru eemaldamine, andmetüübi muutmine või pikkuse pikendamine: kõik need andmebaasi skeemi muudatused võivad märkamatult murda iga programmi, teenuse või aruande, mis viitab mõjutatud veerule, ilma et kompileerimisaja viga hoiataks purunemisest ette. Suures süsteemis, kus veerule viitavad kümned programmid erinevates keeltes, on skeemimuudatuse ohutu teostamise ainus viis enne muudatuse tegemist iga viite loendamine ja veendumine, et iga tarbija on enne juurutamist värskendatud. Väljataseme jälgimine pakub seda loetlemist: andmebaasi veerust väljapoole suunatud jälg läbi kogu tarbiva koodi tuvastab iga programmi, teenuse, pakk-töö ja aruande, mida tuleb üle vaadata, tagastades konkreetsed failide asukohad ja reanumbrid, mitte süsteemide loendi. Nagu uuritud kontekstis ettevõtte moderniseerimise mõjuanalüüsTeadmine enne muudatuse toimumist täpselt, mida see puudutab, on aluseks moderniseerimistöö põhivõimele, mis ei loo uusi tootmisriske, lahendades samal ajal olemasolevaid probleeme.
Regulatiivne vastavus ja andmesubjekti õigused
Andmekaitse-eeskirjad, sealhulgas isikuandmete kaitse üldmäärus (GDPR), HIPAA ja CCPA, kehtestavad kohustusi, mis nõuavad väljade tasemel jälgitavust. GDPR-i kustutamisõiguse taotlus nõuab taotleja isikuandmete väljade kõigi salvestuste tuvastamist ja kustutamist kõigis süsteemides. HIPAA audit nõuab tõendamist, et kaitstud terviseteabe väljadele pääsevad juurde ainult volitatud süsteemid ja töötajad. BCBS 239 hindamine nõuab tõendamist, et konkreetsed riskinäitajad arvutatakse dokumenteeritud allikaväljade põhjal järjepidevalt dokumenteeritud teisenduste abil. Ühtegi neist kohustustest ei saa täita tabeli tasemel liini kaudu, kuna kohustus kehtib konkreetsete väljade, mitte tervete tabelite kohta. Välja tasemel jälgimine annab vastavusmeeskondadele teada, millised veerud millistes programmides ja millistes süsteemides taotluse esemeks olevaid konkreetseid välju salvestavad ja töötlevad, ning see spetsiifilisus määrab, kas vastavusvastus on täielik ja auditeeritav või mittetäielik ja kaitstav ainult atesteerimise kaudu.
Andmekvaliteedi intsidentide algpõhjuste analüüs
Andmekvaliteedi intsidendi ilmnemisel, olgu selleks siis valesid summasid kuvav armatuurlaud, sobimatute väärtustega kirjeid sisaldav aruanne või ootamatuid nullväärtusi tagastav API, alustatakse uurimist tagasiulatuva jälgimisega: jälgitakse välja väärtust veakohast ülesvoolu läbi iga teisenduse, mis selle tekitas, kuni vea allikas on tuvastatud. Ilma väljataseme jälgimistööriistadeta on see uurimine käsitsi teostatav tegevus, mis võib suures süsteemis võtta päevi. Java API vastuses valet väärtust uuriv arendaja peab enne vea tekitanud arvutuse leidmist käsitsi tagasi jälgima Java koodi, andmebaasipäringut, andmebaasi veergu täitnud ETL-i või pakktöötlust ja potentsiaalselt ka ülesvoolu pakktöötlust. Iga kihi ületamine on käsitsi konteksti vahetamine teisele koodibaasile ja potentsiaalselt teisele meeskonnale. Nagu on kirjeldatud kontekstis sõltuvuste indekseerimise abil keskmise taastumisaja lühendamine, on automaatse sõltuvuste jälgimise abil saavutatav intsidentide uurimise aja lühenemine kõige otsesemalt tunda andmekvaliteedi uurimistes, kus uurimisaeg domineerib intsidendi kestuses palju rohkem kui parandusaeg.
Turvavälja ümbernimetamine ja aegumine
Välja ümbernimetamine või väljadefinitsiooni aegumine nõuab enne muudatuse tegemist iga asukoha tundmist, mis praegust nime kasutab. Ühekeelses ja ühe hoidlaga koodibaasis saavad IDE refaktorimistööriistad sellega usaldusväärselt hakkama. Mitmekeelses ettevõttesüsteemis ületab ümbernimetamine keelepiire, kus ühelgi tööriistal pole täielikku nähtavust: COBOL-i koopiaraamatus ümbernimetatud välja tuleb uuendada igas COBOL-programmis, mis viitab koopiaraamatule, igas SQL-päringus, mis kasutab vastavat veerunime, igas Java-teenuses, mis seob veeru objektiväljaga, ja igas nende teenuste allavoolu tarbijas. Väljataseme jälg annab enne ümbernimetamise algust täieliku viidete loendi, võimaldades arendusmeeskondadel viiteloendiga eelnevalt töötada ja juurutada kindlustundega, et ümbernimetamine on lõpule viidud. Sama kehtib ka välja aegumise kohta: aegunud välja jälg tuvastab, millised tarbijad sellest endiselt sõltuvad ja seega millised tarbijad tuleb enne aegumise ohutut lõpuleviimist migreerida.
Kuidas SMART TS XL Loob täieliku väljataseme jälje
SMART TS XL loob kogu ettevõtte süsteemi ühtse ristviidete mudeli, sisestades lähtekoodi kõigist keskkonna keeltest ja platvormidest ning parsides igaüht keelespetsiifilise analüüsi abil. COBOL-programmid, JCL-töövood, DB2 ja SQL-skeemid, Java-teenused, .NET-rakendused, Pythoni skriptid ning XML-i ja JSON-i konfiguratsiooniartefaktid parsitakse kõik ühiseks sümbol- ja seosegraafiks. Iga keele väljaviited on selles graafikus esindatud sõlmedena ja nendevahelised seosed, sealhulgas definitsioonid, lugemised, kirjutamised, teisendused ja keeltevahelised ekvivalendid, on esindatud tüübitud servadena. See graaf on iga platvormi teostatava väljajälgimise alus.
Väljataseme jälgimine SMART TS XL on graafi läbimine mis tahes graafiku väljaviitesõlmest, järgides servi küsimusele vastavas suunas. COBOL-i käsiraamatu liikme edasine jälgimine tagastab iga programmi, mis sisaldab käsiraamatut, iga SQL-lause nendes programmides, mis viitab vastavale veerule, iga tabeli, mis saab veeru väärtuse, iga teenuse, mis sellest tabelist loeb, ja iga API vastuse või aruande, mis avaldab välja välistele tarbijatele. Läbimine ületab keelepiirid automaatselt, kuna keeltevahelised ekvivalentsused lahendatakse indekseerimise ajal, mitte päringu ajal. Platvormi ettevõtte otsinguvõimalus pakub sisenemispunkti väljade jälgimiseks: arendaja või analüütik, kes otsib indekseeritud süsteemis väljanime, saab tulemusi, mis on korraldatud artefakti tüübi, keele ja seose tüübi järgi, kusjuures definitsioonid, lugemised, kirjutamised, SQL-viited, käsiraamatu kaasamised ja API-le avaldamised on kõik tulemuste komplektis eristatavad. Nagu on kirjeldatud ettevõtte otsingulahendused Lehel on platvorm loodud spetsiaalselt leidma kõikjal, kus välja kasutatakse kogu rakenduste portfellis – see on funktsioon, mis lahendab ettevõtte väljade jälgimise probleemi otse ja ulatuslikult.
SMART TS XLmõjuanalüüs viib väljajälgimise töövoo lõpule, vastates automaatselt edasisele küsimusele. Kui märkmikus, andmebaasiskeemis või teenuseliideses olev väli on muutmiseks märgitud, arvutab platvorm täieliku allavoolu mõjugraafiku ja esitab selle navigeeritava ristviidete aruandena, mis on korraldatud kihi ja konkreetse viitekoha järgi. See teisendab väljajälgimise kõige aeganõudvama osa, kus loetletakse kõik allavoolu tarbijad enne muudatuse tegemist, käsitsi uurimisest struktureeritud päringutulemuseks, mida iga meeskonnaliige saab käivitada, tõlgendada ja mille alusel tegutseda. Nagu on uuritud kontekstis sõltuvustopoloogia ja moderniseerimise järjestaminevõime täpselt teada, mida muudatus enne selle tegemist mõjutab, on moderniseerimistöö põhinõue, mis pigem juhib riske kui loob neid.
Välijälgimine kui pidev võimekus, mitte projektitegevus
Ettevõtte andmeväljade jälgimise kõige olulisem mõte on see, et see peab olema pidev võimekus, mis on sisse ehitatud arendus- ja toimingute töövoogu, mitte projektipõhine uurimine, mille käivitavad intsidendid või vastavustähtajad. Kui andmeväljade jälgimine on reaktiivne, langevad uurimise kulud meeskondadele, kellel on suurim ajaline surve: arendajad, kes lahendavad tootmisintsidenti, vastavusmeeskond, kes valmistub auditiks, arhitektid, kes planeerivad migratsiooni enne tarnetähtaega. Uurimine võtab aega, mida nad vajavad parandusmeetmete võtmiseks, võimendades iga seda vajava sündmuse mõju.
Kui väljajälgimine on pidev võimalus, mida säilitatakse süsteemi alati ajakohases mudelis, on uurimine juba tehtud. Väljade seosed kõigis kihtides on koheselt kättesaadavad, ilma eelneva analüüsietapi. Skeemi muudatusi hinnatakse enne juurutamist, mitte ei avastata pärast. Vastavusküsimustele vastatakse mudelist, mitte käsitsi rekonstrueerimise teel. Põhjuste uurimine algab väljajälgimisest, mitte tekstiotsingust ja meeskonna suhtlusest. Selle alati ajakohase mudeli säilitamiseks on vaja tööriista, mis indekseerib süsteemi pidevalt koodi muutudes, värskendab ristviidete mudelit järk-järgult ja hoiab väljataseme seosed täpsed igal kihil. Selle võimekuse loomine on oluline investeering. Alternatiiviks on käsitsi väljajälgimise kulude maksmine iga kord, kui see on vajalik kogu ettevõtte ulatuses tegutsevas organisatsioonis, mis maksab pidevalt rohkem ja jätkab maksmist ka süsteemi kasvades.