# Shadowing, Blue-Green और Progressive Delivery — API Gateway और Service Mesh

Source: https://www.geekswithgeeks.com/hi/api-gateway-service-mesh/p-shadow-bluegreen

> 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 अनदेखा होता है। यहाँ चलाया नहीं गया।

```nginx
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 निर्णय ले।

```text
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
```

**Quiz:** Traffic mirroring किसलिए उपयोग होती है?

- [ ] Traffic encrypt करना
- [ ] User को दिखने वाले responses दोगुने करना
- [x] Users को प्रभावित किए बिना असली traffic की copies से नया version परखना
- [ ] Static files cache करना

*Answer:* Users को प्रभावित किए बिना असली traffic की copies से नया version परखना. Mirror किए responses फेंक दिए जाते हैं, इसलिए सिर्फ़ परीक्षण का लक्ष्य चलता है।
