Desfășurarea Canary și rolul său în DevOps explicate

Implementarea Canary este o tehnică de dezvoltare și implementare a software-ului care execută o lansare treptată de noi funcții sau actualizări pentru un subset mic de utilizatori înainte de a fi difuzate la întreaga bază de utilizatori.

Această abordare implică crearea unei noi versiuni a software-ului și implementarea acesteia pentru un grup mic de utilizatori, menținând în același timp să ruleze versiunea veche pentru restul utilizatorilor. Echipa de dezvoltare monitorizează îndeaproape noua versiune pentru a se asigura că este stabilă și funcționează conform așteptărilor.

Dacă totul merge bine, noua versiune se lansează la mai mulți utilizatori până când ajunge în cele din urmă la întreaga bază de utilizatori. În acest fel, echipa de proiect minimizează riscul de a introduce erori sau alte probleme care ar putea afecta toți utilizatorii simultan.

Scopul implementării Canary este de a reduce riscul introducerii de noi funcții pentru o bază mare de utilizatori. Prin lansarea treptată a modificărilor utilizatorilor, dezvoltatorii pot monitoriza performanța și stabilitatea noii versiuni. Ei fac toate ajustările necesare înainte de a fi implementate în întreaga bază de utilizatori. Prin urmare, trecerea la noua versiune se face mult mai lină.

Principii cheie și beneficii

Sursa: martinfowler.com

Principiile cheie ale implementării Canary includ următoarele:

  • Implementați mai întâi noua versiune la un subset mic de utilizatori, apoi implementați-o treptat la mai mulți utilizatori în timp.
  • Monitorizați îndeaproape noua versiune pentru a vă asigura că este stabilă și funcționează conform așteptărilor.
  • Dacă apar probleme, refaceți rapid și ușor implementarea la versiunea anterioară.
  • Automatizați procesul de implementare cât mai mult posibil pentru a reduce riscul de eroare umană.
  • Beneficiile implementării Canary în DevOps includ:

  • Prin lansarea treptată a modificărilor, minimizați riscul de a introduce erori sau alte probleme care ar putea afecta toți utilizatorii simultan.
  • Dezvoltatorii pot primi feedback cu privire la noua versiune mai rapid, permițându-le să facă orice ajustări necesare înainte de implementarea în întreaga bază de utilizatori.
  • Prin monitorizarea performanței și stabilității noii versiuni, dezvoltatorii se pot asigura că aceasta îndeplinește standardele de calitate necesare înainte de a fi implementată în întreaga bază de utilizatori.
  • Implementarea Canary ajută la creșterea încrederii dezvoltatorilor și a părților interesate în procesul de implementare, deoarece reduce riscul de a introduce probleme care ar putea afecta experiența utilizatorului.
  • Desfășurare Canary bazată pe concept și terminologie

    Sursa: cncf.io

    Să trecem prin ciclul de viață tipic al procesului.

    Totul începe cu Canary, adică „early adopters” ai noii versiuni a sistemului. În paralel, există grupul de bază. Aici aparțin toți ceilalți utilizatori care nu sunt în Canary.

    Pe măsură ce utilizatorii Canary continuă să folosească noua versiune, implementarea Canary se extinde la tot mai mulți utilizatori. Acesta este Traffic Shifting. Grupul Canary crește în timp ce grupul de bază se micșorează, astfel încât sistemul efectuează o lansare graduală.

      Peste 5000 de nume Kahoot amuzante

    Pe parcurs, procesul de monitorizare înregistrează toate activitățile și rezultatele utilizării și generează valori de care dezvoltatorii au nevoie ca feedback. Dezvoltatorii reacționează apoi și repară ceea ce este necesar. Sau se derulează la linia de bază dacă nu pot rezolva problemele în acest moment.

    Automatizați toate activitățile de monitorizare și implementare. Acest lucru le oferă dezvoltatorilor să se concentreze exclusiv asupra remedierii problemelor.

    S-ar putea ca grupul Canary să afle că unele caracteristici ale noii versiuni sunt proaste, în timp ce altele sunt grozave. Deci, dezvoltatorii vor semnala caracteristicile care au probleme pentru a le dezactiva din procesele de implementare.

    Dezvoltatorii urmăresc ambele grupuri simultan – Canary și Baseline. Utilizatorii generează rezultate de testare A/B. Acesta este comportamentul vechiului sistem și al noului sistem în aceleași condiții. Dar, de asemenea, există teste automate care rulează constant pe noua versiune a sistemului pentru a se asigura că verificarea de sănătate a grupului Canary este stabilă.

    Cum diferă de strategiile tradiționale de implementare

    După înțelegerea procesului ciclului de viață la nivel înalt, diferențele dintre acesta și procesele tradiționale de implementare sunt destul de evidente.

    • Implementați treptat și cu un control mai bun, mai degrabă decât să implementați o dată la toată lumea și să așteptați problemele care afectează întreaga producție.
    • Limitați riscul apariției erorilor versiunii noi doar la grupul Canary, comparativ cu expunerea întregii lumi la probleme simultan.
    • Monitorizați noua versiune înainte ca utilizatorii să o aibă, în loc să o monitorizați după aceea și să investiți o cantitate substanțială de timp și resurse în faza de hiper-îngrijire a procesului de lansare.
    • Puteți decide asupra modului de retragere înainte de a implementa noua versiune complet în producție. Pe de altă parte, se programează o altă fereastră de lansare pentru a anula producția imediat după finalizarea lansării.
    • Având în vedere implementarea Canary, în mod natural, vă obligă să investiți în instrumente și procese automatizate acolo unde este posibil. Pe de altă parte, respectarea strategiilor tradiționale de implementare determină în mod natural toate inițiativele de automatizare la sfârșitul listei de backlog.

    Conducte CI/CD în implementarea Canary

    Sursa: aws.amazon.com

    Într-o conductă tipică CI/CD, modificările sunt construite, testate și implementate automat într-un mediu de testare ulterioară înainte de a fi implementate în producție. Și, de asemenea, este un caz de utilizare perfect în cadrul unei implementări Canary.

    Odată ce modificările au fost implementate în mediul de pregătire și au trecut toate testele necesare, conducta CI/CD va implementa automat versiunea Canary unui subset mic de utilizatori din mediul de producție.

    Dacă ceva nu merge bine, pur și simplu rulați o altă conductă pentru o retragere. Sau semnalați caracteristicile problematice și nu va mai apărea niciodată în procesul de implementare a conductei de implementare. Toate automate și nu trebuie să-ți mai pese de asta.

    Deoarece versiunea Canary este plină de teste automate de verificare a stării de sănătate, toate acestea sunt în mod natural încorporate în caracteristicile de bază ale conductelor CI/CD. Oricum, ele sunt o parte indispensabilă a oricărei conducte CI/CD bune.

      Filtrați datele din Foi de calcul Google fără a modifica ceea ce văd colaboratorii

    Fluxul de lucru și fazele implementării Canary

    Rezumând informațiile împreună, acesta este fluxul de lucru obișnuit al unei implementări tipice Canary pe care o puteți utiliza în proiectul dvs.

    #1. Planificare și pregătire

    În această fază, echipa de dezvoltare planifică și se pregătește pentru desfășurarea canarului. Aceasta include identificarea modificărilor sau actualizărilor care trebuie făcute, crearea unei noi versiuni a software-ului și definirea valorilor și verificărilor de sănătate care vor fi utilizate pentru a monitoriza performanța noii versiuni. Echipa identifică, de asemenea, subsetul de utilizatori care vor primi mai întâi noua versiune și definește planul de lansare.

    #2. Implementarea rutării și monitorizării traficului

    Noua versiune a software-ului este implementată subgrupului de utilizatori identificați în faza de planificare. Rutarea traficului este implementată pentru a direcționa o parte din traficul utilizatorului către noua versiune, menținând în același timp versiunea veche în funcțiune pentru restul utilizatorilor. Performanța și stabilitatea noii versiuni sunt monitorizate îndeaproape folosind valori și verificări de sănătate pentru a se asigura că funcționează conform așteptărilor.

    #3. Analizarea și evaluarea performanței implementării

    Performanța noii versiuni este analizată și evaluată pe baza parametrilor și verificărilor de sănătate definite în faza de planificare. Dacă noua versiune funcționează bine, lansarea este crescută treptat la mai mulți utilizatori în timp. Dacă apar probleme cu noua versiune, implementarea poate fi retrocedată rapid la versiunea anterioară.

    #4. Promovarea sau anularea implementării

    Echipa de dezvoltare decide dacă promovează noua versiune pentru întreaga bază de utilizatori sau revine la versiunea anterioară. Dacă noua versiune are performanțe bune și îndeplinește standardele de calitate necesare, promovați-o la întreaga bază de utilizatori. Dacă apar probleme cu noua versiune, reveniți rapid și ușor la implementarea la versiunea anterioară.

    Sursa: aws.amazon.com

    Cele mai bune practici și strategii

    Când implementați Canary Deployment în platforma dvs., începeți cu definirea obiectivelor clare și cum arată succesul la sfârșit. Puteți ajuta aici cu lucruri precum valorile de performanță, criteriile de feedback ale utilizatorilor și impactul asupra afacerii.

    Creați un mic subset de utilizatori pentru a testa noua versiune (Canary) a software-ului. Grupul mai mare de la început nu este cu adevărat un avantaj. Vrei să fii cât mai flexibil, mai ales la început.

    După cum am menționat deja de câteva ori, monitorizați performanța și stabilitatea noii versiuni folosind valori și verificări de sănătate. Reacționează ori de câte ori vezi ceva suspect. Este mai bine să reacționezi în exces decât să reacționezi insuficient atunci când se ajunge la o lansare treptată.

    Creșteți treptat lansarea noii versiuni pentru mai mulți utilizatori în timp. Acest lucru asigură o tranziție mai lină la noua versiune.

    Utilizați instrumente și procese de automatizare acolo unde este posibil pentru a eficientiza procesul de implementare și monitorizare. Includeți-le în conductele CI/CD și faceți ca procesele de implementare programate să fie declanșate automat. Acest lucru reduce riscul de eroare umană și asigură faptul că procesul de implementare este consecvent și repetabil.

      Ghid definitiv pentru caracteristicile ucigașe ale platformei

    Implementați steaguri de caracteristici pentru a activa sau dezactiva anumite caracteristici din software. Veți obține controlul asupra viitoarelor procese de implementare fără a fi nevoie să modificați sau să actualizați întotdeauna manual. Veți acorda mai multă atenție dezvoltatorilor pe domeniile care contează – remedierea erorilor.

    Utilizați testarea A/B pentru a compara performanța a două versiuni diferite ale software-ului. Atribuiți utilizatori aleatori la o versiune sau la cealaltă. Identificați ce versiune are performanțe mai bune și reacționați la aceasta cu deciziile viitoare de dezvoltare.

    Asigurați-vă că puteți anula implementarea rapid și oricând, dacă apar probleme cu noua versiune. Va reduce impactul oricăror probleme și va permite o recuperare rapidă.

    Provocări și studii de caz

    Există încă unele provocări care se asociază cu desfășurarea Canary, în ciuda avantajelor sale clare.

    O provocare cu Canary Deployment este latența rețelei, care poate afecta performanța noii versiuni a software-ului. Pentru a face față acestei provocări, dezvoltatorii pot folosi instrumente precum echilibrarea încărcăturii și rețelele de livrare de conținut pentru a îmbunătăți performanța rețelei. Nu este doar latența pentru sistem de la uz extern. Dar și latența pentru procesele interne, cum ar fi implementările sau execuțiile CI/CD Pipelines. Acestea trebuie să fie finalizate cât mai repede posibil. În caz contrar, veți avea o linie de dezvoltatori într-o stare inactivă care așteaptă ca conductele să își termine rularea.

    O altă provocare este asigurarea coerenței datelor între versiunile vechi și noi ale software-ului. Pentru a face față acestei provocări, dezvoltatorii pot folosi tehnici precum replicarea și sincronizarea bazei de date pentru a se asigura că datele sunt consecvente în toate versiunile. A avea utilizatori de producție care operează atât în ​​versiunile vechi, cât și în cele noi, toate în același timp, crește așteptările că vă veți asigura că ambele versiuni sunt în totalitate sincronizate tot timpul și că utilizatorii nu pierd date de producție doar pentru că se află în grupul Canary/Baseline . Ar putea fi o așteptare cu adevărat dificilă de îndeplinit, așa că sprijiniți-vă cu procese solide de fundal.

    Netflix este un exemplu binecunoscut de companie care utilizează Canary Deployment pentru a implementa modificări la serviciul său de streaming. Compania folosește o combinație de testare automată, semnalizări de caracteristici și testare A/B pentru a implementa încet modificările.

    Google este un alt exemplu de companie care folosește Canary Deployment pentru a implementa modificări la serviciile sale cloud. În mod similar, compania folosește beneficiile testării automate, împărțirii traficului și includerii monitorizării pentru a implementa treptat modificări la un subset mic de utilizatori înainte de implementarea tuturor utilizatorilor. Această abordare a ajutat Google să îmbunătățească calitatea și stabilitatea serviciilor sale.

    Cuvinte finale

    Ca și în cazul tuturor proceselor, abordărilor sau strategiilor, implementarea Canary nu este o soluție pentru fiecare problemă a lumii. Există cazuri în care este aproape imposibil de implementat din cauza restricțiilor de mediu, a cunoștințelor oamenilor sau a lipsei generale de înțelegere conceptuală. eu

    este mult mai potrivit pentru proiectele noii ere. Acolo unde o mentalitate agilă este proprietatea de bază solidă, automatizarea fiecărui proces este o prioritate fără îndoială, iar un nivel maxim de fiabilitate este o așteptare puternică din partea părților interesate.

    În acest caz, implementarea Canary este într-un fel următorul nivel al practicilor de dezvoltare agilă. Poate ridica echipele într-un teritoriu în care proiectul nu a fost niciodată înainte.

    Apoi, verificați scalarea și optimizarea CI/CD.