पाठ 24 / 26
Shadowing, Blue-Green और Progressive Delivery
Mirror किए traffic से नए versions परखें और सुरक्षित रूप से बदलें।
Users के निर्भर होने से पहले साबित करें
Traffic shadowing (mirroring) live अनुरोधों को नए version में कॉपी करता है और उसके responses फेंक देता है, ताकि user पर बिना असर व्यवहार और बोझ की तुलना हो सके (side effects पैदा करने वाले अनुरोधों में सावधान रहें)। Blue-green दो पूरे परिवेश चलाता है: gateway को एक क़दम में blue से green पर बदलें और कुछ ग़लत हो तो तुरंत वापस लौटें; इसके लिए दोगुनी क्षमता और सावधान database संगतता चाहिए। Canary metric जाँचों के साथ traffic क्रमिक रूप से खिसकाता है। Progressive delivery tools (जैसे Argo Rollouts या Flagger) ये चरण स्वचालित करते हैं: 5% खिसकाएँ, error दर और latency जाँचें, जारी रखें या वापस लें। Rollouts के दौरान database migration हमेशा backward compatible रखें, ताकि दोनों versions एक साथ चल सकें।
nginx में mirroring (उदाहरण)
mirror निर्देश हर अनुरोध की copy shadow upstream को भेजता है; उसका response अनदेखा होता है। यहाँ चलाया नहीं गया।
location /orders/ {
mirror /shadow;
mirror_request_body on;
proxy_pass http://orders_stable/;
}
location = /shadow { internal; proxy_pass http://orders_canary$request_uri; }स्वचालित rollout योजना
प्रोन्नति के नियम लिख लें ताकि रात 2 बजे कोई व्यक्ति नहीं, tool निर्णय ले।
step 1 mirror 100% (no user impact) compare errors + latency for 15 min
step 2 canary 5% continue if 5xx < 0.5% and p99 < 1.2x baseline
step 3 canary 25% -> 50% -> 100% hold 10 min at each step
abort any check fails shift back to 0%, page the owner
after keep old version warm 24 h then remove; schema changes stay backward compatibleत्वरित जाँच: Traffic mirroring किसलिए उपयोग होती है?
- Traffic encrypt करना
- User को दिखने वाले responses दोगुने करना
- Users को प्रभावित किए बिना असली traffic की copies से नया version परखना
- Static files cache करना
Answer
Users को प्रभावित किए बिना असली traffic की copies से नया version परखना — Mirror किए responses फेंक दिए जाते हैं, इसलिए सिर्फ़ परीक्षण का लक्ष्य चलता है।