ดู: ประตู QA ก่อนการผลิต
วิดีโอ: youtu.be/Vs2Em0HPvoY · ผลิตภัณฑ์: ringpromoter.com
Ring Promoter คือระนาบควบคุมการส่งเสริมการขายของ Workstation สำหรับแหวนที่สั่งซื้อ int → test → acc → prod. บทความนี้เน้นไปที่ QA และประตูคุณภาพในไปป์ไลน์นั้น: ตำแหน่งที่พวกเขานั่ง วิธีโต้ตอบการโปรโมตอัตโนมัติกับ Human Gate (โดยเฉพาะก่อน Prod) ความสมบูรณ์และการตรวจสอบเวอร์ชันในฐานะเกตระดับเฟิร์สคลาส พฤติกรรมการย้อนกลับ และผลกระทบสำหรับทีมแพลตฟอร์ม AI ผลิตภัณฑ์: ringpromoter.com · แหล่งที่มา: github.com/bwalia/ring-promoter. บล็อกสหาย: สรุปธุรกิจ · ภาพรวม: บทความ CI/CD สมัยใหม่ · หน้าผลิตภัณฑ์: /ring-โปรโมเตอร์.
- ปัญหา: การโปรโมตทุกอย่างอัตโนมัติเป็นผลิตภัณฑ์คือ 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 ตั้งอยู่
| กระโดด | การผสมประตูทั่วไป | หมายเหตุ |
|---|---|---|
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 เคลื่อนที่โดยไม่ต้องดูแลทุกครั้งที่กระโดด
- ประตูมนุษย์ก่อนผลิต ปกป้องโมเดลและเครื่องมือที่ต้องพบปะกับลูกค้าจากน้ำตกที่เงียบงัน
- โปรโมทหลายแอพ ยังคงคำนึงถึงสุขภาพต่อแอป — บริการที่ไม่ดีต่อสุขภาพอย่างหนึ่งไม่ได้สร้างวงแหวนที่ข้ามให้กับผู้อื่น
จุดยืนของ Workstation: ปฏิบัติต่อการจัดส่งแบบ AI เช่นเดียวกับบริการการผลิต — วินัยในการสังเกตและการส่งเสริมการขายเป็นอันดับแรก (ดูเพิ่มเติม ปัญหาคอขวด LLM / OTEL) จากนั้นความเร็ว
9. ข้อดี ข้อเสีย และนโยบายที่แนะนำ
| ทางเลือก | ข้อดี | ข้อเสีย |
|---|---|---|
| เสียงเรียกเข้าอัตโนมัติ | ปริมาณงาน งานหนักน้อยลง | เผยแพร่สัญญาสุขภาพที่อ่อนแอ |
| มนุษย์ก่อนผลิตภัณฑ์ | การปฏิบัติตามการควบคุมการเปลี่ยนแปลง | ต้องการเจ้าของที่ชัดเจน / SLA |
| ประตูเวอร์ชัน | หยุดการปรับใช้สีเขียวปลอม | ต้องมีอุปกรณ์ปลายทางด้านสุขภาพ |
ค่าเริ่มต้นที่แนะนำ: เปิด auto_promote int และ test; ประตูมนุษย์เปิดอยู่ acc; ความสมบูรณ์ที่ตรวจสอบเวอร์ชันแล้วในทุกแอปที่ติดต่อกับลูกค้า อย่าข้ามวงแหวน พึ่งพาการย้อนกลับอัตโนมัติเมื่อประตูล้มเหลว
10. การเริ่มต้นใช้งาน
- ดู youtu.be/Vs2Em0HPvoY.
- เยี่ยม ringpromoter.com และโคลน github.com/bwalia/ring-promoter.
- อ่าน บล็อกธุรกิจ และ Workstation หน้าผลิตภัณฑ์.
- กำหนดค่าต่อวงแหวน
auto_promoteและช่องเวอร์ชันสุขภาพ เก็บผลิตภัณฑ์ที่มีรั้วรอบขอบชิดมนุษย์ - พูดคุยกับ Workstation ผ่านทาง ติดต่อ เกี่ยวกับ CI/CD สำหรับแพลตฟอร์ม AI
จัดพิมพ์โดย Workstation. เอกสารอัปสตรีม: README และบันทึกการออกแบบในพื้นที่เก็บข้อมูล Ring Promoter
เว็บไซต์ผลิตภัณฑ์: https://www.ringpromoter.com/