Instalarea conductelor și a comunicatelor
1) De ce aveți nevoie de dirijare
Instalarea conductei este o cale de artefact standardizată de la PR la producție cu verificări de calitate și siguranță "în mod implicit. "Obiective:- reproducerea asamblării și eliberării;
- feedback rapid și previzibil;
- minimizarea riscului (rulare progresivă, phicheflags, rollback);
- conformitatea și controlul schimbării.
2) Fluxul de alimentare de referință (nivel înalt)
1. PR → verificări automate (scame, unitate, SAST, licențe).
2. Construiți → imagine/pachet determinist, semnătură și SBOM.
3. Test pe Ephemeral → previzualizare-mediu per-PR.
- depunerea imaginii;
- contract-, integrare-, e2e-teste;
- DAST/IAST, regresii, încărcarea fumului;
- manual UAT/QA, dacă este necesar.
- 5. Release Candidate (RC) → congela fereastra → Prod (canar/albastru-verde).
- 6. Verificări post-implementare și auto-post la bugetul SLO/eroare.
- 7. Runbook/Changelog → eliberarea de închidere și retrospectivă.
3) Șablon standardizat de conducte YAML (viteza obturatorului)
yaml
.ci/release.pipeline.yml stages: [verify, build, test, stage, approve, release, post]
verify:
- run: make lint test:unit sbom sast sca build:
- run:
docker build -t registry/app:$GIT_SHA.
cosign sign registry/app:$GIT_SHA oras push registry/sbom:$GIT_SHA sbom.json test:
- run: make test:contract test:integration
- run: make deploy:preview && make test:e2e stage:
- run: make deploy:staging IMAGE=registry/app:$GIT_SHA
- run: make test:e2e:staging && make dast approve:
manual gate: CAB/QA lead
- type: manual required_roles: [release_manager, qa_lead]
release:
- run: make release:canary TRAFFIC=5%
- run: make release:progressive STEPS="5,25,50,100"
post:
- run: make verify:slo && make notify && make create:changelog
4) Porți și criterii de pregătire (Porți de calitate)
Cod și securitate: scame, acoperire, SAST/SCA, politică de dependență, fără critică/ridicată.
Contracte: compatibilitatea schemelor (API/evenimente), verificări Pact/Buf.
Încercări: unitate/integrare/e2e p-prag, stabilitate (fulg-rate).
Încărcați fumul: p95/p99 în buget, fără degradare.
DAST/IAST: nu există constatări critice, scenarii de testare a stiloului injector (pen) pentru căi sensibile.
Observație: tablouri de bord/alerte „ca cod” actualizate, cărți de alergare atașate.
CAB/UAT: confirmare în ferestrele de lansare (dacă este necesar de reglementare/afaceri).
5) Strategii de lansare
Canare - o creștere treptată a ponderii traficului (5% → 25% → 50% → 100%), roll-forward/rollback automat pentru SLO și anomalii.
Blue-Green - medii paralele; comutator instantaneu, rollback simplu.
Feature Flags - includerea logică a caracteristicilor fără redistribuire; „lansare întunecată” și capacitatea A/B.
Shadow/Trafic Mirroring - trafic pasiv rula la noua versiune fără a afecta utilizatorii.
Desfășurări de inele - valuri de regiune/chiriaș.
6) Rollbacks și politica de securitate de presă
Auto-rollback prin declanșatoare: creșterea ratei de eroare, p95/TTFB peste prag, creșterea 5xx/timeout, DLQ spike.
Rollback manual: comanda '/rollback <service> <sha> 'în chatbot, un buton în consola de eliberare.
Înghețați ferestrele: eliberarea la evenimente critice (turnee/meciuri de vârf) este interzisă.
Changelog & Release Notes: generație din PR, etichete SemVer, componente, migrații.
7) Migrarea bazelor de date și compatibilitatea
Extindeți → migrați → contract:1. Adăugați câmpuri/indici compatibili
2. Implementarea aplicațiilor (citește/scrie la ambele scheme);
3. migrarea datelor cu locuri de muncă de fond;
4. șterge vechiul.
Schemele sunt migrații versionate, idempotente, uscate în stadializare.
Protejați SQL distructiv: necesită pavilion/aprobare, backup-uri automate și plan-check.
8) Ficheflags și activare progresivă
Steaguri operaționale separate (pentru funcționarea în siguranță) și steaguri de produs.
Includerea pe audiență: procent, geo, chiriaș, rol.
Indicatori de pavilion: impact de conversie, latență, erori.
În caz de probleme - convoluția steagului este mai rapidă decât rollback.
9) Observabilitatea ca parte a eliberării
Urme: end-to-end "trace _ id' de la gateway la DB/cozi; compararea versiunilor vechi/noi.
Valori: p50/p95/p99, rata de eroare, RPS, saturație, DLQ, retray, Time-to-Wallet/Business KPI.
Jurnale: structurat, PII mascare, "cerere _ id' corelație.
Alerte: buget SLO, pagini urgente de gardă, eliberare auto-convoluție.
10) Securitatea lanțului de aprovizionare
SBOM pentru fiecare construcție, stocare și legare la eticheta de lansare.
Semnături de imagine (cosign), verificare pe un cluster (admitere politică).
Atestat SLSA: origine artefact dovedibilă.
Policy-as-Code (OPA/Conftest): refuzul implicit pentru PR-urile de infrastructură.
Secretele: numai KMS, jetoane de scurtă durată, rotații de conducte.
11) Controlul schimbării și procesele
RFC → CRQ → CAB: suntem de acord asupra schimbării documentate a comportamentului/contractelor în avans.
Calendar de lansare: Ferestre vizibile după produs/regiune/echipă.
Runbooks: pentru fiecare componentă - proceduri pentru activarea/rularea înapoi/diagnosticare.
Postmortem/Retro: după lansări semnificative - analiză și acțiune.
12) Profiluri de testare în stadiu
API/Events-Blocks modificări incompatibile.
Integration/e2e: scenarii end-to-end „depozit”, „KYC”, „retragere”.
Fumul de încărcare: vârfuri reprezentative; monitorizăm limitele resurselor.
Scenarii de haos: deconectarea furnizorului, creșterea latenței, flapping-uri de rețea.
Monitorizarea sintetică: tranzacțiile „trial” pe un program.
13) Makefile exemplu de obiective de eliberare (fragment)
makefile release: verify build test stage approve prod post verify:
@make lint test:unit sbom sast sca build:
docker build -t $(IMG).
cosign sign $(IMG)
test:
@make test:contract test:integration deploy:preview test:e2e stage:
kubectl apply -k deploy/staging approve:
@echo "Waiting for QA/CAB approval..."
prod:
make release:canary TRAFFIC="5 25 50 100"
post:
@make verify:slo notify changelog
14) Roluri și responsabilități
Dev/Team: calitatea codului, teste, migrații, cărți de alergare.
QA: scenarii UAT/regresie, controlul calității pe porți.
SRE/Platform: fiabilitate conducte, observabilitate, politici.
Release Manager: calendar, ferestre, CAB, soluție finală.
Securitate: SAST/DAST/SCA, lanț de aprovizionare, politică secretă.
15) Modelul de maturitate de eliberare
1. De bază - controale manuale, versiuni rare, rollback-uri sunt dificile.
2. Avansat - CI/CD standardizat, contur de stadializare, canar/albastru-verde, versiuni frecvente.
3. Expert - livrare progresivă de către chiriași/regiuni, caracteristică flags-first, policy-as-code, SLO auto-încărcare, trasabilitate completă și SLSA.
16) Foaia de parcurs privind implementarea
M0-M1 (MVP): șablon de conducte, build + sign + SBOM, implementare în stadiu, teste de bază și porți.
M2-M3: canar/albastru-verde, previzualizare per-PR, teste de contract, DAST, controale sintetice.
M4-M6: feature flags platform, shadow traffic, policy-as-code, auto-rollback, release calendar + CAB-workflow.
M6 +: ring-implementări pe regiuni, certificare SLSA și admitere strictă, automatizare completă a runbooks.
17) Lista de verificare înainte de lansare
- Imagine semnat, SBOM încărcat și eliberarea legat.
- Contractele sunt compatibile, testele sunt verzi, e2e transmise în stadiu.
- Migrații verificate (uscat-run), gata de backup, planul rollback descris.
- Tablouri de bord/alerte au fost actualizate, porțile SLO sunt active.
- Runbook și Changelog publicat, ferestre de lansare a fost de acord.
- Steagurile caracteristice sunt configurate pentru activare progresivă.
- Restricțiile de congelare sunt îndeplinite, de gardă este gata.
Scurtă concluzie
O conductă de stadializare bine concepută transformă eliberările într-o rutină ușor de gestionat: șabloane uniforme, porți de calitate clare, un lanț de aprovizionare sigur, laminarea progresivă și observabilitatea reduc riscul și reduc timpul de schimbare a producției, menținând în același timp controlul asupra calității și măsurătorilor de afaceri.