Arhitectura în trei niveluri ( arhitectura în trei niveluri , ing. trei niveluri ) este un model arhitectural al unui complex software care presupune prezența a trei tipuri de componente (nivele, legături): aplicații client (cu care lucrează utilizatorii ), servere de aplicații (cu care lucrează aplicațiile client) și serverele de baze de date (cu care lucrează serverele de aplicații) [1] .
Clientul ( nivelul client ) este o componentă a complexului (de obicei grafic ) furnizat utilizatorului final. Acest nivel nu trebuie să aibă conexiuni directe cu baza de date (pentru cerințe de securitate și scalabilitate), să fie încărcat cu logica principală de afaceri (pentru cerințele de scalabilitate ) și să stocheze starea aplicației (pentru cerințele de fiabilitate ). Doar cea mai simplă logică de afaceri este de obicei dusă la acest nivel: interfață de autorizare , algoritmi de criptare , verificarea valorilor de intrare pentru valabilitate și conformitatea formatului, operații simple cu date (sortare, grupare, numărare a valorilor) deja încărcate pe terminal.
Serverul de aplicații ( stratul de mijloc , stratul de mijloc ) este situat la al doilea nivel, cea mai mare parte a logicii de afaceri este concentrată pe acesta. Doar fragmentele care sunt exportate către client (terminale), precum și elementele logice scufundate în baza de date (proceduri stocate și declanșatoare) rămân în afara acesteia. Implementarea acestei componente este asigurată de middleware . Serverele de aplicații sunt proiectate în așa fel încât adăugarea de instanțe suplimentare la acestea asigură scalarea orizontală a performanței pachetului software și nu necesită modificări ale codului aplicației.
Serverul bazei de date ( stratul de date ) asigură stocarea datelor și este plasat la un nivel separat, implementat, de regulă, prin intermediul sistemelor de management al bazelor de date , conectarea la această componentă este asigurată doar de la nivelul serverului de aplicații.
În cele mai simple configurații, toate componentele sau unele dintre ele pot fi combinate pe un singur nod de calcul. În configurațiile productive, de regulă, un nod de calcul dedicat este utilizat pentru serverul de baze de date sau un cluster de servere de baze de date; pentru serverele de aplicații, un grup dedicat de noduri de calcul la care clienții (terminale) sunt conectați direct.
În comparație cu o arhitectură client-server cu două niveluri sau cu o arhitectură server de fișiere , o arhitectură cu trei niveluri, de regulă, oferă o scalabilitate mai mare (datorită scalabilității orizontale a serverului de aplicații și multiplexării conexiunii), o configurabilitate mai mare (datorită izolarea nivelurilor unele de altele). Implementarea aplicațiilor accesibile dintr -un browser web sau dintr -un client subțire implică, de regulă, implementarea unui pachet software într-o arhitectură cu trei niveluri. În același timp, dezvoltarea sistemelor software cu trei niveluri este de obicei mai dificilă decât pentru cele cu două niveluri, iar prezența unui middleware suplimentar poate impune costuri suplimentare în administrarea unor astfel de complexe.