Blue-green deployment

O tehnică de dezvoltare software care utilizează două medii de producție (un „mediu albastru” și un „mediu verde”) pentru a face procesul de implementare a software-ului mai ușor și mai sigur.

Implementarea albastru-verde este o tehnică de dezvoltare software care utilizează două medii de producție (un „mediu albastru” și un „mediu verde”) pentru a face procesul de implementare software mai ușor și mai sigur.

Cele două medii de producție sunt păstrate cât mai identice posibil și, atunci când este implementat un nou cod, acesta este împins în mediul care este în prezent inactiv. Odată ce noile modificări au fost testate în producție, un router poate trece apoi la punctul către mediul în care sunt live noile modificări, asigurând o decupare lină.

Cazuri de utilizare de implementare albastru-verde
Restituiri
Unul dintre principalele beneficii ale implementărilor albastru-verzi este recuperarea în caz de dezastru. Deoarece există două medii identice pentru producție, dacă noile modificări sunt lansate într-una (să spunem versiunea albastră) și orice problemă este descoperită, un router poate reveni la celălalt mediu (versiunea verde) care are versiunea veche a cod cu timp de nefuncționare zero.

Integrare continuă / livrare continuă (CI / CD)
Unul dintre obiectivele integrării continue (o tehnică DevOps) este de a transmite software-ul cât mai curând posibil și de a accelera procesul de dezvoltare prin testare automată și integrare frecventă a codului. Implementarea albastru-verde este o strategie de implementare care poate ajuta la atingerea acestui obiectiv, permițând mai multe introduceri de cod către producție, reducând în același timp riscul noilor versiuni.

Testarea în producție
Există adesea mici diferențe între mediul de punere în scenă și producție, indiferent de eforturile depuse pentru a le face identice. Acest lucru poate duce la cazuri marginale și erori care nu pot fi descoperite până când codul nu a fost introdus în producție. Implementarea albastru-verde permite testarea în producție prin împingerea unui nou cod în mediul real de producție și pentru a vedea cum funcționează, înainte de a-l trece fără probleme la traficul de producție și la utilizatorii reali.

Desfășurare canarină
O implementare canar este atunci când noile modificări sunt lansate într-un segment mic al bazei dvs. de utilizatori, mai degrabă decât lansate pentru toată lumea. La fel ca un canar dintr-o mină de cărbune, acest mic test controlat poate fi utilizat pentru a determina dacă există erori fatale în noua versiune a codului dumneavoastră. Implementarea albastru-verde poate fi utilizată pentru astfel de testări canare prin simpla comandă a routerului de a direcționa un procent din traficul dvs. către noua versiune a codului pentru a vedea cum se comportă cu traficul live, înainte de a lansa modificarea la 100% din utilizatorii dvs.

Testarea A / B
Un alt caz de utilizare potențial pentru implementări albastru-verzi este testarea A / B. În acest caz de utilizare, ați încărca noua versiune a codului dvs. în mediul albastru și ați direcționa 50% din traficul utilizatorului către versiunea albastră față de versiunea verde originală. Apoi, puteți monitoriza performanța celor două medii în ceea ce privește valorile cheie și puteți utiliza analiza statistică pentru a determina impactul exact al noii aplicații.

Echilibrarea sarcinii
Un alt caz de utilizare potențial pentru implementarea albastru-verde este echilibrarea încărcării. Dacă implementarea albastru / verde este configurată astfel încât cele două medii de producție să fie pe servere separate (mai degrabă decât o mașină virtuală), un router poate echilibra cu ușurință traficul între versiunile albastre și verzi ale mediului de producție, deoarece acestea sunt funcționale identice .

Exemplu de implementare albastru-verde
Să presupunem că echipa ta de dezvoltare lucrează la o aplicație web și dorește să lanseze o nouă funcție, dar dorești să elimini orice timp de nefuncționare și să ai o tranziție lină către noul cod. În plus față de mediul dvs. intermediar, ați configura două medii de producție identice (o „versiune albastră” și „versiunea verde”) cu un router care direcționează traficul către versiunea verde.

Apoi, puteți împinge noile modificări la versiunea albastră a mediului de producție și puteți vedea cum funcționează într-un cadru de producție real. Se poate dovedi că există erori care apar doar în setările de producție, caz în care puteți reveni cu ușurință la dezvoltare cu impact zero pentru utilizatorii dvs.

Odată ce sunteți încrezător în performanța noii versiuni a aplicației, puteți începe să vă direcționați un procent din traficul utilizatorului către mediul albastru pentru a rula un test canar pe utilizatorii reali. Dacă nu se descoperă probleme, atunci puteți direcționa 100% din trafic către noul mediu, ducând la o versiune lină a caracteristicilor.

Dacă se descoperă probleme în momentul în care s-a făcut reducerea, atunci puteți redirecționa cu ușurință traficul înapoi către mediul verde care are versiunea anterioară a codului dvs. pentru a executa o revenire ușoară.

Odată ce sunteți sigur că nu există nicio problemă cu noul cod, puteți clona mediul albastru pe cel verde, astfel încât să aveți din nou două medii de producție identice. Puteți continua apoi pe ciclul de viață al dezvoltării sau puteți utiliza al doilea server ca echilibru de sarcină, după cum este necesar, dacă vedeți o creștere a utilizării.

Caracteristici steaguri vs implementare albastru-verde
O abordare alternativă de dezvoltare a implementării albastru-verzui este utilizarea semnalizărilor de caracteristici sau a comutărilor de caracteristici. Cu semnalizatoarele de funcții, noile funcții și coduri sunt împachetate în cod condițional care poate fi activat sau dezactivat de la distanță. Acest lucru le permite dezvoltatorilor să lanseze noi funcții în producție și să aibă o modalitate ușoară de a reveni fără a fi nevoie să mențină două medii de producție.

În plus față de funcționalitatea simplă de activare / dezactivare, semnalizatoarele de funcții pot fi utilizate și pentru lansări vizate, unde o caracteristică este activată numai pentru un anumit segment al traficului dvs. de utilizator. Acest lucru permite cazuri de utilizare, cum ar fi implementarea canarelor și testarea A / B, din nou, fără a fi nevoie să mențineți două medii de producție separate.