Sfaturi și bune practici de conectare a aplicațiilor

Am fost asumarea cu momentul ca aspecte precum securitatea și testele, trebuie luate în considerare în cursul întregului Ciclul de viață al proiectului, de la originea sa până la finalizarea sa. Care nu sunt cerințe nefuncționale sau secundare nefuncționale, dacă nu sunt prioritățile ca parte a structurii fundamentale a aplicatorului (nu sunt atât de multe funcționalități sau mecanisme care au fost proiectate și implementate finalizarea proiectului ca adăugare , dacă au fost făcute). Cu toate acestea, urmașul de aplicare, care încă a făcut merit, nu a primit în multe cazuri aceeași considerație; – p.

în acest post nu cred că descopăr ceva nou pentru cei care au experiență în dezvoltare . Ideea este de a exercita sinteza și de a revizui pentru a rezuma ce, în opinia mea, sunt cele mai bune sau bune practici ale jurnalului de aplicații. Desigur, contribuțiile, observațiile, nuanțele și criticile sunt binevenite; Vă invit să vă alăturați acestui exercițiu.

Jurnalul sau următorul de aplicare este procesarea și stocarea informațiilor privind executarea unei aplicații. Acesta conține date de la entități, modificări de stare și componente software implicate în această execuție. Funcționalitatea sa principală este de a facilita monitorizarea sau analiza executării cererii:

  • analiza comportamentului aplicației în timpul etapei de dezvoltare și depanare (teste albă albă)
  • Analizați erorile sau erorile de execuție detectate, cauzele și consecințele acestora
  • servesc ca o înregistrare de audit atunci când informațiile conținute și modul în care a fost procesat îndeplinește criteriile necesare
  • măsură Performanța sau încărcarea sistemelor sau a aplicațiilor
  • Reverse starea aplicației urmând în ordine inversă Log

Depinde de circumstanțele în care ne aflăm, Al doilea dintre utilizări este, de obicei, cel mai relevant. Un jurnal bun dezvoltat corect în cod și întreținut sau configurat în funcțiune este o garanție rapidă de răspuns pentru analiza erorilor; Acest lucru ar putea fi făcut chiar fără a fi nevoie să oprească aplicația, să o reconfigureze sau să aplice orice modificare.

Traseul de aplicare este de obicei format dintr-un set de evenimente stocate secvențial, de obicei în ordinea în care acestea se întâmplă, persistente sau recuperabile. Acestea pot fi stocate în fișiere, în BBDD, în componente distribuite în acest scop … Mecanismele de rotație sau de istoric pot fi activate, ele pot fi utilizate de către monitoare pentru a lansa alerte, ele pot fi integrate și fuzionate pentru a face analize mai exhaustive .. . relevant este că informațiile înregistrate și modul în care sunt gestionate să fie utile.

Există numeroase soluții și propuneri de software, atât liberi, cât și cele mai complete, mai mult sau mai puțin standardizate, mai simple sau mai complete, de mii tipuri și forme. Lucrul important este să căutăm care să se potrivească nevoilor și mediilor noastre, să uităm complet implementarea mecanismului; și să rămână la cele două aspecte cele mai importante:

  • Conținutul fiecărui record sau eveniment, principala preocupare a dezvoltatorului
  • Modul în care este procesat, persistă și Manaje, preocuparea principală a funcționării sistemului sau a aplicatorului

Costul implementării înregistrării este în IR, în timp ce se dezvoltă, lăsând urmărirea în diferite puncte ale codului. Această activitate ar trebui făcută în timpul dezvoltării, urmărilor modelelor, criteriilor și procedurilor prestabilite. În acest fel, dezvoltatorii vor avea criterii comune, iar următorul va fi coerent între diferitele părți ale codului.

Trasetul și documentația codului pot avea puncte în comun în ceea ce privește filozofia lor, obiective și Modul de aplicare, dar există o diferență importantă între cele două: în timp ce documentația codului intră în De ce ceva se face în acest fel, urmașul trebuie să acopere ceea ce se face. Prin stabilirea unui exemplu, într-o buclă, documentația codului ar trebui să indice de ce limitele sau condițiile de ieșire sunt astfel și registrul de urmărire în timpul executării în ce punct a fost îndeplinită condiția de ieșire.

Informații înregistrate în urmele trebuie să fie relevante și complete. Puteți lua în considerare următoarele aspecte atunci când decideți ce informații includ:

  • ce:
    • ce eveniment sau acțiune sa întâmplat.
    • ce entități au implicat statul.
    • Dacă există o schimbare de stare, ceea ce a fost cel precedent? Care este noul stat?
  • În ce punct a avut loc codul: component, clasa, fișier de cod, metoda sau blocul de execuție, linia de cod … Cum Mult mai detaliate sunt aceste informații mai bine pentru a localiza locul posibilei erori sau unde a trecut execuția, pe de o parte; Dar mai mult pot afecta logarea performanțelor (pot fi necesare informații despre depanare) și încheierea de informații de urmărire, pe de altă parte.
  • când:
    • Înregistrarea temporarului Momentul, absolut sau legat de începutul executării sau orice alt eveniment.
    • Generarea unei urme secvențiale sau cauzale, în care evenimentele care apar mai devreme în timp sau cauzează altele, apar înainte.
  • Înregistrarea stărilor sau a variabilelor: Executarea (parametrii), personalizarea sau specificul utilizatorului, referent la sesiunea sau tranzacția care rulează …
  • indicând fire, tranzacții sau solicitări conexe atunci când suntem în medii concurente.

pentru urmărirea informațiilor sunt mai detaliate în momentul analizei și Mai ușor de gestionat în timpul exploatării acestuia, sunt stabilite nivelurile de filtrare. În acest fel, numai acele evenimente sunt afișate sau stocate cu un nivel mai mare sau egal cu nivelul de urmărire stabilit. Logarea bibliotecilor permit evenimentelor să filtreze evenimentele prin alte criterii, cum ar fi clasa sau contextul evenimentului.

Cele mai frecvente niveluri sunt debug, informații, avertizare și eroare. Clasificarea diferitelor evenimente la fiecare nivel face parte din exercițiul de analiză și ar trebui să vizeze faptul că urmărirea este citită și utilă în diferitele contexte ale cererii, de la dezvoltarea la exploatare.

acest lucru poate fi un exemplu de semantica nivelelor de exploatare:

  • depanare, pentru informații foarte scăzute, sunt utile numai pentru depanarea cererii, atât în dezvoltarea, cât și în analiza incidentelor
    • Apeluri la funcții și proceduri și alte componente, cu parametri și răspunsuri
    • fluxuri de rulare
    • Dezvoltarea algoritmilor și a procedurilor care vă permit să identificați și să urmați execuția sa de dezvoltare
  • informații de nivel superior care permite monitorizarea executării normale
    • opriri și opriri ale serviciilor și sistemelor
    • parametri critici sau configurare relevantă
    • Start și sfârșitul tranzacțiilor și operații complete
    • modificări ale Situația operațiunilor
  • Informații despre situații, care încă fără eroare, dacă sunt anormale sau nu sunt prevăzute, deși aplicația are alternative pentru a le rezolva
    • nu parametrii definiți și a căror valoare este luată în mod implicit
    • situații anormale, dar care sunt rezolvate de aplicație, lăsând operația într-o stare corectă
    • funcționalități non-primordiale sau esențiale, care Ele nu pot fi rezolvate, dar părăsesc operația într-o eroare corectă
  • Eroare, informații despre situații care sunt erori și care împiedică executarea corectă a unei operații sau a unei tranzacții, Dar fără a afecta alte operațiuni sau tranzacții (eroare izolată sau conținut)
    • Nici o operație sau tranzacție nu a putut fi efectuată, dar nu afectează alte solicitări
    • solicitări sau interogări eronate (stocând parametrii din Intrare)
    • Funcționalități generale ale aplicației, care încă afectează funcționarea generală a aplicației Ivo, nu sunt considerate primordiale sau esențiale
    • Fatal, situații de eroare Informații care afectează funcționarea generală a aplicației (erori neizolate sau conținut în domeniul de aplicare)
      • Parametrii nedefinit sau setări eronate
      • Lipsa de conectare sau comunicare cu alte componente
      • Erori de execuție care pot afecta operațiunile sau tranzacțiile independente sau care afectează funcționarea generală a aplicației
  • atât conținutul și forma fiecărui eveniment de jurnal, cum ar fi semantica nivelurilor fac parte din proiectarea aplicației. Aceste criterii trebuie să fie definite și comunicate echipei de dezvoltare care să aplice omogen și coerent pe tot parcursul dezvoltării. Dacă aceste criterii sunt convenite cu echipamentul, puteți obține o mulțime de avantaje de experiența dezvoltatorului.

    Alte recomandări de luat în considerare sunt:

    • Înregistrați evenimente într-un fel Atomic, că toate informațiile referitoare la un eveniment sunt stocate într-o înregistrare sau o linie.
    • Ghidați formatul informațiilor afișate pentru a fi utilizate într-o manieră computerizată sau automată cu unelte specifice.
    • În ceea ce privește excepțiile:
      • Arătați întotdeauna următoarea excepție cu mesajul dvs. și toată stacktrace.
      • Dacă excepția este capturată, tratată și apoi aruncată din nou (bine sau alta) nu lăsați urmă de excepție până când este capturată și în cele din urmă. În acest fel, fiecare excepție va fi afișată o singură dată. Dacă nu o facem așa și înregistrarea fiecărei capturi și relansare vor apărea în urmă de mai multe ori și nu vom ști dacă este același sau este mai multe. (Antipatron de captură de captură).
      • Folosește dovada excepției cauzată sau internă atunci când captarea și bun venit excepția. În Java este metoda Getcuse (), în .NET Proprietatea Innerexception.
  • Utilizarea mecanismelor MDC / NDC (informații de context) Pentru medii mai multe fire sau zone de tranzacții. Aceste informații ne pot permite să filtrare sau să specificăm informațiile de jurnal în contextul de afaceri specific, cum ar fi clienții, utilizatorii, produsele …
  • Implementarea metodei Totostring () a tuturor claselor de afaceri sau a vârfurilor pentru a vă facilita Traceado.
  • Trebuie să luați în considerare diferențele și zonele de timp când lucrați cu jurnalele de la diferite mașini sau componente.
  • Logging nu poate avea efecte secundare, nu puteți modifica starea oricăror parametru, variabilă sau procedură. Arată doar informații. Trebuie să fie lumină, însăși însăși nu trebuie să necesite o prelucrare lungă sau costisitoare.
  • Apeluri către metode, componente și componente distribuite externe, trebuie înregistrate după apel, inclusiv parametrii de intrare și răspuns, precum și clasa / Componentă și metodă, la nivel de depanare. Și la nivelul de eroare și fatal atunci când apare o eroare în apel (dacă o excepție ar trebui să fie urmărită, parametri de intrare și excepție)

un salut,

Juan Francisco Adame Lorite

Creative Commons License

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *