प्रवासन प्लेबुक
1) प्रवास का वर्गीकरण
डीबी योजनाएं: स्तंभ जोड़ ना/बदलना, सूचकांक, शार्डिंग, कुंजी प्रकार बदलना।
डेटा: बड़े पैमाने पर बैकफिल/सफाई, सामान्यीकरण, प्रतिधारण/संग्रह।
सेवाएं और एपीआई: एंडपॉइंट बदलना, वर्शनिंग, कॉन्ट्रैक्ट रिफैक्टरिंग।
कतारें/बसें: चलती विषय, सदस्यता कुंजी बदलना, घटना प्रारूप।
बुनियादी ढांचा: एक नए cluster/K8s/cloud/region में जाना, रहस्य बदलना/केएमएस।
भंडारण और विश्लेषण: इंजन (OLTP/OLAP) को बदलना, डेटासेट का प्रारूप/विभाजन।
सुरक्षा/अनुपालन: मुख्य रोटेशन, मक्खी पर एन्क्रिप्शन, डेटा का भू-स्थानीयकरण।
2) सफल प्रवास के सिद्धांत
1. विस्तार → माइग्रेट → अनुबंध। सबसे पहले, हम योजना/व्यवहार (संगत) का विस्तार करते हैं, फिर डेटा/ट्रैफिक को स्थानांतरित करते हैं, फिर पुराने को हटा देते हैं।
2. छाया और दोहरी। छाया पठन/लिखना और सत्यापन के लिए दोहरी प्रविष्टि।
3. फ्लैग्स और "लाल बटन। "त्वरित शटडाउन, चरण-दर-चरण सक्रियण (प्रतिशत/किरायेदार/क्षेत्र)।
4. पहचान और दोहराव। बिना साइड इफेक्ट के स्क्रिप्ट और कार्य फिर से शुरू किए जा सकते हैं
5. परिवर्तन से पहले अवलोकन। अग्रिम में डैशबोर्ड/अलर्ट, लॉग/ट्रैक में प्रवासन मार्कर।
6. रोलबैक प्रलेखित। रोलबैक रनबुक आगे की योजना के रूप में विस्तृत है।
7. मिनी-गेम और ठहराव। हम SLI और व्यापार आक्रमणकारियों की जाँच करते हुए छोटे हिस्सों में पलायन करते हैं।
3) सूची और निर्भरता विश्लेषण
उपभोक्ता मानचित्र: सेवाएं, नौकरियां, रिपोर्ट, बाहरी भागीदार, बीआई/ईटीएल, वेबहूक।
अनुबंध और स्कीमा: एपीआई/घटना संस्करण, पिछड़े/आगे की संगतता।
पहुँच/रहस्य: जो पढ़ ता है/लिखता है कि कैश/संकेत कहाँ हैं।
डोमेन अपरिवर्तनीय: विशिष्टता, संतुलन, पहचान, रिपोर्टिंग दिवस।
वॉल्यूम/गति: डेटा आकार, आरपीएस, पीक विंडो, आरपीओ/आरटीओ।
4) कैनोनिकल प्लेबुक टेम्पलेट (YAML कंकाल)
yaml playbook: "migrate-orders-to-v2"
owner: "orders-team"
stakeholders: ["platform", "data", "security", "support"]
change_type: ["schema", "data", "api"]
risk_level: "high"
preconditions:
- "Dashboards ready: latency/error/lag"
- "Runbook rollback validated on stage"
- "Backups verified (restore tested)"
plan:
phase_1_prepare:
steps:
- "Add new nullable columns (expand)"
- "Deploy code with dual-write (flag off)"
- "Enable CDC stream to target"
phase_2_shadow:
steps:
- "Shadow-read v2, compare with v1 (1%)"
- "Fix discrepancies; iterate"
phase_3_dual_write:
steps:
- "Enable dual-write (10%→50%→100%)"
- "Start backfill in batches (size=10k, sleep=200ms)"
phase_4_cutover:
steps:
- "Switch reads to v2 by tenants (canary)"
- "Monitor SLI 30m; expand scope"
phase_5_contract:
steps:
- "Drop old indices/columns after T+14d"
- "Disable old topic/api; update docs/SDK"
guardrails:
abort_if:
- "error_rate > 0. 5% for 5m"
- "p95 > baseline1. 5 for 10m"
- "data_mismatch > 0. 01%"
rollback:
steps:
- "Flip flag: reads back to v1"
- "Stop backfill; continue dual-write to v1"
- "Replay missed events (DLQ→v1)"
validation:
checks:
- "Row counts match within epsilon"
- "Business invariants hold (balances, limits)"
comms:
- channel: "on-call-bridge"
- status_updates: "T-24h, T-1h, start, cutover, finish"
window: "low-traffic Sun 02:00–05:00 UTC"
5) प्रवासन पैटर्न
5. 1 DB स्कीमा (RDBMS/NoSQL)
जोड़ें - नहीं बदलें। नया शून्य स्तंभ/सूचकांक → कोड पुराना और नया पढ़ ता है।
ऑनलाइन पुनर्निर्माण। ऑनलाइन इंडेक्स/समवर्ती डीडीएल का उपयोग करें।
क्रमबद्धता संस्करण। JSON/Proto/Avro स्तंभों में पेलोड संस्करण।
प्रमुख प्रवासन। पत्राचार की पीके - टाइम तालिका बदलते समय + ट्रिगर/सीडीसी।
5. 2 डेटा (बैकफिल/सफाई)
सीडीसी + बैकफिल। सबसे पहले, परिवर्तनों का प्रवाह (ऊपर रखने के लिए), फिर बैच बैकफिल।
पार्टियां और समय सीमा। अंतराल नियंत्रण, चौकियों और पुनः प्रारंभ के साथ छोटे बैच।
पहचान अद्यतन। प्राकृतिक कुंजियों/संस्करणों द्वारा अपसर्ट करें।
5. 3 घटनाएँ और कतारें
संस्करण की घटनाएँ। 'event _ type @ vN', उपभोक्ता अपरिचित क्षेत्रों की अनदेखी करते हैं।
चलते हुए विषय। डबल पोस्ट, उपभोक्ता स्थिर होने से पहले दोनों से पढ़ ते हैं; फिर पुराने को "काटना"।
पार्टीशन कुंजी। प्रमुख प्रवासन - पत्राचार और पहचान के नक्शे के साथ पुनर्जागरण के माध्यम से।
5. 4 सेवाएं और एपीआई
नीला/हरा/कैनरी। पूल वार्म-अप, आंशिक यातायात, फास्ट रोलबैक।
फिचा झंडे। किरायेदारों/क्षेत्रों/प्रतिशत द्वारा, समावेश का अवलोकन किया गया।
अनुबंध। सीडीसी अनुबंध और संगतता परीक्षण - स्विच करने से पहले।
5. 5 क्षेत्र/क्लैड्स
भू-डबल रिकॉर्डिंग। डेटा दो क्षेत्रों में दर्ज किया गया है रीडिंग - निकटता से।
राज्य स्थानांतरण। स्नैपशॉट + प्रतिकृति; RPO "रेड लाइन", DNS/Anycast ट्रांसशिपमेंट।
न्यायालय। डेटा की सहमति/स्थानीयकरण, किट को हटाने के लिए "निषिद्ध" की सूची।
6) निष्पादन चरण (विस्तृत)
1. तैयारी
डैशबोर्ड, अलर्ट, लिमिट, फीचर फ्लैग, रिकवरी टेस्ट के साथ बैकअप, एक मंच पर चलते हैं।
2. छाया (छाया जाँच)
मिरर प्रयोक्ताओं को प्रभावित किए बिना नए सिस्टम को अनुरोध/लिखता है। प्रतिक्रियाओं/राज्यों की तुलना करें
3. दोहरा लिखना/दोहरा पढ़ ना
हम दोनों दिशाओं में लिखते हैं। रीडिंग - धीरे-धीरे एक नई प्रणाली में स्थानांतरित। गैर-अनुरूपता लॉग का विश्लेषण किया जाता है।
4. बैकफिल
हम बैचों में ऐतिहासिक डेटा लोड करते हैं। हम सीडीसी अंतराल को नियंत्रित करते हैं, कहानी/कैश पर भार की निगरानी करते हैं।
5. कटओवर (स्विचिंग)
खंड (किरायेदारों/क्षेत्रों/प्रतिशत) द्वारा कैनरीम। हम एक त्वरित रोलबैक का समर्थन करते हैं।
6. अनुबंध (सफाई)
पुराने रास्तों को काटें, "सुरक्षा अवधि" के बाद पुराने क्षेत्रों/सूचकांक/विषयों को हटाएं।
7. सत्यापन और रेट्रो
रिपोर्ट, मैट्रिक्स, सबक, प्लेबुक/चेकलिस्ट अद्यतन करें।
7) प्रवास के दौरान अवलोकन और एसएलओ
तकनीकी SLIs: p50/p95/p99, त्रुटि दर, रीट्री/टाइमआउट, उपयोग, लैग सीडीसी, कतार गहराई।
व्यवसाय SLI: लेनदेन/रूपांतरण की सफलता, अपरिवर्तनीय (शेष, सीमा, डुप्लिकेट)।
विशेष लेबल: 'माइग्रेशन _ आईडी', 'चरण', 'किरायेदार', 'फ्लैग _ स्टेट'।
अलर्ट गार्ड: पूंछ और त्रुटियों के लिए थ्रेसहोल्ड, एसएलओ के लिए "ऑटो-स्टॉप" (गर्भपात)।
तुलना पैनल: v1 बनाम v2, प्रमुख मैट्रिक्स द्वारा डेल्टा।
8) रोलबैक और आपातकालीन परिदृश्य
तार्किक रोलबैक: झंडे/ट्रैफिक रूटिंग बैक, बैकफिल फ्रीजिंग।
डेटा: "मुआवजा" (सागा), इवेंट रीप्ले, डीएलक्यू स्रोत प्रणाली।
गुप्त/कुंजी: पिछली कुंजी/प्रमाणपत्र (दोहरी कुंजी) पर लौटें.
DNS/ट्रैफिक: "रिवर्स ड्रिफ्ट" Anycast/ALB, TTL माइग्रेशन विंडो में शॉर्ट।
संचार: पूर्व-सहमत चैनल और स्थिति प्रारूप।
9) सुरक्षा, गोपनीयता, अनुपालन
डेटा न्यूनतम करना। हम केवल आवश्यक क्षेत्रों को स्थानांतरित करते प्रतिलिपि पर गुमनामी प्रोफाइल।
क्रिप्टोग्राफी। एन्क्रिप्शन "तार पर" और "आराम पर", केएमएस रोटेशन; कुंजी ऑपरेशन लॉग।
समय एक्सेस। प्रवासन नौकरियों के लिए अस्थायी भूमिका, पूरा होने के बाद अधिकारों का चयन।
पैरों के निशान। लॉग/ट्रेस में पीडी मास्किंग, निर्यात प्रतिबंध।
10) परिवर्तन प्रबंधन और संचार
RACI: कौन दावा करता है कि कौन प्रदर्शन करता है, जिसे सूचित किया जाता है
फ्रीज पीरियड्स: माइग्रेशन विंडो में अप्रासंगिक रिलीज को प्रतिबंधित करें।
स्टेटस: T-24h, T-1h, स्टार्ट, कैनरी, कटओवर, फिनिश, पोस्ट-सी।
बाहरी भागीदार: संगतता खिड़कियां, अनुबंध पत्र, परीक्षण सैंडबॉक्स।
11) रनबुक टेम्पलेट्स
11. 1 बैकफिल (स्यूडोकोड)
for batch in paginate(ids, size=10_000):
try:
rows = read_v1(batch)
upsert_v2 (rows) # idempotently mark_checkpoint (batch. end)
sleep(jitter_ms(100..300))
except Throttle:
sleep (5s) # backpressure respect except Fatal as e:
alert("backfill-failed", e, context=batch)
abort_if_needed()
11. 2 Proverka一致nosti (स्नैपशॉट/नमूना)
sample = random_ids(n=10_000, stratify=tenant,timestamp)
v1 = fetch_v1(sample); v2 = fetch_v2(sample)
assert schema_compatible(v2)
assert key_invariants_hold (v1, v2) # sum, statuses, versions mismatch_rate = diff (v1, v2). rate()
abort_if(mismatch_rate > 0. 0001)
11. 3 रीडिंग स्विचिंग
flag. enable("read_from_v2", segment="tenants: cohort_A")
monitor(30m)
if SLO_ok(): expand_segment()
else: rollback_segment()
12) एंटी-पैटर्न
विस्तार-प्रवासन-अनुबंध के बजाय "बिग बैंग"।
सीडीसी के बिना बैकफिल - अनन्त कैच-अप और बहाव।
कोई पहचान नहीं → डुप्लिकेट/गंदा डेटा।
स्क्रिप्ट के बिना मैनुअल कदम - मानव त्रुटियां।
डैशबोर्ड/गार्ड के बिना प्रवासन - "अंधी उड़ान"।
अनजाने में रोलबैक - रोलबैक जरूरत पड़ ने पर काम नहीं करता है।
उपभोक्ताओं (BI/partners) की अनदेखी → टूटी हुई रिपोर्ट/एकीकरण।
13) आर्किटेक्ट चेकलिस्ट
1. लक्ष्य, सीमाएं, प्रवासन प्रकार और परिणाम अपरिवर्तनीय परिभाषित?
2. उपभोक्ता और अनुबंध मानचित्र तैयार, संगतता परीक्षण हरा?
3. तैयार डैशबोर्ड, अलर्ट, टैग 'माइग्रेशन _ आईडी', एसएलओ/रेल सेट?
4. लागू छाया और/या दोहरे-लेखन, बैकफिल पहचान?
5. क्या कोई अभ्यास रोलबैक रनबुक है, बैकअप से वसूली की जांच करें?
6. विंडो/समन्वय/संचार सहमत, फ्रीज?
7. कैनरी और विस्तार/स्टॉप मानदंड तैयार के साथ चरण-दर-चरण योजना?
8. सुरक्षा/अनुपालन: कुंजी, पहुँच, पीआईआई स्वच्छता?
9. क्या दस्तावेज/एसडीके/कल्पना एक ही रिलीज चक्र में अद्यतन है?
10. पोस्ट-सी और एक प्लेबुक अपडेट पूरा होने के बाद?
निष्कर्ष
प्रवासन प्लेबुक जोखिम प्रबंधन का एक वास्तुशिल्प अभ्यास है: छोटे प्रतिवर्ती कदम, पारदर्शी मैट्रिक्स, तैयार रोलबैक, और "विस्तार-माइग्रेट-अनुबंध" अनुशासन। वर्णित टेम्पलेट के बाद, आप व्यावसायिक आक्रमणकारियों और उपयोगकर्ता ट्रस्ट को बनाए रखते हुए, डाउनटाइम और आश्चर्य के बिना योजनाओं, डेटा, सेवाओं और क्षेत्रों को पलायन करते हैं।