Naar inhoud

Artikel

Ring Promoter — QA-poorten vóór productie

Technisch overzicht: promotiepoorten, auto_promote per ring, status-/versieverificatie, acc → prod menselijke poort, terugdraaien en AI-teambeleid

  • 6 min lezen
  • DevOps
  • CI/CD
  • AI
  • Kubernetes
  • Automatisering

Bekijk: QA-poorten vóór productie

Ring Promoter — QA-poorten vóór productie (YouTube)

Video: youtu.be/Vs2Em0HPvoY · Product: ringpromoter.com

Ring Promoter is het promotiecontrolevlak van TenthMatrix 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.

Ring Promoter QA Gates Before Production-omslag

Agent verteren.
  • 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_promote per ring voor vroege hop; houd de menselijke poort aan acc → 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_ring naar 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

QA-poortdiagram: automatische sprong vroeg, menselijke poort vóór productie

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. version of build.version).
  • health_version_header — koptekst zoals X-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.
Harde regel. Stel geen autopromotie in op de ring die de productie voedt, tenzij je een uitzonderlijke, gecontroleerde reden hebt – en zelfs dan de voorkeur geeft aan een afzonderlijk goedkeuringsmechanisme buiten de autoketen van het controlevlak.

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 TenthMatrix: 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

  1. Horloge youtu.be/Vs2Em0HPvoY.
  2. Bezoek ringpromoter.com en kloon github.com/bwalia/ring-promoter.
  3. Lees de zakelijke blog en TenthMatrix productpagina.
  4. Configureer per ring auto_promote en gezondheidsversievelden; houd prod door mensen beheerd.
  5. Praat met TenthMatrix via contact over CI/CD voor AI-platforms.

Gepubliceerd door TenthMatrix. Upstream-documenten: README en ontwerpnotities in de Ring Promoter-repository.

Productsite: https://www.ringpromoter.com/