ข้ามไปยังเนื้อหา

บทความ

Ring Promoter — ประตู QA ก่อนการผลิต

บทสรุปด้านเทคนิค: ประตูเลื่อนระดับ, auto_promote ต่อวงแหวน, การตรวจสอบความสมบูรณ์/เวอร์ชัน, ประตูมนุษย์ acc→prod, การย้อนกลับ และนโยบายของทีม AI

  • อ่าน 3 นาที
  • DevOps
  • CI/CD
  • AI
  • Kubernetes
  • ระบบอัตโนมัติ

ดู: ประตู QA ก่อนการผลิต

Ring Promoter — ประตู QA ก่อนการผลิต (YouTube)

วิดีโอ: youtu.be/Vs2Em0HPvoY · ผลิตภัณฑ์: ringpromoter.com

Ring Promoter คือระนาบควบคุมการส่งเสริมการขายของ TenthMatrix สำหรับแหวนที่สั่งซื้อ int → test → acc → prod. บทความนี้เน้นไปที่ QA และประตูคุณภาพในไปป์ไลน์นั้น: ตำแหน่งที่พวกเขานั่ง วิธีโต้ตอบการโปรโมตอัตโนมัติกับ Human Gate (โดยเฉพาะก่อน Prod) ความสมบูรณ์และการตรวจสอบเวอร์ชันในฐานะเกตระดับเฟิร์สคลาส พฤติกรรมการย้อนกลับ และผลกระทบสำหรับทีมแพลตฟอร์ม AI ผลิตภัณฑ์: ringpromoter.com · แหล่งที่มา: github.com/bwalia/ring-promoter. บล็อกสหาย: สรุปธุรกิจ · ภาพรวม: บทความ CI/CD สมัยใหม่ · หน้าผลิตภัณฑ์: /ring-โปรโมเตอร์.

ครอบคลุม Ring Promoter QA Gates ก่อนการผลิต

ตัวแทนสรุป
  • ปัญหา: การโปรโมตทุกอย่างอัตโนมัติเป็นผลิตภัณฑ์คือ YOLO; การเกตทุกการกระโดดด้วยมือนั้นช้าเกินไป
  • แบบอย่าง: แหวนที่ใช้ร่วมกัน กระโดดครั้งละครั้ง; ไม่เคยข้าม; สุขภาพ (+ เวอร์ชันเสริม) ในทุก ๆ ฮอป
  • นโยบาย: ไม่จำเป็น auto_promote ต่อวงสำหรับการกระโดดต้น ให้ประตูมนุษย์เปิดอยู่ acc → prod.
  • ความล้มเหลว: เป้าหมายที่ไม่ดีหรือเวอร์ชันไม่ตรงกัน → การย้อนกลับอัตโนมัติ + ประวัติ
  • สโลแกน: อย่าโปรโมตอัตโนมัติเป็นผลิตภัณฑ์ — รับการผลิตผ่านประตู QA

1. ขั้นตอนโปรโมชั่น (สรุป)

แอปพลิเคชันประกาศเป้าหมายการปรับใช้แบบต่อริง (เนมสเปซ, การปรับใช้, ที่เก็บรูปภาพ, URL ความสมบูรณ์, ตัวปรับใช้) แหวนมีการแบ่งปันและสั่งซื้อ ผู้ปฏิบัติงาน, CI หรือตัวแทนโทร:

  • เมล็ดพันธุ์ — ลงจอดเวอร์ชันบน 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 ตั้งอยู่

แผนภาพเกต QA: กระโดดอัตโนมัติก่อน เกตมนุษย์ก่อนการผลิต

กระโดด การผสมประตูทั่วไป หมายเหตุ
int → test สุขภาพ + เวอร์ชัน; บ่อยครั้ง auto_promote การตอบสนองอย่างรวดเร็วหลังการเพาะเมล็ด
test → acc สุขภาพ + เวอร์ชัน; ตัวเลือกอัตโนมัติหลัง evals/ควัน เสริมสร้างจุดสิ้นสุดด้านสุขภาพก่อนเปิดใช้งานอัตโนมัติ
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 endpoint plus auto-promote จะส่งไบนารี่ที่ไม่ดีไปสู่การยอมรับอย่างมีความสุข

4. การตรวจสอบความสมบูรณ์และเวอร์ชันเป็นประตูคุณภาพ

ทุกการโปรโมตจะตรวจสอบ แหล่งที่มา ring แข็งแรงดีก่อนใช้งาน จากนั้นจึงตรวจสอบ เป้า หลังจากปรับใช้ด้วยการลองอีกครั้งที่กำหนดค่าได้ หากเป้าหมายยังคงไม่แข็งแรง Ring Promoter ย้อนกลับ เป้าหมายเป็นเวอร์ชันก่อนหน้าและบันทึกความล้มเหลวในประวัติศาสตร์

ความสมบูรณ์ที่ตรวจสอบเวอร์ชันแล้ว เปลี่ยน URL ความมีชีวิตชีวาธรรมดาให้เป็นประตูคุณภาพ:

  • health_version_field — ฟิลด์ JSON ในเนื้อหาด้านสุขภาพ (เช่น version หรือ build.version).
  • health_version_header — ส่วนหัวเช่น X-App-Version.

การตรวจสอบต้องใช้จุดสิ้นสุดในการรายงาน เวอร์ชันที่แน่นอนเพิ่งปรับใช้. นั่นสำคัญสำหรับสแต็ค AI: เทียมการอนุมานแบบเก่าหรือไบนารีของเอเจนต์ยังคงสามารถตอบได้ 200 OK ในขณะที่ภาพใหม่ไม่เคยพร้อม เวอร์ชันที่ไม่ตรงกันทำให้เกตล้มเหลวและทำให้เกิดการย้อนกลับ

บน ปักหมุดการอ้างอิงแล้ว แหวน (ref: release) เวอร์ชันที่คาดหวังอาจไม่เป็นที่รู้จักล่วงหน้า — หลังจากการปรับใช้ที่ดีแล้ว ระนาบควบคุมสามารถทำได้ บันทึก เวอร์ชันที่ปลายทางรายงานแทนที่จะเปรียบเทียบกับแท็กที่รู้จักล่วงหน้า

5. ประตู acc → prod human

การเก็บรักษา auto_promote: false บน acc หมายถึงความสำเร็จ test → acc (หรือถูกล่ามโซ่อัตโนมัติจากวงแหวนก่อนหน้านี้) หยุดอยู่ที่การยอมรับ. การผลิตต้องมีการโปรโมตอย่างชัดเจน — การคลิก UI, การเรียก API ที่ได้รับการอนุมัติ หรือระบบอัตโนมัติที่สำรองตั๋วการเปลี่ยนแปลงที่ยังคงการโปรโมตอย่างจงใจ

  • ใช้สิ่งนี้สำหรับกรอบเวลาการเปลี่ยนแปลง การลงนามในการปฏิบัติตามข้อกำหนด การสาธิตผู้มีส่วนได้ส่วนเสียในการจัดเตรียม หรือ "แนวทางการเปิดตัว" หลายแอป
  • จับคู่กับสุขภาพที่ได้รับการตรวจสอบเวอร์ชันเพื่อให้มนุษย์อนุมัติ ขวา สร้างไม่ใช่ฝักที่แข็งแรงเก่า
  • เอกสารที่เป็นเจ้าของเกต (SRE on-call, เจ้าของผลิตภัณฑ์, ผู้จัดการฝ่ายปล่อย) เพื่อให้การกระโดดไม่กลายเป็นคิวโดยไม่ได้ตั้งใจ
กฎยาก. อย่าตั้งค่าการเลื่อนระดับอัตโนมัติบนวงแหวนที่ป้อนการผลิต เว้นแต่คุณจะมีเหตุผลพิเศษที่ได้รับการตรวจสอบแล้ว — และถึงกระนั้นก็เลือกใช้กลไกการอนุมัติแยกต่างหากนอกห่วงโซ่อัตโนมัติของเครื่องบินควบคุม

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

CI สร้างและทดสอบ Ring Promoter ย้ายสิ่งที่ CI ผลิต การเลื่อนระดับที่ไม่ใช่ 2xx หมายความว่าประตูล้มเหลว — curl --fail ก็เพียงพอแล้วสำหรับการรวมไปป์ไลน์ เจ้าหน้าที่และรีลีสบอทควรปฏิบัติต่อ acc → prod เป็นการดำเนินการพิเศษที่มีขั้นตอนการอนุมัติที่ชัดเจนในขั้นตอนการทำงานของตนเอง

8. ผลกระทบต่อทีมแพลตฟอร์ม AI

อสังหาริมทรัพย์ AI ส่งเสริมบริการอนุมาน, รันไทม์ของตัวแทน, เกตเวย์ MCP, RAG API และบริการแบบคลาสสิกบนนาฬิกาและผู้ปรับใช้ที่แตกต่างกัน (kubectl กับ GitHub Actions กับ k8sjob) วงแหวนที่ใช้ร่วมกันมีภาษาสำหรับการโปรโมตเพียงภาษาเดียว ประตูรักษาภาษานั้นให้ซื่อสัตย์:

  • ความสมบูรณ์ที่ตรวจสอบเวอร์ชันแล้ว จับได้ว่า “ตัวแทนเก่ายังตอบอยู่”
  • โปรโมตอัตโนมัติ ช่วยให้วงแหวน Eval เคลื่อนที่โดยไม่ต้องดูแลทุกครั้งที่กระโดด
  • ประตูมนุษย์ก่อนผลิต ปกป้องโมเดลและเครื่องมือที่ต้องพบปะกับลูกค้าจากน้ำตกที่เงียบงัน
  • โปรโมทหลายแอพ ยังคงคำนึงถึงสุขภาพต่อแอป — บริการที่ไม่ดีต่อสุขภาพอย่างหนึ่งไม่ได้สร้างวงแหวนที่ข้ามให้กับผู้อื่น

จุดยืนของ TenthMatrix: ปฏิบัติต่อการจัดส่งแบบ AI เช่นเดียวกับบริการการผลิต — วินัยในการสังเกตและการส่งเสริมการขายเป็นอันดับแรก (ดูเพิ่มเติม ปัญหาคอขวด LLM / OTEL) จากนั้นความเร็ว

9. ข้อดี ข้อเสีย และนโยบายที่แนะนำ

ทางเลือก ข้อดี ข้อเสีย
เสียงเรียกเข้าอัตโนมัติ ปริมาณงาน งานหนักน้อยลง เผยแพร่สัญญาสุขภาพที่อ่อนแอ
มนุษย์ก่อนผลิตภัณฑ์ การปฏิบัติตามการควบคุมการเปลี่ยนแปลง ต้องการเจ้าของที่ชัดเจน / SLA
ประตูเวอร์ชัน หยุดการปรับใช้สีเขียวปลอม ต้องมีอุปกรณ์ปลายทางด้านสุขภาพ

ค่าเริ่มต้นที่แนะนำ: เปิด auto_promote int และ test; ประตูมนุษย์เปิดอยู่ acc; ความสมบูรณ์ที่ตรวจสอบเวอร์ชันแล้วในทุกแอปที่ติดต่อกับลูกค้า อย่าข้ามวงแหวน พึ่งพาการย้อนกลับอัตโนมัติเมื่อประตูล้มเหลว

10. การเริ่มต้นใช้งาน

  1. ดู youtu.be/Vs2Em0HPvoY.
  2. เยี่ยม ringpromoter.com และโคลน github.com/bwalia/ring-promoter.
  3. อ่าน บล็อกธุรกิจ และ TenthMatrix หน้าผลิตภัณฑ์.
  4. กำหนดค่าต่อวงแหวน auto_promote และช่องเวอร์ชันสุขภาพ เก็บผลิตภัณฑ์ที่มีรั้วรอบขอบชิดมนุษย์
  5. พูดคุยกับ TenthMatrix ผ่านทาง ติดต่อ เกี่ยวกับ CI/CD สำหรับแพลตฟอร์ม AI

จัดพิมพ์โดย TenthMatrix. เอกสารอัปสตรีม: README และบันทึกการออกแบบในพื้นที่เก็บข้อมูล Ring Promoter

เว็บไซต์ผลิตภัณฑ์: https://www.ringpromoter.com/