Topli HTTPS nasuprot toplom VPN-u: uporedite istu putanju zahtjeva
HTTPS ne izvodi rukovanje pri svakom API zahtjevu, pa topla veza i topli tunel nisu suparnici. Uporedite isti obrazac zahtjeva prije nego što odaberete.
Vjerovatno ste pročitali da HTTPS otvara novu TCP vezu i novo TLS rukovanje za svaki API zahtjev, pa tunel koji ostaje otvoren sat vremena izgleda jeftinije. Prva polovina toga obično je netačna. Podržani klijent ponovno koristi uspostavljenu vezu za mnoge razmjene, a mjerenje koje pri svakom pozivu gradi novi klijent mjeri životni ciklus, a ne zaštitu. Ostatak ove stranice govori o tome što umjesto toga mjeriti.
Šta ponovno korištenje zaista zahtijeva
Trajnost je dio HTTP modela, a ne trik: jedna veza nosi više razmjena zahtjeva i odgovora. Veza završava kada je jedna strana zatvori, kada server povuče neaktivnu ili preopterećenu vezu ili kada zaglavlje ili pravilo protokola kaže da se veza ne može ponovno koristiti. HTTPS smješta taj razgovor unutar TLS-a bez zahtijevanja novog rukovanja za svaku razmjenu. Zato drugi zahtjev ne ponavlja rukovanje prvog zahtjeva, osim ako je nešto u međuvremenu završilo vezu.
Ponovno korištenje ima i jedan uslov koji aplikacije lako pokvare. Klijent koji planira ponovno koristiti vezu mora pročitati cijelo tijelo odgovora, a odgovor napušten na pola uobičajen je način na koji bazen veza nestane, a da to iko ne primijeti.
Provjerite klijenta koji biblioteka podržava i životni ciklus bazena veza, umjesto da pretpostavljate da je bazen uključen ili isključen. Zabilježite i pregovaranu HTTP verziju, jer HTTP/2 i HTTP/3 rukuju ponovnim korištenjem veze drugačije od HTTP/1.1. Tretirajte pregovaranu verziju kao dio mjerenja, a ne kao fusnotu.
Zašto poređenje mjeri životni ciklus
Stvaranje novog klijenta za svaku operaciju i poređenje s tunelom koji je povezan sat vremena poredi uspostavljanje veze s ustaljenim stanjem. To je legitimno mjerenje i nije HTTPS nasuprot VPN-u. Dva prolaza s istom konfiguracijom klijenta bolje opisuju ponašanje od jednog, posebno kada prvi prolaz zagrije razrješivač ili keš veza.
Držite API operaciju, server, račun i podatke konstantnim, inače poređenje nosi više od jedne varijable. Unaprijed odlučite gdje postavljate mjerač vremena, jer uspostavljanje, TLS pregovaranje, izvršavanje aplikacije i dostava odgovora različito doprinose ukupnom vremenu. Jedan mjerač za prvi zahtjev opisuje uspostavljanje i ne govori ništa o ustaljenom saobraćaju koji zapravo vodite. Zapišite granice mjerenja pored brojeva.
Odvojite hladno uspostavljanje od toplih zahtjeva
Mjerite prvi zahtjev odvojeno od onih koji slijede. Zatim dodajte ono što servis zaista vidi: periode mirovanja, nalete, istovremenost, veličinu odgovora i ponovna povezivanja.
Ostavite provjeru certifikata i HTTPS uključene na oba puta, jer njihovo uklanjanje mjeri drugačiji sigurnosni dizajn, a ne brži. Ako tunel mijenja rutu ili lokaciju pristupne tačke, prijavite tu razliku odvojeno umjesto da svaku promjenu vremena pripišete enkripciji, jer putanja, gubitak i čekanje u redu mogu nadjačati mali zahtjev. Pokrenite svaki put dvaput preko iste rute prije nego što izvedete zaključak. Zabilježite pregovorani protokol i granice mjerenja uz oba prolaza.
Planirajte za vezu koja se zatvara
Trajno ne znači vječno. Server, proksi ili promjena mreže mogu zatvoriti vezu tokom perioda mirovanja, a klijent se mora oporaviti ponašanjem koje njegova biblioteka podržava. Taj oporavak ima automat stanja: zahtjev je možda završen na serveru ili nije uspio prije nego što ga je server pročitao, a zatvoreni socket ne kaže pozivaocu što se dogodilo. Neidempotentna operacija na tom mjestu ne može se jednostavno ponoviti, jer ponavljanje pretvara nepoznat ishod u duplo upisivanje. Tu se topli tunel i topla veza ponašaju isto, jer oba mogu otkazati u trenutku dok je posao u toku.
Koristite dokumentovani mehanizam ponovnog pokušaja ili idempotentnosti tog servisa umjesto petlje koja ponovno otvara socket. Oporavak testirajte izričito: zatvorite neaktivnu vezu i gledajte šta klijent čini zatim. Ponovno otvaranje socketa ne čini ponavljanje poziva koji mijenja stanje sigurnim.
Prvo odaberite granicu, pa podesite
Odaberite mrežnu granicu prema zahtjevima pristupa i povjerenja prije bilo kakve optimizacije. VPN štiti segment između svojih tačaka, dok su aplikacijski krajnji ciljevi i svaki segment otvorenog teksta izvan tunela i dalje važni. Zatim podesite životni ciklus veze unutar te granice. Zaključak o jeftinijem tunelu slijedi samo iz uvjerenja da svaki zahtjev ponavlja rukovanje, a to uvjerenje se ovdje provjerava.
Odjeljak o trajnosti u RFC 9112 je referenca za ono što ponovno korištenje zapravo obećava, uključujući uslove koji završavaju vezu. Pročitajte ga jednom prije nego što povjerujete mjerenju koje ih zanemaruje.