Šiltas HTTPS ir šiltas VPN: palyginkite tą patį užklausos kelią
HTTPS neatlieka rankos paspaudimo prie kiekvienos API užklausos, todėl šiltas ryšys ir šiltas tunelis nėra varžovai. Prieš rinkdamiesi palyginkite tą patį užklausų modelį.
Tikriausiai skaitėte, kad HTTPS atidaro naują TCP ryšį ir naują TLS rankos paspaudimą kiekvienai API užklausai, todėl tunelis, išliekantis valandą, atrodo pigesnis. Pirmoji to pusė paprastai neteisinga. Palaikomas klientas daugeliui mainų dar kartą naudoja jau nustatytą ryšį, o matavimas, kuris kiekvienam iškvietimui sukuria naują klientą, matuoja gyvavimo ciklą, o ne apsaugą. Likusi šio puslapio dalis pasakoja, ką vietoj to matuoti.
Ko iš tikrųjų reikalauja daugkartinis naudojimas
Tvarumas yra HTTP modelio dalis, o ne triukas: vienas ryšys perneša kelis užklausos ir atsakymo mainus. Ryšys baigiasi, kai bet kuri pusė jį uždaro, kai serveris atsisako neveiklaus ar perkrauto ryšio arba kai antraštė ar protokolo taisyklė sako, kad ryšio negalima naudoti dar kartą. HTTPS įdeda tą pokalbį į TLS vidų nereikalaudamas naujo rankos paspaudimo kiekvienam mainui. Taigi antroji užklausa nekartoja pirmosios užklausos rankos paspaudimo, nebent kažkas per tą laiką užbaigė ryšį.
Daugkartinis naudojimas taip pat turi vieną sąlygą, kurią programos lengvai sulaužo. Klientas, planuojantis dar kartą naudoti ryšį, turi perskaityti visą atsakymo turinį, o pusiau apleistas atsakymas yra įprastas būdas, kuriuo ryšių telkinys dingsta niekam nepastebint.
Patikrinkite bibliotekos palaikomą klientą ir ryšių telkinio gyvavimo ciklą, o ne manykite, kad telkimas įjungtas ar išjungtas. Užsirašykite ir suderėtą HTTP versiją, nes HTTP/2 ir HTTP/3 ryšių daugkartinį naudojimą tvarko kitaip nei HTTP/1.1. Traktuokite suderėtą versiją kaip matavimo dalį, o ne kaip išnašą.
Kodėl palyginimas matuoja gyvavimo ciklą
Naujo kliento kūrimas kiekvienai operacijai ir jo palyginimas su tuneliu, prijungtu jau valandą, lygina ryšio nustatymą su pastovia būsena. Tai teisėtas matavimas, ir tai nėra HTTPS prieš VPN. Du paleidimai su ta pačia kliento konfigūracija elgseną apibūdina geriau nei vienas, ypač kai pirmasis paleidimas sušildo resolverį arba ryšių podėlį.
Laikykite API operaciją, serverį, paskyrą ir duomenis pastovius, kitaip palyginimas neša daugiau nei vieną kintamąjį. Iš anksto nuspręskite, kur pastatysite laikmatį, nes nustatymas, TLS derybos, programos vykdymas ir atsakymo pristatymas prie sumos prisideda skirtingai. Vienas pirmosios užklausos laikmatis apibūdina nustatymą ir nieko nesako apie pastovų srautą, kurį iš tikrųjų varote. Užrašykite laikmačio ribas šalia skaičių.
Atskirkite šaltą nustatymą nuo šiltų užklausų
Matuokite pirmąją užklausą atskirai nuo tų, kurios eina po jos. Tada pridėkite tai, ką paslauga iš tikrųjų mato: neveiklumo laikotarpius, protrūkius, lygiagretumą, atsakymo dydį ir prisijungimus iš naujo.
Palikite sertifikatų tikrinimą ir HTTPS įjungtus abiejuose keliuose, nes jų pašalinimas matuoja kitokią saugumo konstrukciją, o ne greitesnę. Jei tunelis keičia maršrutą ar tinklų sietuvos vietą, praneškite apie tą skirtumą atskirai, o ne priskirkite kiekvieną laiko pokytį šifravimui, nes kelias, nuostoliai ir eilė gali nusverti mažą užklausą. Prieš darydami išvadą paleiskite kiekvieną kelią du kartus tuo pačiu maršrutu. Užrašykite suderėtą protokolą ir laikmačio ribas su abiem paleidimais.
Numatykite užsidarantį ryšį
Tvarus nereiškia amžinas. Serveris, tarpinis serveris ar tinklo pokytis gali uždaryti ryšį neveiklumo laikotarpiu, o klientas turi atsigauti pagal savo bibliotekos palaikomą elgseną. Tas atsigavimas turi būsenų mašiną: užklausa galėjo būti baigta serveryje arba nepavykti prieš serveriui ją perskaičius, o uždarytas lizdas nepasako iškvietėjui, kas įvyko. Ne idempotentinė operacija toje vietoje negali būti paprasčiausiai kartojama, nes kartojimas nežinomą rezultatą paverčia dvigubu įrašu. Čia šiltas tunelis ir šiltas ryšys elgiasi vienodai, nes abu gali nepavykti tuo metu, kai darbas vyksta.
Naudokite dokumentuotą paslaugos kartojimo ar idempotentiškumo mechanizmą, o ne ciklą, kuris iš naujo atidaro lizdą. Aiškiai išbandykite atsigavimą: uždarykite neveiklų ryšį ir stebėkite, ką klientas daro toliau. Lizdo atidarymas iš naujo nepadaro būseną keičiančio iškvietimo kartojimo saugaus.
Pirmiausia pasirinkite ribą, tada derinkite
Tinklo ribą pasirinkite pagal prieigos ir pasitikėjimo reikalavimus prieš ką nors optimizuodami. VPN apsaugo segmentą tarp savo partnerių, o programos galiniai taškai ir bet kuris atviro teksto segmentas už tunelio ribų vis dar svarbūs. Tada sureguliuokite ryšio gyvavimo ciklą toje riboje. Išvada apie pigesnį tunelį kyla tik iš įsitikinimo, kad kiekviena užklausa kartoja rankos paspaudimą, ir būtent tas įsitikinimas čia tikrinamas.
RFC 9112 tvarumo skyrius yra nuoroda į tai, ką daugkartinis naudojimas iš tikrųjų žada, įskaitant sąlygas, kurios užbaigia ryšį. Perskaitykite jį kartą prieš pasitikėdami matavimu, kuris jų nepaiso.