Feature toggle

Managementul conținutului digital (DCM) este un set de procese care permite companiilor să eficientizeze producția, alocarea și distribuția conținutului digital. Gândiți-vă la DCM ca la un super-bibliotecar care gestionează și vă protejează capitalul digital.

În dezvoltarea de software, o comutare a funcționalității este un mecanism care permite activarea sau dezactivarea codului de la distanță, fără a fi necesară o implementare. Comutatoarele de funcții sunt utilizate în mod obișnuit de echipele de produs, inginerie și DevOps pentru lansări de canare, testare A / B și implementare continuă.

Cunoscut și sub denumirea de „semnalizatoare de caracteristici”, „comutatoare de funcții” sau „eliberați comutatoare”; funcțiile de comutare au o varietate de utilizări în aplicații și infrastructură, dintre care majoritatea sunt destinate atenuării riscurilor.

De exemplu, acestea pot fi utilizate în aplicații pentru a lansa treptat noi caracteristici, permițând echipelor să testeze modificările pe un subset mic de utilizatori înainte de a le elibera tuturor. În mod similar, în infrastructură, comutatoarele funcționale pot acționa ca întrerupătoare de circuit, permițând inginerilor să controleze de la distanță comportamentul unui sistem implementat.

Cum funcționează comutarea funcțională
Comutarea funcționalității este de obicei adăugată la bazele de cod pentru a permite controlul de la distanță al anumitor logici în timpul rulării. În cod, această logică este înfășurată astfel încât să poată fi controlată de starea unei comutări de caracteristici. Dacă starea funcției de comutare este „activată”, atunci se execută logica împachetată. Dacă starea funcției de comutare este „dezactivată”, atunci logica împachetată este omisă.

Atunci când o aplicație dorește să cunoască starea unei funcții care activează în timpul rulării, face o cerere către o sursă de date externă sau un serviciu gestionat, cum ar fi Optimizely. Aplicația poate decide dacă execută sau nu logica împachetată pe baza stării returnate.

Deoarece aplicația primește starea de comutare a caracteristicilor de la o sursă la distanță, permite controlarea logicii împachetate de la distanță, pur și simplu activând sau dezactivând semnalizatorul în fișierul de configurare fără a necesita implementarea codului. De exemplu, dacă starea unei comutări de caracteristici este modificată în Optimizely, aceasta este modificată și în aplicație în timpul rulării.

Bazele de coduri conțin adesea multe comutatoare de caracteristici care controlează diferite părți ale aplicației. Din această cauză, opțiunile de comutare sunt atribuite de obicei nume sau chei unice pentru a fi diferențiate și descriptive ale logicii pe care o controlează. În plus, funcțiile de comutare pot avea stări diferite pentru utilizatori sau segmente de public diferite. Aceste chei unice, precum și detalii despre utilizator sau audiență pot fi apoi utilizate pentru a căuta starea unei anumite caracteristici care comută într-o sursă de date externă sau Optimizely.

Avantajele comutării funcției
Principalul beneficiu al marcării caracteristicilor este că reduce riscurile asociate cu eliberarea modificărilor unei aplicații. Fie că este vorba despre o versiune nouă de caracteristică sau despre un mic refactor, există întotdeauna riscul inerent de a elibera noi regresii. Pentru a atenua acest lucru, modificările unei aplicații pot fi plasate în spatele comutatorului de funcții, permițându-le să fie activate sau dezactivate în caz de urgență.

În cazuri mai complexe, comutarea funcțională poate fi utilizată pentru a testa modificările pe subseturi mici de utilizatori. Activând o funcție de comutare pentru o fracțiune din toți utilizatorii, echipele pot obține informații înainte ca modificările să fie lansate tuturor. Această funcționalitate a comutărilor de caracteristici este de obicei utilizată pentru lansările de caracteristici sau versiunile canare, care implică validarea modificărilor aplicațiilor și infrastructurii prin testarea acestora pe un subset de utilizatori. Aceste practici permit echipelor să prindă regresii mai devreme și să revină dacă este necesar, reducând riscul de erori în timpul rulării.

Funcția de comutare a procesului de dezvoltare
Primul pas în implementarea unei funcții de comutare este crearea și definirea acesteia într-o sursă de date externă sau într-un serviciu precum Optimizely. Aceasta implică de obicei alegerea unui nume sau cheie unice pentru comutarea caracteristicii, precum și a unei stări inițiale. Odată ce comutarea funcției este definită, aplicațiile și infrastructura pot începe să își caute starea folosind cheia sa unică.

După ce comutarea caracteristicii este definită în Optimizely sau în altă parte, starea acesteia trebuie să fie accesibilă aplicației. Prin urmare, codul trebuie adăugat la baza de cod, permițând aplicației să caute starea unei comutări de caracteristici din sursa externă. Optimizely oferă SDK-uri pentru multe limbi majore și cadre care oferă această funcționalitate.

În cele din urmă, odată ce comutarea funcționalității este accesibilă aplicației, acestea pot fi adăugate la căi de cod specifice pentru a oferi control de la distanță. Căile de cod care necesită control de la distanță pot fi înfășurate într-o logică condițională care verifică starea funcției de comutare înainte de executare. Apoi, când acea cale de cod este atinsă în timpul rulării, aceasta se va executa numai dacă semnalizatorul de caracteristici se află într-o anumită stare.

Caracteristici de comutare exemple / cazuri de utilizare
Eliberări canare
Când lansați o nouă caracteristică, este adesea util să o testați într-un subset mic de utilizatori înainte de a o lansa tuturor. Această practică este cunoscută sub numele de efectuarea unei „lansări canare” sau „lansare de caracteristici” și este utilizată de echipe pentru a atenua riscul la adăugarea sau modificarea unei caracteristici. Comutarea funcționalității poate fi utilizată pentru a efectua eliberări canare controlând dacă se afișează sau nu noua caracteristică unui anumit utilizator și oferind posibilitatea de a derula sau de a derula înapoi de la distanță.

Testarea în producție
Datorită complexității sistemelor moderne de implementare, pot exista diferențe între mediile de testare și producție care pot introduce erori care nu pot fi descoperite în timpul testării unitare. Prin încorporarea alternării funcționalității în procesul lor de dezvoltare, echipele de dezvoltare software pot lansa caracteristici în mediul lor de producție într-un mod controlat, vizând un segment mai mic din baza de utilizatori pentru a reduce riscul, pentru a testa noi caracteristici în producție. Dacă testul eșuează, acesta poate fi ușor derulat înapoi prin simpla ajustare a configurației de comutare fără modificări ale codului sursă.

Testarea A / B
Testele A / B sunt folosite de echipe pentru a experimenta idei noi și a confirma ipoteze folosind date din lumea reală. Acestea segmentează traficul într-una din cele două variante ale unei caracteristici, permițând captarea valorilor pentru fiecare variantă, unul lângă altul. O comutare a funcției poate fi utilizată pentru a facilita un test A / B prin controlul variației în care este captat fiecare utilizator. Dacă un comutator de caracteristică este „dezactivat” pentru un utilizator, acesta va vedea varianta „A” a testului, în timp ce dacă este „activată” ar vedea varianta „B”.

Întrerupător de circuit
Pe măsură ce o aplicație sau o infrastructură crește în complexitate, poate deveni mai dificil de întreținut și mai lent de stabilizat în timpul unei defecțiuni. Comutarea funcționalității este o modalitate excelentă de a aborda problemele de întreținere și recuperabilitate într-un sistem în creștere. Atunci când sunt utilizate ca întrerupătoarele de comutator kill, comutatoarele de funcții pot oferi echipelor un mod centralizat și la distanță de a controla componentele unui sistem implementat și de a răspunde la eșecuri.

Implementare bazată pe portbagaj
Deoarece comutarea caracteristicilor permite implementarea rapidă și retrocedarea noului cod, acestea pot fi utilizate pentru a susține un proces de dezvoltare bazat pe trunchi, în care modificările de cod pot fi făcute în trunchiul principal în loc să aibă mai multe ramuri de caracteristici care trebuie apoi îmbinate și reconciliate în Github sau alte platforme de gestionare a surselor. acest lucru poate duce la cicluri de lansare mai rapide și la mai puțin timp petrecut pentru depanare.

Comutare funcțională și livrare continuă
Campionat de un influent dezvoltator de software Martin Fowler, integrarea continuă și livrarea continuă (CI / CD) este o disciplină de dezvoltare software în care software-ul poate fi lansat în producție în orice moment. A fost adoptat de companii de software de top din întreaga lume ale căror echipe se așteaptă acum să livreze rapid software-ul stabil și fără erori la baza dvs. de utilizatori.

Semnalizarea caracteristicilor îmbunătățește CI / CD, făcând „continuu” mai realizabil. Semnalizatoarele de funcții și comutările de funcții sunt o componentă cheie a implementării livrării continue, permițând separarea lansării caracteristicilor de implementarea codului. Funcțiile incomplete pot fi îmbinate în baza de coduri de producție, dar ascunse în spatele steagurilor de caracteristici.

Cu livrarea continuă și gestionarea semnalizării caracteristicilor, o echipă își poate lansa, controla și măsura caracteristicile la scară largă.