Middleware este un termen folosit în mod obișnuit în dezvoltarea web. Poate însemna multe lucruri în funcție de context, ceea ce face ca termenul să fie puțin confuz.

În acest articol, vom începe prin definirea termenului și apoi vom continua cu o discuție cu privire la câteva cazuri de utilizare diferite.

După ce ați citit acest articol, veți putea să vă implicați mai mult în conversațiile tehnice și arhitecturale cu colegii dvs. Veți fi, de asemenea, mai capabil în ceea ce privește proiectarea API-urilor și fluxurilor de date sigure și fiabile.

Definiția Middleware

Middleware este un software care acționează ca intermediar între două aplicații sau servicii pentru a facilita comunicarea acestora.

Vă puteți gândi la acesta ca la un proxy care poate acționa ca un acumulator de date, un traducător sau doar un proxy care transmite cererile.

Cazuri de utilizare obișnuite pentru middleware

1) Traducător

Există multe formate de schimb de date, cum ar fi JSON, XML și Protobuf. Chiar dacă în prezent folosim JSON în cea mai mare parte, fiecare dintre ele are propriile cazuri de utilizare.

De exemplu, Protobuffers sunt cunoscuți ca fiind mai performanți decât JSON, dar nu sunt lizibili de om. Așadar, s-ar putea să utilizați Protobuffers pentru servicii interne și s-ar putea să utilizați JSON atunci când consumatorul API este un browser.

Puteți verifica, de asemenea, my articol pe Protobuffers dacă sunteți interesat să aflați mai multe despre ele.

Acum să spunem că avem nevoie de aceste două servicii, care vorbesc protocoale diferite, pentru a comunica între ele.

Putem crea un middleware care folosește o bibliotecă de conversie a datelor și traduce cererile într-un format pe care serviciul receptor îl poate înțelege.

Ce este Middleware Definitie si exemple de cazuri de utilizare

2) Date de acumulare-duplicare

Arhitectura Microservice este un model arhitectural popular care se aplică în mod obișnuit în aplicațiile moderne.

Dacă nu sunteți familiarizați cu arhitectura microserviciilor, aceasta înseamnă practic că aplicația dvs. constă din multe aplicații sau servicii mici, care sunt independente una de cealaltă și funcționează împreună comunicând prin internet.

De exemplu, într-un proiect de comerț electronic, este posibil să aveți un microserviciu pentru stocarea și recuperarea produselor, un alt microserviciu pentru căutare și altul pentru autentificare și stocarea utilizatorilor. Și fiecare are propria bază de date.

1611620046 998 Ce este Middleware Definitie si exemple de cazuri de utilizare

Acum să spunem că dorim să implementăm căutarea într-un mod în care să caute atât utilizatorii, cât și produsele.

Dacă aceasta ar fi o aplicație monolitică, am putea scrie pur și simplu o interogare pentru a căuta fiecare tabel și a se alătura rezultatelor. Dar acum bazele noastre de date rulează pe diferite servere.

Această problemă are mai multe soluții și vom analiza două dintre ele.

Acumularea datelor

Putem folosi un middleware pentru a trimite cereri către ambele servere și le putem cere să caute în bazele lor de date numele de utilizator și produsele care se potrivesc cu cuvântul căutat.

Apoi putem acumula rezultatele de pe ambele servere și le putem returna clientului. Rețineți că numărul de solicitări crește liniar pe măsură ce creștem numărul de servere (și trebuie, de asemenea, să îmbinăm aceste date).

1611620046 753 Ce este Middleware Definitie si exemple de cazuri de utilizare

Duplicarea datelor

Putem stoca date duplicate în serverul nostru de căutare, astfel încât să le poată căuta direct în loc să solicite de la serverele de produse și utilizatori. Acest lucru este mai puțin eficient în ceea ce privește memoria, dar mult mai rapid – iar viteza este esențială pentru serviciile de căutare.

Dacă tabelele de care avem nevoie sunt Produs și Utilizator, putem crea acele tabele și în serverul nostru de căutare. Apoi, ori de câte ori salvăm un utilizator nou în baza noastră de date, vom salva și o copie în serverul de căutare.

Avem câteva opțiuni: mai întâi, putem apela metodele de salvare ale serverului de căutare din metodele de salvare ale serverelor utilizator și produs pentru a duplica datele. Sau putem crea un middleware pentru salvare, care va face următoarele:

  • Ori de câte ori apare o cerere de salvare, apelați salvarea serverului Produs / utilizator și salvarea serverului de căutare.
  • Dacă prima salvare eșuează, nu apelați salvarea pe alta (aceasta păstrează bazele de date consistente).

Să ne uităm la diagramele de proiectare fără și cu un middleware. În primul rând, așa arată fără:

1611620046 928 Ce este Middleware Definitie si exemple de cazuri de utilizare

Pare urât, nu? Într-adevăr, este urât și vă va face codul mai complicat și strâns cuplat.

Iată aceeași soluție cu un middleware:

1611620046 138 Ce este Middleware Definitie si exemple de cazuri de utilizare

În acest scenariu, partea clientului apelează doar middleware-ul pentru a salva un produs sau utilizator și se ocupă de restul.

Nu există niciun cod legat de duplicarea datelor în serverele Produsului sau Utilizatorului sau în partea clientului. Middleware se ocupă de aceste lucruri.

3) Securitate API

Pentru orice cod front-end client, putem vizualiza solicitările de ieșire, fie în consola browserului, fie prin intermediul unui proxy.

Am vorbit despre un server de utilizator care se ocupă de autentificare și înscriere. Dacă codul nostru front-end trimite direct cererile către acel server, adresa serverului nostru de autentificare este expusă. După ce au aflat adresa IP a backend-ului nostru, atacatorii pot folosi instrumente pentru a găsi punctele noastre finale și a scana serverul pentru a detecta vulnerabilitățile.

Putem folosi middleware ca proxy pentru a ascunde adresa URL a serverului nostru de autentificare. Front-end-ul nostru comunică cu middleware și va transmite solicitarea către serverul de autentificare și va returna răspunsul.

Această abordare ne permite, de asemenea, să blocăm toate cererile către serverul nostru de autentificare, cu excepția cererilor de pe adresa URL a middleware-ului nostru. Acest lucru face ca serverul nostru de autentificare să fie mult mai sigur.

Acest lucru nu a fost posibil anterior, deoarece front-end-ul nostru comunica cu serverul de autentificare. Deoarece front-end înseamnă computerul clientului, nu am putut aplica un filtru IP.

4) Expunerea API-urilor publice

În partea anterioară, am aflat că middleware-urile pot fi utilizate pentru a restricționa accesul la API-ul nostru.

Acum să ne uităm la cealaltă parte a ecuației: ce se întâmplă dacă dorim să oferim acces restricționat la API-ul nostru? Poate că suntem inginer software la o bancă, iar banca planifică un hackathon. Ar trebui să oferim acces la API-ul nostru, nu?

Dar, din moment ce suntem o bancă, desigur, nu putem oferi acces la întregul API și să permitem fiecare operațiune. Aceasta înseamnă că trebuie să găsim o modalitate de a oferi acces restricționat.

În acest scop, putem implementa un middleware care expune doar unele dintre punctele finale și redirecționează solicitările către API-ul nostru real. Apoi oferim acest API dezvoltatorilor de la hackathon.

Concluzie

În acest post, am început prin a defini ce este middleware-ul și am încercat să clasificăm cazurile de utilizare ale middleware-urilor în dezvoltarea web.

Rețineți că aceasta nu este o listă completă de cazuri de utilizare, dar totuși sper că v-a fost de ajutor.

Mulțumesc că ai citit. Dacă ți-a plăcut articolul, te invit să verifici articolul meu blog. De asemenea, vă puteți abona la lista mea de e-mail pentru a primi notificări atunci când public o nouă postare 🙂