Blog

Performata Aplicatiilor

Un subiect spinos, fără îndoială…

Văd de multe ori oameni inițial derutați, apoi supărați, iar în final de-a dreptul enervați de situațiile în care o performanță slabă a unei aplicații resimțită de utilizatori este pasată între programatori și administratorii de sistem la nesfarșit, rămânând multă vreme nerezolvată.

Inițial problema este plasată programatorilor, care fac o analiză succintă de genul: a crescut numarul de utilizatori/numărul de înregistrări, aveți nevoie de un server mai puternic și astfel problema este pasată sysadminilor. Aceștia se scarpină un pic în cap, încearcă să-și dea seama dacă problema e de la procesor, dacă ar avea nevoie de mai multă memorie sau disk-urile ar trebui să fie mai rapide, însă în lipsa unui răspuns clar din partea programatorilor fac demersurile pentru achiziționarea unui server performant “din zilele noastre”.

În următoarele 1-4 săptămani, pana cand ajunge echipamentul comandat, de obicei toata lumea e linistită gândindu-se că problema e pe cale să se rezolve.

...linistea dinaintea furtunii!

Vine echipamentul, se instalează sistemul de operare, se anunță un downtime și programatorii mută aplicația pe noul și performantul sistem. Utilizatorii asteaptă cu nerabdare să experimenteze o performanță fulgeratoare începând de a doua zi.

Stupoare, în cele mai multe cazuri nu se vede vreo îmbunăntățire semnificativă, sau în cel mai bun caz câstigurile sunt marginale! Nici vorba de explozii de urale care să acompanieze o productivitate sporită a utilizatorilor, în ciuda banilor investiți în noul echipament.

Cam asta e momentul în care managerul (cel care a alocat banii pentru upgrade) îi cheamă la raport pe sysadmini și le cere “să verifice puțin modul de instalare, că sigur nu au pus vreo bifă pe unde trebuie”, din cauza căreia noul sistem se misca la fel de încet.

Aceștia se întorc a doua zi, poate și cu un mic raport de performanță în mână, zicând că sistemul este în parametrii și are o viteza de 3 ori mai mare decât vechiul sistem. Deci, totul e OK din punctul lor de vedere.

Din acest moment frustrarea începe să încolțească în mintea managerilor, care nu înteleg de ce echipa de programatori nu poate vorbi aceeași limbă cu echipa de administratori de sistem și de ce nu pot ajunge la un numitor comun, identificând in mod clar cauza problemei. Dar e clar ca nici unii, nici alții, nu sunt de vină pentru performanța slabă a aplicației! Însă alți oameni implicați în acest subiect nu mai există....

Am vazut această situație de prea multe ori. Din pacate, încă o vedem și acum. Abținându-ne să facem vreun comentariu referitor la cauzele acestei confruntări (că deh... am putea fi bănuiți că suntem părtinitori!) putem totuși menționa modul în care aceste situații pot fi rezolvate (și chiar mai bine, evitate!)

Noi credem că dezvoltatorii sau implementatorii aplicațiilor trebuie să furnizeze și cerințele de sistem necesare pentru a rula optim aplicația, precum informații privind scalabilitatea soluției reflectată în indicatorii de performanță!

Aceste “cerințe de sistem” includ, dar nu se limitează la:

  • Versiune sistem de operare, baze de date compatibile, versiune webserver;
  • Cerințe de performanță hardware care includ:
    • #IOPS, inclusiv tipul lor (dimensiunea pachetului, secvențialitatea lor, proporția read/write);
    • Capacitate Throughput și secvențialitate;
    • Performanța necesară la nivel de procesor, cantitatea de memorie;
  • Componenta de rețea solicitată de fiecare conexiune a unui utilizator:
    • Lățimea de bandă necesară și latența pentru fiecare conexiune;
  • Compatibilitatea cu medii virtuale;
  • Indicatori privind soluțiile de backup, atât la nivel de aplicație cât și a bazei de date.

Toate aceste elemente nu pot fi “ghicite” de către administratorii de sistem, sunt proprii fiecărei aplicații și sunt foarte necesare în dimensionarea hardware-ului, care susține încărcarea necesară. Este absolut treaba sysadminilor să furnizeze soluțiile de disponibilitate pentru aceste sisteme, să asigure conexiunile necesare dinspre utilizatori, si sa gaseasca solutiile tehnice potrivite pentru a satisface cerințele venite din partea aplicațiilor.

În momentul în care vedeți elementele de mai sus incluse în descrierea sau oferta vreunei aplicații, poate fi un indicator al faptului că aveți un interlocutor priceput, cu o șansă mare de a conduce un proiect la bun sfarsit!