Mis on vahevara? Definitsioon ja näidiskasutusjuhtumid

Vahevara on veebiarenduses levinud termin. See võib sõltuvalt kontekstist tähendada paljusid asju, mis muudab selle termini veidi segaseks.

Selles artiklis alustame mõiste määratlemisega ja jätkame seejärel arutelu mõne erineva kasutusjuhtumi üle.

Pärast selle artikli lugemist saate kaaslastega rohkem kaasata tehnilisi ja arhitektuurivestlusi. Samuti olete võimeline turvaliste ja usaldusväärsete API-de ja andmevoogude kujundamisel.

Vahevara määratlus

Vahevara on tarkvara, mis toimib vahendajana kahe rakenduse või teenuse vahel, et hõlbustada nende suhtlemist.

Võite mõelda sellest kui puhverserverist, mis võib toimida andmekoguja, tõlgi või lihtsalt päringutena, mis päringuid edastab.

Vahetarkvara levinud kasutusjuhtumid

1) Tõlkija

Andmevahetusvorminguid on palju, näiteks JSON, XML ja Protobuf. Kuigi me kasutame tänapäeval enamasti JSON-i, on igal neist oma kasutamisjuhud.

Näiteks on teada, et protobufferid on toimivamad kui JSON, kuid need pole inimloetavad. Seega võite kasutada siseteenuste jaoks Protobuffereid ja võite kasutada JSON-i, kui API klient on brauser.

Võite vaadata ka minu artiklit Protobufferite kohta, kui olete huvitatud nende kohta lisateabe saamisest.

Oletame nüüd, et vajame neid kahte teenust, mis räägivad erinevaid protokolle, omavahel suhtlemiseks.

Saame luua vahevara, mis kasutab andmete teisendamise teeki ja tõlgib taotlused vormingusse, millest vastuvõttev teenus on arusaadav.

2) Andmete kogumine-paljundamine

Mikroteenuste arhitektuur on populaarne arhitektuurimuster, mida tavaliselt kasutatakse tänapäevastes rakendustes.

Kui te pole mikroteenuste arhitektuuriga tuttav, tähendab see põhimõtteliselt seda, et teie rakendus koosneb paljudest väikestest rakendustest või teenustest, mis on üksteisest sõltumatud ja toimivad koos Interneti kaudu suheldes.

Näiteks e-kaubanduse projektis võib teil olla mikroteenus toodete salvestamiseks ja hankimiseks, teine ​​mikroteenus otsimiseks ning teine ​​kasutajate autentimiseks ja salvestamiseks. Ja igal neist on oma andmebaas.

Oletame nüüd, et tahame oma otsingut rakendada nii, et see otsib nii kasutajaid kui ka tooteid.

Kui see oleks monoliitne rakendus, saaksime lihtsalt tabeli otsimiseks ja tulemuste ühendamiseks kirjutada päringu. Kuid nüüd töötavad meie andmebaasid erinevates serverites.

Sellel probleemil on mitu lahendust ja me vaatame neist kahte.

Andmete kogumine

Me võime kasutada vahevara, et saata päringuid mõlemale serverile ja paluda neil otsida oma andmebaasidest kasutajanimesid ja otsitava sõnaga vastavaid tooteid.

Siis saame tulemused mõlemast serverist koguda ja kliendile tagastada. Pange tähele, et taotluste arv suureneb lineaarselt, kui suurendame serverite arvu (ja me peame ka need andmed ühendama).

Andmete paljundamine

Saame salvestada duplikaatandmeid oma otsinguserverisse, et see saaks neid otse otsida, selle asemel et toote- ja kasutajaserveritelt päringuid teha. See on mälu osas vähem efektiivne, kuid palju kiirem - ja kiirus on otsinguteenuste jaoks ülioluline.

Kui vajame tabeleid Toode ja Kasutaja, saame need tabelid luua ka oma otsinguserveris. Siis, kui salvestame uue kasutaja oma kasutajate andmebaasi, salvestame ühe eksemplari ka otsinguserverisse.

Meil on paar võimalust: kõigepealt võime andmete dubleerimiseks helistada otsingu serveri salvestusmeetoditele kasutaja ja toote serverite salvestusmeetoditest. Või saame luua salvestamiseks vahevara, mis teeb järgmist:

  • Kui saabub salvestusnõue, helistage toote / kasutaja serveri salvestamiseks ja otsinguserveri salvestamiseks.
  • Kui esimene salvestamine ebaõnnestub, ärge helistage salvestamist teisele (see hoiab andmebaasid ühtsena).

Vaatame disainivahemikke ilma vahetarkvarata ja koos vahevara abil. Esiteks näeb see välja ilma:

Näeb kole välja, eks? Tõepoolest, see on kole ja see muudab teie koodi keerukamaks ja tihedalt ühendatud.

Siin on sama lahendus vahetarkvaraga:

Selle stsenaariumi korral helistab kliendipool vahetarkvarale lihtsalt toote või kasutaja salvestamiseks ja ülejäänuga tegeleb ta.

Toote või kasutaja serverites ega kliendipoolses osas andmete kopeerimisega seotud kood puudub. Selle tarkvara eest hoolitseb vahetarkvara.

3) API turvalisus

Mis tahes kasutajaliidese kliendipoolse koodi puhul saame väljuvaid taotlusi vaadata kas brauseri konsoolis või puhverserveri kaudu.

Rääkisime kasutaja serverist, mis hoolitseb sisselogimise ja registreerumise eest. Kui meie kasutajaliidese kood saadab päringud otse sellesse serverisse, kuvatakse meie autentimisserveri aadress. Pärast meie taustaprogrammi IP-aadressi teada saamist saavad ründajad tööriistu leida meie lõpp-punktid ja otsida meie serveris haavatavusi.

Võime kasutada puhverserverina vahevara, et varjata oma autentimisserveri URL-i. Meie kasutajaliides suhtleb vahetarkvaraga ja see edastab päringu autentimisserverile ja tagastab vastuse tagasi.

See lähenemine võimaldab meil blokeerida ka kõik taotlused meie autentimisserverile, välja arvatud meie vahevara URL-ist päringud. See muudab meie autentimisserveri palju turvalisemaks.

Varem ei olnud see võimalik, sest meie kasutajaliides suhtles autentimisserveriga. Kuna kasutajaliides tähendab kliendi arvutit, ei saanud me IP-filtrit rakendada.

4) Avalike API-de eksponeerimine

Eelmises osas saime teada, et vaheseadmeid saab kasutada meie API-le juurdepääsu piiramiseks.

Vaatame nüüd võrrandi teist külge: mis siis, kui me tahame anda piiratud juurdepääsu oma API-le? Võib-olla oleme panga tarkvarainsener ja pank plaanib häkatonit. Peaksime pakkuma juurdepääsu oma API-le, eks?

Kuid kuna me oleme pank, ei saa me loomulikult pakkuda juurdepääsu kogu API-le ja lubada kõiki toiminguid. See tähendab, et peame leidma viisi, kuidas pakkuda piiratud juurdepääsu.

Sel eesmärgil saame juurutada vahevara, mis paljastab ainult mõned lõpp-punktid ja suunab taotlused meie tegelikule API-le. Seejärel pakume selle API arendajatele häkatonil.

Järeldus

Selles postituses alustasime vahetarkvara määratlemisega ja püüdsime kategoriseerida vahearvutite kasutamise juhtumid veebiarenduses.

Pidage meeles, et see pole täielik kasutusjuhtumite loetelu, kuid siiski loodan, et see oli teile kasulik.

Täname lugemast. Kui teile artikkel meeldis, kutsun teid üles oma blogi vaatama. Võite tellida ka minu meililoendi, et saada teateid, kui ma uue postituse avaldan :)