Bekijk: QA-poorten vóór productie
Video: youtu.be/Vs2Em0HPvoY · Product: ringpromoter.com
Ring Promoter is het promotiecontrolevlak van Workstation voor bestelde ringen int → test → acc → prod. Dit artikel richt zich op QA- en kwaliteitspoorten in die pijplijn: waar ze zitten, hoe autopromotie interageert met menselijke poorten (vooral vóór productie), gezondheids- en versieverificatie als eersteklas poorten, terugdraaigedrag en implicaties voor AI-platformteams. Product: ringpromoter.com · bron: github.com/bwalia/ring-promoter. Companion-blog: zakelijk kort · overzicht: modern CI/CD-artikel · productpagina: /ringpromotor.
- Probleem: Alles automatisch promoten in productie is YOLO; Elke hop met de hand afzetten is te langzaam.
- Model: Gedeelde ringen; één sprong tegelijk; sla nooit over; gezondheid (+ optionele versie) bij elke hop.
- Beleid: Optioneel
auto_promoteper ring voor vroege hop; houd de menselijke poort aanacc → prod. - Mislukking: Ongezond doel of versie komt niet overeen → automatisch terugdraaien + geschiedenis.
- slogan: Promoot niet automatisch naar productie, maar verdien productie via QA-poorten.
1. Promotieproces (samenvatting)
Toepassingen declareren implementatiedoelen per ring (naamruimte, implementatie, afbeeldingsopslagplaats, status-URL, implementeerder). Ringen zelf worden gedeeld en besteld. Operators, CI of agenten bellen:
- zaad — land een versie op
int(of een geconfigureerde toegangsring). - bevorderen - verplaats de versie van
from_ringnaar de volgende alleen bellen. - terugdraaien — de vorige versie herstellen op een ring (ook automatisch bij mislukte gezondheid na implementatie).
Gelijktijdigheid: bewerkingen voor dezelfde app worden geserialiseerd (Postgres-sessie-adviesvergrendeling tussen replica's). De bewerkingscontext wordt losgekoppeld van het HTTP-verzoek en begrensd door operation_timeout, zodat een client-verbinding een promotie tijdens de vlucht of het terugdraaien ervan niet kan afbreken.
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. Waar QA-poorten zitten
| Hop | Typische poortmix | Opmerkingen |
|---|---|---|
int → test |
Gezondheid + versie; vaak auto_promote | Snelle feedback na zaad |
test → acc |
Gezondheid + versie; optioneel auto na evaluatie/rook | Versterk de gezondheidseindpunten voordat u automatisch inschakelt |
acc → prod |
Gezondheid + versie + menselijk / QA goedkeuren | Niet doen standaard automatisch gepromoveerd naar product |
Poorten zijn gelaagd. Automatische promotie omzeilt nooit de status- of versieverificatie; het elimineert alleen het wachten op een menselijke klik tussen hops wanneer de vorige landing in orde is.
3. Vlaggen automatisch promoten per ring
Automatisch promoten is dat wel optioneel en per ring. Wanneer een versie gezond op een ring terechtkomt waarvoor automatische promotie is ingeschakeld, gaat Ring Promoter door naar de volgende ring binnen dezelfde vergrendelde bewerking. Voorbeeld beleidsschets:
# 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
Ringtoewijzingen op app-niveau bevatten nog steeds details over de implementatie en de status:
# 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
Operationele tip: schakel automatisch promoten alleen in nadat u het zorgcontract voor die app vertrouwt. Een zwakke altijd-200 eindpunt plus autopromotie zal met plezier een slecht binair getal richting acceptatie marcheren.
4. Gezondheids- en versieverificatie als kwaliteitspoorten
Elke promotie controleert de bron ring gezond is voordat deze wordt ingezet, en controleert vervolgens de doel na implementatie met configureerbare nieuwe pogingen. Als het doel ongezond blijft, wordt Ring Promoter rolt terug het doel naar de vorige versie en registreert fouten in de geschiedenis.
Versie-geverifieerde status verandert een eenvoudige liveness-URL in een kwaliteitspoort:
health_version_field— JSON-veld in de gezondheidsinstantie (bijv.versionofbuild.version).health_version_header— koptekst zoalsX-App-Version.
Voor de controle is vereist dat het eindpunt de exacte versie die zojuist is geïmplementeerd. Dat is van belang voor AI-stacks: een oud zijspan- of agent-binair bestand kan nog steeds antwoorden 200 OK terwijl het nieuwe beeld nooit klaar werd. Versie-mismatch mislukt de poort en activeert een terugdraaiing.
Op opnieuw vastgezet ringen (ref: release), is de verwachte versie mogelijk niet vooraf bekend – na een gezonde inzet kan het besturingsvlak dat wel doen dossier de versie die het eindpunt rapporteert in plaats van te vergelijken met een vooraf bekende tag.
5. De acc → prod menselijke poort
Behouden auto_promote: false op acc betekent een succes test → acc (of geketende auto van eerdere ringen) stopt bij acceptatie. Productie vereist een expliciete promotie: UI-klik, goedgekeurde API-oproep of door wijzigingstickets ondersteunde automatisering die nog steeds opzettelijk promotie aanroept.
- Gebruik dit voor wijzigingsvensters, goedkeuring van de naleving, demo voor belanghebbenden over staging of 'releasetreinen' voor meerdere apps.
- Combineer met versie-geverifieerde gezondheid, zodat de mens het goedkeurt rechts gebouwd, geen muffe, gezonde peul.
- Documenteer wie de eigenaar is van de poort (SRE op afroep, producteigenaar, releasemanager), zodat de hop niet per ongeluk een wachtrij wordt.
6. Terugdraaien als onderdeel van het poortverhaal
- Status-/versiefout na implementatie → automatisch terugdraaien van de doel ring.
- Handmatig terugdraaien API/UI voor herstel door de operator.
- De geschiedenis registreert succes en falen van het begin/promotie/terugdraaien voor audit.
- Opgeslagen statusupdates zodra een implementatie landt, zodat de clusterwaarheid niet verloren gaat als een latere statuscontrole mislukt.
Poorten zonder rollback zijn theater. Ring Promoter beschouwt mislukte poorten als actiepunten: keer de bad hop terug, behoud het audittraject en laat eerdere ringen intact.
7. API-schetsen (CI / agenten)
# 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 bouwt en test; Ring Promoter verplaatst wat CI produceerde. Een niet-2xx-promotie betekent dat de poort is mislukt - curl --fail is voldoende voor pijplijnintegratie. Agenten en releasebots moeten behandelen acc → prod als een bevoorrechte actie met een expliciete goedkeuringsstap in hun eigen workflow.
8. Implicaties voor AI-platformteams
AI-domeinen promoten inferentieservices, agentruntimes, MCP-gateways, RAG APIs en klassieke services op verschillende klokken en implementaties (kubectl versus GitHub Actions versus k8sjob). Gedeelde ringen geven één promotietaal; poorten houden die taal eerlijk:
- Versie-geverifieerde status betrapt "oude agent antwoordt nog steeds."
- Automatisch promoten houdt eval-ringen in beweging zonder bij elke sprong te babysitten.
- Menselijke poort vóór prod beschermt klantgerichte modellen en gereedschappen tegen stille cascade.
- Multi-app-promotie respecteert nog steeds de gezondheid per app: de ene ongezonde service bedenkt geen overgeslagen ring voor andere.
Het standpunt van Workstation: behandel AI-scheepvaart als productiediensten – eerst observatie en promotiediscipline (zie ook LLM-knelpunten / OTEL), en dan snelheid.
9. Voor- en nadelen en aanbevolen beleid
| Keuze | Pluspunten | Nadelen |
|---|---|---|
| Automatische vroege ringen | Doorvoer, minder inspanning | Verspreidt zwakke gezondheidscontracten |
| Mens vóór prod | Compliance, veranderingsbeheer | Heeft een duidelijke eigenaar / SLA nodig |
| Versiepoorten | Stopt nep-groene implementaties | Vereist geïnstrumenteerde gezondheidseindpunten |
Aanbevolen standaard: auto_promote aan int En test; menselijke poort aan acc; versie-geverifieerde status van elke klantgerichte app; sla nooit ringen over; vertrouw op automatisch terugdraaien wanneer poorten falen.
10. Aan de slag
- Horloge youtu.be/Vs2Em0HPvoY.
- Bezoek ringpromoter.com en kloon github.com/bwalia/ring-promoter.
- Lees de zakelijke blog en Workstation productpagina.
- Configureer per ring
auto_promoteen gezondheidsversievelden; houd prod door mensen beheerd. - Praat met Workstation via contact over CI/CD voor AI-platforms.
Gepubliceerd door Workstation. Upstream-documenten: README en ontwerpnotities in de Ring Promoter-repository.
Productsite: https://www.ringpromoter.com/