თქვენ ალბათ წაიკითხეთ, რომ HTTPS ყოველი API მოთხოვნისთვის ახალ TCP კავშირს და ახალ TLS ხელის ჩამორთმევას ხსნის, ამიტომ ერთი საათი ღია გვირაბი უფრო იაფად გამოიყურება. ამის პირველი ნახევარი ჩვეულებრივ მცდარია. მხარდაჭერილი კლიენტი ბევრი გაცვლისთვის უკვე დამყარებულ კავშირს ხელახლა იყენებს, და გაზომვა, რომელიც ყოველი გამოძახებისთვის ახალ კლიენტს აშენებს, სასიცოცხლო ციკლს ზომავს და არა დაცვას. ამ გვერდის დარჩენილი ნაწილი ამბობს, რა გავზომოთ ამის ნაცვლად.

რას მოითხოვს ხელახლა გამოყენება სინამდვილეში

მდგრადობა HTTP მოდელის ნაწილია და არა ხრიკი: ერთი კავშირი რამდენიმე მოთხოვნა-პასუხის გაცვლას ატარებს. კავშირი მთავრდება მაშინ, როცა ერთ-ერთი მხარე დახურავს მას, როცა სერვერი უმოქმედო ან გადატვირთულ კავშირს ხსნის, ან როცა სათაური ან პროტოკოლის წესი ამბობს, რომ კავშირის ხელახლა გამოყენება შეუძლებელია. HTTPS ამ საუბარს TLS-ის შიგნით ათავსებს ყოველი გაცვლისთვის ახალი ხელის ჩამორთმევის მოთხოვნის გარეშე. ამიტომ მეორე მოთხოვნა არ იმეორებს პირველი მოთხოვნის ხელის ჩამორთმევას, თუ რაღაცამ შუალედში კავშირი არ დაასრულა.

ხელახლა გამოყენებას ერთი პირობაც აქვს, რომელსაც აპლიკაციები ადვილად არღვევენ. კლიენტმა, რომელიც კავშირის ხელახლა გამოყენებას აპირებს, პასუხის მთელი სხეული უნდა წაიკითხოს, და ნახევარში მიტოვებული პასუხი ის ჩვეულებრივი გზაა, რომლითაც კავშირების აუზი ვინმეს შეუმჩნევლად ქრება.

შეამოწმეთ ბიბლიოთეკის მხარდაჭერილი კლიენტი და კავშირების აუზის სასიცოცხლო ციკლი, ნაცვლად იმისა, რომ ჩათვალოთ აუზი ჩართული თუ გამორთული. ჩაწერეთ ასევე შეთანხმებული HTTP ვერსია, რადგან HTTP/2 და HTTP/3 კავშირების ხელახლა გამოყენებას სხვაგვარად მართავენ, ვიდრე HTTP/1.1. შეთანხმებულ ვერსიას გაზომვის ნაწილად მოეკიდეთ და არა სქოლიოდ.

რატომ ზომავს შედარება სასიცოცხლო ციკლს

ყოველი ოპერაციისთვის ახალი კლიენტის შექმნა და მისი ერთი საათით დაკავშირებულ გვირაბთან შედარება კავშირის დამყარებას სტაბილურ მდგომარეობას ადარებს. ეს ლეგიტიმური გაზომვაა და ეს HTTPS VPN-ის წინააღმდეგ არ არის. ორი გაშვება ერთი და იმავე კლიენტის კონფიგურაციით ქცევას ერთზე უკეთ აღწერს, განსაკუთრებით მაშინ, როცა პირველი გაშვება რეზოლვერს ან კავშირების ქეშს ათბობს.

API ოპერაცია, სერვერი, ანგარიში და მონაცემები მუდმივი შეინარჩუნეთ, თორემ შედარება ერთზე მეტ ცვლადს ატარებს. წინასწარ გადაწყვიტეთ, სად აყენებთ ტაიმერს, რადგან დამყარება, TLS მოლაპარაკებები, აპლიკაციის შესრულება და პასუხის მიწოდება სხვადასხვა წვლილს შეიტანს ჯამში. პირველი მოთხოვნის ერთი ტაიმერი დამყარებას ახასიათებს და არაფერს ამბობს იმ სტაბილურ ნაკადზე, რომელსაც რეალურად მართავთ. ტაიმერის საზღვრები რიცხვების გვერდით ჩაწერეთ.

გამოყავით ცივი დამყარება თბილი მოთხოვნებისგან

პირველი მოთხოვნა შემდეგებისგან ცალკე გაზომეთ. შემდეგ დაამატეთ ის, რასაც სერვისი რეალურად ხედავს: უმოქმედო პერიოდები, აფეთქებები, პარალელურობა, პასუხის ზომა და ხელახალი დაკავშირებები.

ორივე გზაზე სერტიფიკატის შემოწმება და HTTPS ჩართული დატოვეთ, რადგან მათი მოხსნა სხვა უსაფრთხოების დიზაინს ზომავს და არა უფრო სწრაფს. თუ გვირაბი მარშრუტს ან კარიბჭის მდებარეობას ცვლის, ეს განსხვავება ცალკე მოახსენეთ, ნაცვლად იმისა, რომ ყოველი დროის ცვლილება დაშიფვრას მიაწეროთ, რადგან გზამ, დანაკარგმა და რიგმა შეიძლება პატარა მოთხოვნაზე გაიმარჯვოს. დასკვნამდე მისვლამდე ყოველი გზა ორჯერ გაატარეთ იმავე მარშრუტზე. ჩაწერეთ შეთანხმებული პროტოკოლი და ტაიმერის საზღვრები ორივე გაშვებასთან ერთად.

დაგეგმეთ დახურვადი კავშირი

მდგრადი ნიშნავს არა მარადიულს. სერვერმა, პროქსიმ ან ქსელის ცვლილებამ შეიძლება კავშირი უმოქმედო პერიოდში დახუროს, და კლიენტმა თავისი ბიბლიოთეკის მხარდაჭერილი ქცევით უნდა აღდგეს. ამ აღდგენას მდგომარეობათა მანქანა აქვს: მოთხოვნა შეიძლება სერვერზე დასრულებულიყო, ან შეიძლებოდა ჩავარდნილიყო მანამ, სანამ სერვერი წაიკითხავდა, და დახურული სოკეტი არ ეუბნება გამომძახებელს, რომელი მოხდა. ამ მდგომარეობაში არაიდემპოტენტური ოპერაცია უბრალოდ ხელახლა ვერ დაუკრავს, რადგან გამეორება უცნობ შედეგს ორმაგ ჩანაწერად აქცევს. აქ თბილი გვირაბი და თბილი კავშირი ერთნაირად იქცევიან, რადგან ორივე შეიძლება ჩავარდეს იმ მომენტში, როცა სამუშაო მიდის.

გამოიყენეთ სერვისის დოკუმენტირებული ხელახალი ცდის ან იდემპოტენტურობის მექანიზმი სოკეტის ხელახლა გახსნის ციკლის ნაცვლად. აღდგენა ცხადად გამოსცადეთ: დახურეთ უმოქმედო კავშირი და დააკვირდით, რას აკეთებს კლიენტი შემდეგ. სოკეტის ხელახლა გახსნა მდგომარეობის შემცვლელი გამოძახების გამეორებას უსაფრთხოს არ ხდის.

ჯერ აირჩიეთ საზღვარი, შემდეგ დააყენეთ

ქსელის საზღვარი შერჩიეთ წვდომისა და ნდობის მოთხოვნებიდან, სანამ რაიმეს ოპტიმიზაციას გაუკეთებთ. VPN იცავს სეგმენტს თავის ტოლებს შორის, მაშინ როცა აპლიკაციის ბოლო წერტილები და გვირაბის გარეთ ნებისმიერი ღია ტექსტის სეგმენტი ჯერ კიდევ მნიშვნელოვანია. შემდეგ დააყენეთ კავშირის სასიცოცხლო ციკლი ამ საზღვრის შიგნით. იაფი გვირაბის დასკვნა მხოლოდ იმ რწმენიდან მოდის, რომ ყოველი მოთხოვნა იმეორებს ხელის ჩამორთმევას, და სწორედ ეს რწმენა მოწმდება აქ.

RFC 9112-ის მდგრადობის ნაწილი არის მითითება იმაზე, თუ რას ჰპირდება ხელახლა გამოყენება სინამდვილეში, მათ შორის კავშირის დასრულების პირობები. წაიკითხეთ ის ერთხელ, სანამ ერთგული დარჩებით გაზომვისა, რომელიც მათ უგულებელყოფს.

დაკავშირებული სტატიები