Varm HTTPS mot en varm VPN: sammenlign samme forespørselsvei
HTTPS gjør ikke håndtrykk ved hver API-forespørsel, så en varm forbindelse og en varm tunnel er ikke rivaler. Sammenlign samme forespørselsmønster før du velger.
Du har sannsynligvis lest at HTTPS åpner en ny TCP-forbindelse og et nytt TLS-håndtrykk for hver API-forespørsel, så en tunnel som holder seg oppe i en time virker billigere. Den første halvdelen av det er vanligvis usant. En støttet klient bruker på ny en etablert forbindelse til mange utvekslinger, og en måling som bygger en ny klient for hvert kall måler livssyklusen i stedet for beskyttelsen. Resten av denne siden handler om hva du heller bør måle.
Hva gjenbruk egentlig krever
Varighet er en del av HTTP-modellen og ikke et triks: én forbindelse bærer flere utvekslinger av forespørsel og svar. Forbindelsen avsluttes når en av sidene lukker den, når serveren pensjonerer en inaktiv eller overbelastet forbindelse, eller når en header eller protokollregel sier at forbindelsen ikke kan gjenbrukes. HTTPS legger den samtalen inn i TLS uten å kreve et nytt håndtrykk for hver utveksling. Så en andre forespørsel gjentar ikke håndtrykket til den første forespørselen med mindre noe avsluttet forbindelsen i mellomtiden.
Gjenbruk har også ett vilkår som applikasjoner lett bryter. En klient som planlegger å gjenbruke en forbindelse må lese hele svarkroppen, og et svar som forlates på halvveien er den vanlige måten en tilkoblingspool forsvinner på uten at noen merker det.
Sjekk den støttede klienten til biblioteket og livssyklusen til tilkoblingspoolen i stedet for å anta at pooling er på eller av. Noter også den forhandlede HTTP-versjonen, fordi HTTP/2 og HTTP/3 håndterer gjenbruk av forbindelser annerledes enn HTTP/1.1. Behandle den forhandlede versjonen som en del av målingen, ikke som en fotnote.
Hvorfor sammenligningen måler livssyklusen
Å lage en ny klient for hver operasjon og sammenligne den med en tunnel som har vært tilkoblet i en time sammenligner oppsett av forbindelsen med en stabil tilstand. Det er en legitim måling, og det er ikke HTTPS mot VPN. To kjøringer med samme klientkonfigurasjon beskriver atferden bedre enn én, særlig når den første kjøringen varmer opp en resolver eller en tilkoblingscache.
Hold API-operasjonen, serveren, kontoen og dataene konstante, ellers bærer sammenligningen mer enn én variabel. Bestem på forhånd hvor du plasserer timeren, fordi oppsett, TLS-forhandling, applikasjonskjøring og svarslevering bidrar ulikt til totalen. Én timer for den første forespørselen beskriver oppsettet og sier ingenting om den stabile trafikken du faktisk kjører. Skriv ned grensene til timeren ved siden av tallene.
Skille kaldt oppsett fra varme forespørsler
Mål den første forespørselen atskilt fra dem som følger. Legg så til det tjenesten virkelig ser: inaktive perioder, utbrudd, samtidighet, svarets størrelse og gjentilkoblinger.
Hold sertifikatvalidering og HTTPS påslått på begge veier, fordi å fjerne dem måler et annet sikkerhetsdesign og ikke et raskere. Hvis tunnelen endrer ruten eller plasseringen til gatewayen, rapporter den forskjellen separat i stedet for å tilskrive hver tidsendring kryptering, siden vei, tap og kø kan dominere en liten forespørsel. Kjør hver vei to ganger over samme rute før du trekker en konklusjon. Noter den forhandlede protokollen og grensene til timeren med begge kjøringene.
Planlegg for forbindelsen som lukkes
Varig betyr ikke permanent. En server, en proxy eller en nettverksendring kan lukke en forbindelse i en inaktiv periode, og klienten må gjenopprettes gjennom den støttede atferden til biblioteket sitt. Den gjenopprettingen har en tilstandsmaskin: forespørselen kan ha fullført på serveren, eller den kan ha mislyktes før serveren leste den, og en lukket socket forteller ikke den som kaller hva som skjedde. En ikke-idempotent operasjon på den plassen kan ikke bare spilles av igjen, fordi en gjentakelse gjør et ukjent utfall om til en dobbel skriving. Her oppfører en varm tunnel og en varm forbindelse seg likt, siden begge kan mislykkes i det øyeblikket arbeid er i gang.
Bruk den dokumenterte ordningen for nytt forsøk eller idempotens som tjenesten har, i stedet for en løkke som åpner socketen på nytt. Test gjenopprettingen uttrykkelig ved å lukke en inaktiv forbindelse og se hva klienten gjør etterpå. Å åpne en socket på nytt gjør ikke gjentakelse av et kall som endrer tilstand trygt.
Velg grensen først, juster deretter
Velg nettverksgrensen ut fra tilgangs- og tillitskravene før du optimerer noe. En VPN beskytter segmentet mellom sine parter, mens applikasjonens endepunkter og alle klartekstsegmenter utenfor tunnelen fortsatt teller. Juster deretter livssyklusen til forbindelsen innenfor den grensen. Konklusjonen om den billigere tunnelen følger bare av troen på at hver forespørsel gjentar håndtrykket, og det er nettopp den troen som prøves her.
Avsnittet om varighet i RFC 9112 er referansen for hva gjenbruk faktisk lover, inkludert vilkårene som avslutter en forbindelse. Les det én gang før du stoler på en måling som ignorerer dem.