सामग्री पर जाएँ

लेख

Ring Promoter - उत्पादन से पहले QA गेट्स

तकनीकी संक्षिप्त: प्रमोशन गेट, प्रति-रिंग ऑटो_प्रमोट, स्वास्थ्य/संस्करण सत्यापन, एसीसी→प्रोड ह्यूमन गेट, रोलबैक, और एआई-टीम नीति

  • 8 मिनट में पढ़ें
  • DevOps
  • CI/CD
  • AI
  • Kubernetes
  • स्वचालन

देखें: उत्पादन से पहले क्यूए गेट

Ring Promoter - उत्पादन से पहले QA गेट्स (यूट्यूब)

वीडियो: youtu.be/Vs2Em0HPvoY · उत्पाद: ringpromoter.com

Ring Promoter ऑर्डर की गई अंगूठियों के लिए TenthMatrix का प्रमोशन कंट्रोल प्लेन है int → test → acc → prod. यह लेख इसी पर केंद्रित है उस पाइपलाइन में क्यूए और गुणवत्ता द्वार: वे कहां बैठते हैं, ऑटो-प्रमोशन मानव गेट्स (विशेष रूप से उत्पाद से पहले) के साथ कैसे इंटरैक्ट करता है, प्रथम श्रेणी गेट्स के रूप में स्वास्थ्य और संस्करण सत्यापन, रोलबैक व्यवहार और एआई प्लेटफ़ॉर्म टीमों के लिए निहितार्थ। उत्पाद: ringpromoter.com · स्रोत: github.com/bwalia/ring-promoter. सहयोगी ब्लॉग: व्यापार संक्षिप्त · सिंहावलोकन: आधुनिक सीआई/सीडी लेख · उत्पाद पृष्ठ: /रिंग-प्रमोटर.

उत्पादन कवर से पहले Ring Promoter QA गेट्स

एजेंट डाइजेस्ट.
  • संकट: उत्पाद में हर चीज़ का स्वत: प्रचार करना YOLO है; प्रत्येक हॉप को हाथ से गेट करना बहुत धीमा है।
  • नमूना: साझा अंगूठियां; एक समय में एक छलांग; कभी न छोड़ें; प्रत्येक हॉप पर स्वास्थ्य (+ वैकल्पिक संस्करण)।
  • नीति: वैकल्पिक auto_promote शुरुआती हॉप्स के लिए प्रति रिंग; ह्यूमन गेट चालू रखो acc → prod.
  • असफलता: अस्वस्थ लक्ष्य या संस्करण बेमेल → स्वचालित रोलबैक + इतिहास।
  • टैगलाइन: उत्पाद के लिए स्वत: प्रचार न करें - क्यूए गेट्स के माध्यम से उत्पादन अर्जित करें।

1. पदोन्नति प्रक्रिया (पुनरावर्तन)

एप्लिकेशन प्रति-रिंग परिनियोजन लक्ष्य (नेमस्पेस, परिनियोजन, छवि रेपो, स्वास्थ्य यूआरएल, परिनियोजनकर्ता) घोषित करते हैं। अंगूठियाँ स्वयं साझा और ऑर्डर की जाती हैं। ऑपरेटर, सीआई, या एजेंट कॉल करते हैं:

  • बीज - एक संस्करण को जमीन पर उतारें int (या एक कॉन्फ़िगर की गई एंट्री रिंग)।
  • पदोन्नति करना - संस्करण को यहां से स्थानांतरित करें from_ring तक अगला केवल घंटी बजाओ.
  • रोलबैक - रिंग पर पिछले संस्करण को पुनर्स्थापित करें (तैनाती के बाद विफल स्वास्थ्य पर भी स्वचालित)।

समवर्ती: एक ही ऐप के संचालन को क्रमबद्ध किया जाता है (प्रतिकृतियों में Postgres सत्र सलाहकार लॉक)। ऑपरेशन संदर्भ को HTTP अनुरोध से अलग किया गया है और इसके द्वारा सीमित किया गया है operation_timeout, इसलिए कोई क्लाइंट डिस्कनेक्ट इन-फ़्लाइट प्रमोशन या उसके रोलबैक को रद्द नहीं कर सकता है।

Operators / CI / Agents
    → Ring Promoter (UI + REST API)
        → seed / promote / rollback
        → Deployer (kubectl | GitHub Actions | k8sjob)
        → Health (HTTP + optional version verify)  ← quality gate
        → optional auto_promote to next ring       ← policy gate
        → Store (Postgres history + locks)
Rings: int → test → acc → prod

2. जहां QA गेट्स बैठते हैं

क्यूए गेट्स आरेख: ऑटो हॉप्स अर्ली, ह्यूमन गेट बिफोर प्रोड

कूदना विशिष्ट गेट मिश्रण टिप्पणियाँ
int → test स्वास्थ्य + संस्करण; अक्सर स्वत: प्रचार बीज के बाद त्वरित प्रतिक्रिया
test → acc स्वास्थ्य + संस्करण; एवल्स/स्मोक के बाद वैकल्पिक ऑटो ऑटो सक्षम करने से पहले स्वास्थ्य समापन बिंदुओं को मजबूत करें
acc → prod स्वास्थ्य+संस्करण+ मानव/QA अनुमोदन ऐसा न करें डिफ़ॉल्ट रूप से उत्पाद में स्वतः-प्रचार करें

द्वार स्तरित हैं. ऑटो-प्रमोशन कभी भी स्वास्थ्य या संस्करण सत्यापन को नजरअंदाज नहीं करता है - यह केवल हॉप्स के बीच एक मानव क्लिक की प्रतीक्षा को हटा देता है जब पिछली लैंडिंग स्वस्थ होती है।

3. प्रति रिंग स्वत: प्रचारित झंडे

ऑटो-प्रमोशन है वैकल्पिक और प्रति रिंग. जब कोई संस्करण ऑटो-प्रमोशन सक्षम रिंग पर स्वस्थ रूप से उतरता है, तो Ring Promoter उसी लॉक किए गए ऑपरेशन के अंदर अगली रिंग पर जारी रहता है। उदाहरण नीति रेखाचित्र:

# Conceptual ring policy (illustrative)
rings:
  - name: int
    auto_promote: true      # healthy int → continue to test
  - name: test
    auto_promote: true      # healthy test → continue to acc
  - name: acc
    auto_promote: false     # HUMAN GATE — stop before prod
  - name: prod
    auto_promote: false     # terminal ring

ऐप-स्तरीय रिंग मैपिंग में अभी भी तैनाती और स्वास्थ्य विवरण शामिल हैं:

# Per-app ring mapping (illustrative)
apps:
  web-frontend:
    rings:
      acc:
        namespace: acc-apps
        deployment: web-frontend
        health_url: https://acc.example/healthz
        health_version_field: version
      prod:
        namespace: prod-apps
        deployment: web-frontend
        health_url: https://www.example/healthz
        health_version_field: version

परिचालन युक्ति: उस ऐप के स्वास्थ्य अनुबंध पर भरोसा करने के बाद ही ऑटो-प्रमोशन सक्षम करें। एक कमजोर हमेशा-200 एंडपॉइंट प्लस ऑटो-प्रमोट ख़ुशी से खराब बाइनरी को स्वीकृति की ओर ले जाएगा।

4. गुणवत्ता द्वार के रूप में स्वास्थ्य और संस्करण सत्यापन

प्रत्येक प्रचार इसकी जाँच करता है स्रोत तैनात करने से पहले रिंग स्वस्थ है, फिर जाँच करता है लक्ष्य कॉन्फ़िगर करने योग्य पुनः प्रयास के साथ तैनात करने के बाद। यदि लक्ष्य अस्वस्थ रहता है, Ring Promoter वापस लुढ़क जाता है पिछले संस्करण का लक्ष्य और इतिहास में विफलता दर्ज करता है।

संस्करण-सत्यापित स्वास्थ्य एक सादे लाइवनेस यूआरएल को गुणवत्ता गेट में बदल देता है:

  • health_version_field - स्वास्थ्य निकाय में JSON फ़ील्ड (उदा. version या build.version).
  • health_version_header - हेडर जैसे X-App-Version.

जाँच को रिपोर्ट करने के लिए समापन बिंदु की आवश्यकता होती है सटीक संस्करण अभी तैनात किया गया है. एआई स्टैक के लिए यह मायने रखता है: एक पुराना अनुमान साइडकार या एजेंट बाइनरी अभी भी उत्तर दे सकता है 200 OK जबकि नई छवि कभी तैयार ही नहीं हुई. संस्करण बेमेल गेट विफल हो जाता है और रोलबैक ट्रिगर हो जाता है।

पर रेफ-पिन किया हुआ छल्ले (ref: release), अपेक्षित संस्करण सामने से ज्ञात नहीं हो सकता है - एक स्वस्थ तैनाती के बाद नियंत्रण विमान हो सकता है अभिलेख वह संस्करण जो किसी पूर्व-ज्ञात टैग से तुलना करने के बजाय एंडपॉइंट रिपोर्ट करता है।

5. एसीसी → उत्पाद मानव द्वार

रखना auto_promote: false पर acc मतलब सफल test → acc (या पहले के छल्ले से जंजीरदार ऑटो) स्वीकृति पर रुक जाता है. उत्पादन के लिए एक स्पष्ट प्रचार की आवश्यकता होती है - यूआई क्लिक, स्वीकृत API कॉल, या परिवर्तन-टिकट-समर्थित स्वचालन जो अभी भी जानबूझकर प्रचार को कॉल करता है।

  • परिवर्तन विंडो, अनुपालन साइन-ऑफ़, स्टेजिंग पर हितधारक डेमो, या मल्टी-ऐप "रिलीज़ ट्रेन" के लिए इसका उपयोग करें।
  • संस्करण-सत्यापित स्वास्थ्य के साथ युग्मित करें ताकि मानव इसका अनुमोदन कर सके सही निर्माण करें, बासी स्वस्थ फली नहीं।
  • दस्तावेज़ जो गेट का मालिक है (एसआरई ऑन-कॉल, उत्पाद स्वामी, रिलीज़ मैनेजर) ताकि हॉप एक आकस्मिक कतार न बन जाए।
कठिन नियम. जब तक आपके पास कोई असाधारण, ऑडिटेड कारण न हो, तब तक उत्पादन को फीड करने वाली रिंग पर ऑटो-प्रमोशन सेट न करें - और तब भी नियंत्रण विमान की ऑटो श्रृंखला के बाहर एक अलग अनुमोदन तंत्र को प्राथमिकता दें।

6. गेट स्टोरी के भाग के रूप में रोलबैक

  • तैनाती के बाद स्वास्थ्य/संस्करण विफलता → का स्वचालित रोलबैक लक्ष्य अँगूठी।
  • ऑपरेटर-संचालित पुनर्प्राप्ति के लिए मैन्युअल रोलबैक API/UI।
  • इतिहास ऑडिट के लिए बीज/प्रचार/रोलबैक सफलता और विफलता को दर्ज करता है।
  • जैसे ही कोई तैनाती भूमि पर आती है, संग्रहीत स्थिति अपडेट हो जाती है, इसलिए यदि बाद में स्वास्थ्य जांच विफल हो जाती है तो क्लस्टर सत्य खो नहीं जाता है।

बिना रोलबैक के गेट थिएटर हैं। Ring Promoter विफल गेट्स को कार्रवाई योग्य मानता है: खराब हॉप को उल्टा करें, ऑडिट ट्रेल रखें, पहले के रिंग्स को बरकरार रखें।

7. API रेखाचित्र (CI/एजेंट)

# Seed int, then promote (auto-promote may chain further)
curl -s -H "Authorization: Bearer $TOKEN" -X POST \
  -d '{"ring":"int","version":"1.4.2"}' \
  $BASE/api/apps/web-frontend/seed

curl -s -H "Authorization: Bearer $TOKEN" -X POST \
  -d '{"from_ring":"int"}' \
  $BASE/api/apps/web-frontend/promote
# non-2xx = failed promotion (target auto-rolled back)

# Explicit human-gated hop into prod (after QA on acc)
curl -s -H "Authorization: Bearer $TOKEN" -X POST \
  -d '{"from_ring":"acc"}' \
  $BASE/api/apps/web-frontend/promote

सीआई बनाता है और परीक्षण करता है; Ring Promoter CI द्वारा उत्पादित चीज़ को स्थानांतरित करता है। गैर-2xx प्रमोशन का मतलब है कि गेट विफल हो गया - curl --fail पाइपलाइन एकीकरण के लिए पर्याप्त है। एजेंटों और रिलीज़ बॉट्स को इलाज करना चाहिए acc → prod अपने स्वयं के वर्कफ़्लो में एक स्पष्ट अनुमोदन चरण के साथ एक विशेषाधिकार प्राप्त कार्रवाई के रूप में।

8. एआई प्लेटफॉर्म टीमों के लिए निहितार्थ

एआई एस्टेट अनुमान सेवाओं, एजेंट रनटाइम्स, एमसीपी गेटवे, एक्सपीआर0एक्स एक्सपीआर1एक्स और विभिन्न घड़ियों और डिप्लॉयर्स पर क्लासिक सेवाओं को बढ़ावा देते हैं (कुबेक्टल बनाम गिटहब एक्शन बनाम के8एसजॉब)। साझा अंगूठियां एक प्रचार भाषा देती हैं; गेट्स उस भाषा को ईमानदार रखते हैं:

  • संस्करण-सत्यापित स्वास्थ्य पकड़ता है "पुराना एजेंट अभी भी जवाब दे रहा है।"
  • स्वतः-प्रचार प्रत्येक हॉप पर बच्चों की देखभाल किए बिना इवल रिंग्स को गतिशील रखता है।
  • उत्पाद से पहले मानव द्वार ग्राहक-सामना करने वाले मॉडलों और उपकरणों को साइलेंट कैस्केड से बचाता है।
  • मल्टी-ऐप प्रमोशन अभी भी प्रति-ऐप स्वास्थ्य का सम्मान करता है - एक अस्वास्थ्यकर सेवा दूसरों के लिए स्किप्ड रिंग का आविष्कार नहीं करती है।

TenthMatrix का रुख: AI शिपिंग को उत्पादन सेवाओं की तरह मानें - पहले अवलोकन और प्रचार अनुशासन (यह भी देखें)। LLM अड़चनें / OTEL), फिर गति.

9. पक्ष, विपक्ष और अनुशंसित नीति

पसंद पेशेवरों दोष
स्वचालित प्रारंभिक रिंग थ्रूपुट, कम मेहनत कमजोर स्वास्थ्य अनुबंधों का प्रचार करता है
उत्पाद से पहले मानव अनुपालन, परिवर्तन नियंत्रण स्पष्ट स्वामी/एसएलए की आवश्यकता है
संस्करण द्वार नकली-हरित तैनाती को रोकता है यंत्रीकृत स्वास्थ्य समापन बिंदुओं की आवश्यकता है

अनुशंसित डिफ़ॉल्ट: स्वतः_प्रचार चालू int और test; मानव द्वार चालू acc; प्रत्येक ग्राहक-सामना वाले ऐप पर संस्करण-सत्यापित स्वास्थ्य; अंगूठियां कभी न छोड़ें; गेट विफल होने पर ऑटो-रोलबैक पर भरोसा करें।

10. आरंभ करना

  1. घड़ी youtu.be/Vs2Em0HPvoY.
  2. मिलने जाना ringpromoter.com और क्लोन github.com/bwalia/ring-promoter.
  3. को पढ़िए व्यवसाय ब्लॉग और TenthMatrix उत्पाद पृष्ठ.
  4. प्रति-रिंग कॉन्फ़िगर करें auto_promote और स्वास्थ्य संस्करण फ़ील्ड; उत्पाद को मानव-गेटेड रखें।
  5. के माध्यम से TenthMatrix से बात करें संपर्क एआई प्लेटफॉर्म के लिए सीआई/सीडी के बारे में।

द्वारा प्रकाशित TenthMatrix. अपस्ट्रीम दस्तावेज़: Ring Promoter रिपॉजिटरी में README और डिज़ाइन नोट्स।

उत्पाद साइट: https://www.ringpromoter.com/