Inginerie

Procesul de gestionare a lansărilor, în șapte pași

8 min de citit

Un proces de gestionare a lansărilor este setul de pași care duce o schimbare de la „integrată” la „rulând în producție și explicată oamenilor pe care îi afectează”. Pentru o echipă care livrează des, se reduce la șapte pași: planificați sfera, izolați schimbarea, construiți și testați, aprobați, livrați și verificați, comunicați și faceți o retrospectivă. Fiecare pas are nevoie de un responsabil numit și de un criteriu de ieșire, altfel încetează pe tăcute să mai aibă loc.

Ghidul presupune o echipă de 5 până la 50 de ingineri care livrează săptămânal sau zilnic și vor ca procesul să nu le stea în cale.

PasResponsabilCriterii de ieșire
1. Planificați sferaLead de produs sau tehnicLista schimbărilor din această lansare e scrisă, iar tot ce e riscant e marcat
2. Ramură sau flagInginerul care deține schimbareaMunca e pe o ramură de scurtă durată sau în spatele unui flag, deci main rămâne livrabil
3. Construiți și testațiCI, cu autorul de gardă pentru eșecuriPipeline verde pe exact commit-ul care se livrează
4. AprobațiRevizor, plus release manager pentru schimbările riscanteRevizuire făcută, cale de rollback numită, decizia go sau no-go înregistrată
5. Livrați și verificațiRelease manager sau inginerul de gardăLivrat, verificările de fum trec, rata de erori și latența se potrivesc cu valorile de dinainte
6. ComunicațiCel care înțelege schimbarea, editat de cineva care nu o înțelegeRelease notes publicate unde le citesc utilizatorii, suportul și vânzările informate
7. RetrospectivăRelease managerMetricile citite, tot ce a mers prost are un responsabil și o remediere

Ce este procesul de gestionare a lansărilor?

Este calea repetabilă pe care o urmează o schimbare ca să ajungă la utilizatori: sferă, construire, testare, aprobare, livrare, verificare, anunț și privire înapoi. Rostul scrierii ei e ca fiecare lansare să urmeze aceeași cale, astfel încât cineva aflat în concediu, un angajat nou sau un inginer de gardă la ora 2 noaptea s-o poată rula fără să întrebe pe nimeni cum funcționează.

Care sunt tipurile de gestionare a lansărilor?

Există trei tipuri practice: livrarea continuă, lansările programate și gestionarea reglementată a schimbărilor. Diferă prin cât se întâmplă înainte de o lansare și cât e automatizat. Livrarea continuă trimite fiecare schimbare integrată, lansările programate grupează schimbările într-un tren, iar gestionarea reglementată a schimbărilor adaugă aprobare formală și o urmă de audit.

Livrare continuăLansări programateGestionare reglementată / ITIL
Unitatea de lansareUn pull request integratUn lot, săptămânal sau la două săptămâniO cerere de schimbare
Pasul de sferăImplicit, integrarea e sferaȘedință de planificare a lansăriiFișă de schimbare cu evaluarea riscului
AprobareRevizuire de cod plus verificări automateRelease manager aprobă lotulComitet consultativ sau aprobator delegat
Controlul risculuiFeature flags, canary, rollback rapidStaging de probă, release candidatePlan de revenire documentat, fereastră de mentenanță
Cadență tipicăMulte pe ziSăptămânal până la lunarStabilită de calendarul schimbărilor
Punct slabNimeni nu le spune utilizatorilor ce s-a schimbatLoturile mari ascund schimbarea care a stricat cevaTimpul procesului depășește schimbarea în sine

Majoritatea echipelor sunt un amestec. Un produs SaaS poate livra continuu, în timp ce aplicația lui mobilă pleacă într-un tren săptămânal, iar singurul serviciu de plăți care interesează auditorii urmează o fișă formală de schimbare. Alegeți tipul pe serviciu, nu pe companie. Acolo unde schimbările sunt expuse treptat, lansarea și anunțul devin evenimente separate, caz tratat în note de lansare pentru feature flag-uri.

Care sunt responsabilitățile unui release manager?

Un release manager deține calea pe care o urmează o schimbare până în producție. Ține calendarul lansărilor, hotărăște dacă o schimbare e gata, rulează sau supraveghează livrarea, ia decizia de rollback, se asigură că utilizatorii sunt informați și conduce retrospectiva de după.

Înainte de lansare, confirmă sfera și verifică dacă fiecare schimbare riscantă are o cale de rollback. În timpul ei, rulează lista de verificare a livrării, urmărește primele minute de metrici din producție și cere un rollback din timp. După aceea confirmă că notele au plecat și notează ce trebuie reparat în proces.

Într-o echipă mică, rotiți rolul săptămânal și scrieți lista de verificare astfel încât nimeni să nu aibă nevoie de cunoștințe nescrise. Un monorepo cu multe pachete lansate independent are de obicei nevoie de un responsabil de lansare pe pachet, altfel rolul devine un blocaj.

Care sunt indicatorii cheie pentru gestionarea lansărilor?

Urmăriți metricile DORA de livrare software și adăugați una proprie: cât durează până sunt informați utilizatorii. Cercetarea DORA identifică cinci metrici, împărțite în productivitate (timpul de livrare al unei schimbări, frecvența livrărilor, timpul de recuperare după o livrare eșuată) și instabilitate (rata de eșec a schimbărilor, rata de reluare a livrărilor).

Ghidul DORA le definește pe înțeles (dora.dev, software delivery metrics):

IndicatorCe măsoarăLa ce să fiți atenți
Timpul de livrare al unei schimbăriTimpul de la commit în controlul versiunilor până la livrarea în producțieUn număr în creștere înseamnă de obicei cozi în revizuire sau aprobare
Frecvența livrărilorCât de des livrați sau timpul dintre livrăriO frecvență în scădere înseamnă că loturile cresc
Timpul de recuperare după o livrare eșuatăTimpul de recuperare după o livrare care cere intervenție imediatăProblemele de rollback și alertare apar aici
Rata de eșec a schimbărilorPonderea livrărilor care cer rollback sau hotfixCrește când loturile sunt prea mari sau testarea e subțire
Rata de reluare a livrărilorPonderea livrărilor neplanificate, cauzate de un incident în producțieSemn că remedierile se livrează mai repede decât lecțiile
Timpul până sunt informați utilizatoriiMinute de la livrarea în producție până la o notă publicată, orientată spre utilizatorO măsurați voi, niciun cadru nu o oferă

Materialele mai vechi enumeră patru metrici cheie și numesc recuperarea „time to restore”. Ghidul actual le folosește pe cele cinci de mai sus.

Același ghid avertizează să nu le tratați ca ținte. Fixarea unui obiectiv de genul „totul se livrează de mai multe ori pe zi până la sfârșitul anului” invită echipele să trișeze cu cifrele, iar metricile sunt făcute să fie citite pe aplicație sau serviciu, nu amestecate la nivelul companiei. Sfatul lui practic pentru a le îmbunătăți pe toate este să micșorați fiecare schimbare, pentru că schimbările mici sunt mai ușor de revizuit, de trecut prin pipeline și de recuperat.

Cum se încadrează comunicarea lansării în procesul de gestionare a lansărilor?

Este pasul șase și are un responsabil și un criteriu de ieșire ca oricare altul: note publicate unde le citesc utilizatorii și echipele interne informate. Echipele îl sar cel mai des, pentru că instrumentele de livrare raportează succes în clipa în care codul e live.

Cea mai ieftină cale de a ține pasul acesta la timp e să scrieți intrarea când se integrează schimbarea, nu când se livrează lansarea. Pull request-ul conține deja titlul, autorul, issue-ul legat și contextul. O ciornă construită din el se editează, nu se scrie din memorie o săptămână mai târziu. Asta e ideea din spatele automatizării changelog-ului: derivați o ciornă la integrare, o țineți până o aprobă un om, apoi o publicați peste tot dintr-o singură sursă. Changeloop lucrează așa, redactând intrări din pull request-urile integrate cu AI și ținându-le pentru aprobare înainte să se publice ceva.

Merită planificate din timp două variante. Suportul și vânzările au nevoie de altă notă decât clienții, pentru asta există notele de lansare interne. O lansare provocată de un incident nu are timp pentru bucla normală de redactare, așa că țineți la îndemână un șablon scurt, descris în note de lansare de urgență. Șablonul de release notes vă dă o formă de pornire pentru versiunea destinată clienților.

Cum păstrați procesul ușor?

Automatizați fiecare criteriu de ieșire pe care îl poate verifica o mașină și lăsați oamenilor deciziile de judecată. Un pipeline verde, un marcaj de livrare pe dashboard-uri și o intrare de changelog-ciornă pentru fiecare pull request integrat se pot verifica. Dacă un plan de rollback e credibil sau dacă notele au sens pentru un client, are nevoie de un om.

Ca să testați procesul, alegeți o lansare din luna trecută și întrebați dacă cineva din afara echipei ar putea spune, doar din documentele scrise, ce s-a livrat, cine a aprobat, cum s-a verificat și când au fost informați utilizatorii. Orice lacună e următoarea voastră îmbunătățire.

FAQ

Care e diferența dintre gestionarea lansărilor și gestionarea schimbărilor? Gestionarea lansărilor se ocupă ca un set de schimbări să fie construit, testat, livrat și anunțat. Gestionarea schimbărilor, în sens ITIL, e procesul de aprobare și de risc din jurul fiecărei schimbări. Echipele care livrează des îmbină aprobarea cu revizuirea de cod și verificările automate.

Cât de des ar trebui să lansăm? Atât de des cât permit testele și calea voastră de rollback, ceea ce pentru multe echipe web înseamnă zilnic sau mai des. Sfatul DORA e să micșorați fiecare schimbare, pentru că schimbările mici sunt mai ușor de revizuit și de recuperat.

Au echipele mici nevoie de un release manager? Au nevoie de responsabilități, nu neapărat de titlu. Rotiți rolul între ingineri, dați celui aflat la rând o listă de verificare scrisă și asigurați-vă că cineva deține fiecare dintre cei șapte pași.

Ce ar trebui să includă o listă de verificare a lansării? Sfera confirmată, pipeline verde pe commit-ul care se livrează, cale de rollback numită, aprobare înregistrată, verificări de fum după livrare, metrici comparate cu valorile de bază, release notes publicate, suportul informat și o retrospectivă programată. Păstrați-o la o singură pagină.


Afirmațiile tehnice din acest articol nu au fost verificate independent. Dacă ceva nu e corect, spune-ne și vom corecta.

Pe changeloop: Documentație pentru dezvoltatori, Șablon note de lansare

changeloop
Echipa care construiește un changelog care închide bucla. Utilizatorii cer ceva, echipa ta livrează, cel care a cerut află.