Monitorizează aplicația cu un APM (Datadog, New Relic, Elastic APM)

Subiect din roadmap-ul Bune practici: performanța backend · parte din „Măsurare și profilare”

Monitorizarea aplicației cu un APM (Application Performance Monitoring) precum Datadog, New Relic sau Elastic APM înseamnă integrarea unui agent care colectează automat date despre execuția codului, timpul de răspuns al endpoint-urilor, utilizarea resurselor și erorile în timp real. Această practică este crucială deoarece transformă depanarea dintr-un proces reactiv și haotic într-unul proactiv, bazat pe date concrete. Dacă ignori acest aspect, riscă să descoperi problemele de performanță doar când utilizatorii se plâng, iar identificarea cauzei rădăcină poate dura ore sau zile, afectând grav experiența utilizatorului și reputația serviciului.

Cum o aplici

  1. Alege un furnizor: Selectează un APM compatibil cu stack-ul tău tehnologic (ex: Elastic APM pentru stack-ul ELK, Datadog pentru ecosistem larg).
  2. Instalează agentul: Adaugă bibliotecile specifice limbajului tău în proiectul backend (ex: dd-trace-py pentru Python, @datadog/dd-trace-js pentru Node.js).
  3. Configurează variabilele de mediu: Setează cheia API și numele aplicației în fișierul .env sau orchestratorul de containere, fără a hardcodifica credențialele.
  4. Activează instrumentarea automată: Permite agentului să intercepteze automat cererile HTTP, apelurile către baza de date și serviciile externe.
  5. Definise alerte: Configurează notificări pentru depășirea unor praguri critice (ex: timp de răspuns > 500ms sau rată erori > 1%).

Exemplu

Configurarea corectă implică setarea variabilelor de mediu înainte de pornirea aplicației.

Varianta greșită:

# Hardcoding-ul cheilor în cod sau scripturi de start este nesigur
export DD_API_KEY="secret_key_123"
python app.py

Varianta corectă: Utilizarea unui manager de variabile de mediu securizat sau a platformei cloud.

# În Docker Compose sau Kubernetes Secret
environment:
  - DD_API_KEY=${DD_API_KEY}
  - DD_SERVICE=backend-api
  - DD_ENV=production

În codul aplicației, instrumentarea se face adesea transparent, dar poți adăuga span-uri custom pentru logica critică:

from ddtrace import tracer

@tracer.wrap()
def procesare_comanda(user_id):
    # Logica complexă...
    return rezultat

Cum verifici

Verifici aplicarea accesând dashboard-ul APM ales. Caută metrici cheie:

  • Timpul mediu de răspuns (p95/p99): Asigură-te că este sub pragul definit.
  • Rata de erori: Verifică dacă erorile 5xx sunt zero sau acceptabile.
  • Traceroute: Deschide o tranzacție specifică pentru a vedea vizual unde se petrece timpul (ex: 80% în SQL, 20% în logică).

Greșeli frecvente

  • Instrumentarea excesivă: Adăugarea manuală a prea multor span-uri custom poate introduce overhead semnificativ și poate confuzia datele. Folosește instrumentarea automată cât mai mult posibil.
  • Ignorarea costurilor: APM-urile pot deveni scumpe dacă trimiți volume mari de date din mediul de dezvoltare sau testare. Excluză aceste medii din monitorizare sau reduce rata de eșantionare.
  • Fără acțiuni definite: Colectarea datelor fără a defini alerte sau proceduri de remediere este inutilă. Datele trebuie să declanșeze acțiuni clare.

Resurse gratuite

Alte subiecte din „Măsurare și profilare”