Migrarea de la steagurile de functii cultivate acasa la LaunchDarkly

PlanGrid face parte din Autodesk Construction Cloud. Introducem in mod constant noi caracteristici, ceea ce inseamna ca ne bazam in mare masura pe semnalizatorii de caracteristici. Ca pornire, am folosit un sistem de semnalizare a caracteristicilor cultivat acasa. La inceput a functionat bine, dar a fost limitata in ceea ce priveste functionalitatea si scalabilitatea si am ajuns sa o depasim si am migrat de la vechiul nostru sistem la LaunchDarkly. gold porno In acest post, vom descrie modul in care am facut aceasta tranzitie fara probleme, am redus volumul de munca de intretinere interna si am obtinut timpi de raspuns mai rapizi si mai consistenti pentru aplicatiile noastre la preturi avantajoase.

Fundal si motivatie

Pentru a stabili scena calatoriei noastre migratorii, ar trebui sa vorbim pe scurt despre inceput. PlanGrid a fost fondat in 2012. In primii ani de pornire, infrastructura si sistemele au evoluat constant. porno cuq Una dintre aceste evolutii a inclus introducerea semnalizatorilor de caracteristici pentru a gestiona lansarile treptate ale functionalitatii si oferirea de drepturi utilizatorului sau proiectului la caracteristici specifice. Aveam nevoie de ceva de baza, ieftin si rapid si am construit propriul nostru sistem de gestionare a steagurilor de caracteristici, „Flipper”, pe care il vom descrie putin mai tarziu. Avanseaza rapid cativa ani, iar Flipper a experimentat dureri semnificative de crestere, pana la punctul in care chiar a fost inceputa o rescriere aproape completa (si ulterior abandonata din cauza problemelor de performanta). Ca organizatie, am depasit sistemul nostru de casa. porno tunisien Totusi, dupa noroc, am devenit parte a Autodesk,

Flipper in sine era un sistem relativ simplu (in teorie). Datele de semnalizare a functiei au fost stocate intr-un depozit Redis. Nu exista o „interfata cu utilizatorul” in sens traditional; mai degraba, utilizatorii au interactionat cu Flipper printr-un canal dedicat Slack. Un bot a ascultat comenzile si a transmis instructiunile relevante catre sistemul back-end. porno jeune couple

O aplicatie web Flask a furnizat API-ul pe care botul nostru Slack si codul aplicatiei l-au folosit pentru a interactiona cu steagurile din culise. O biblioteca Python partajata a furnizat un wrapper in jurul API-ului REST, astfel incat aplicatiile sa poata apela, de exemplu, flipper.is_active („nume_functie”, „utilizator_id”) si sa primeasca inapoi un raspuns Adevarat / Fals.

Bine : pentru utilizatori (dezvoltatorii nostri, asistenta si chiar personalul de vanzari), Flipper a fost simplu de utilizat. porno vrai.com Toata lumea a iubit integrarea Slack. Suntem cu totii in Slack in mod constant, asa ca a avut super steagurile noastre la indemana a fost minunat!

Rau: Dupa cum sa mentionat mai sus, nu a existat nici o interfata de utilizare. In timp ce integrarea Slack a fost placuta si convenabila, unele lucruri nu sunt atat de susceptibile unui mod de interactiune interogare / raspuns numai text. Pe masura ce lista de steaguri a crescut, solicitarea lui Flipper sa va arate toate steagurile pentru un anumit mediu a dus la un „perete de text” (in cele din urma, atat de mare incat nu putea incapea intr-un mesaj Slack). star wars porno Nu a existat nicio modalitate de a vizualiza lucruri precum activitatea steagului. In plus, Flipper nu a facut multe inregistrari. S-ar putea privi in urma prin istoria Slack pentru a vedea cine a schimbat ce si cand, odata cu cresterea organizatiei noastre, acest lucru a devenit din ce in ce mai dificil.

Uratul: fara interfata de utilizare, pe masura ce lista steagurilor a crescut, oamenii au aflat repede ca nu i-ar fi de mare ajutor sa ii ceri lui Flipper o lista de steaguri. femme poilue porno Deci, in general, nimeni nu a mai cerut o lista de steaguri. Adagiul „in afara vederii, in afara mintii” suna adevarat: steagurile se ingramadeau si rareori erau indepartate. Cand am iesit din Flipper, aveam cateva sute de steaguri de caracteristici, dintre care o mare majoritate erau latente sau defuncte.

Organizam un „Hackweek” bianual, in timpul caruia toata lumea converge la sediul nostru din San Francisco, renunta la orice lucru la care lucreaza si, bine . porno emma watson .. hacks. Este timpul sa incercam idei noi salbatice sau sa zgariem lucruri care mancarim in spatele creierului nostru de luni de zile. porno français mature Flipper in sine fusese construit in timpul unei Hackweek anterioare si in timpul unui alt Hackweek cativa ani mai tarziu a inceput migrarea de la Flipper la LaunchDarkly.

Ca punct de plecare, o echipa care include unii dintre inginerii originali care au construit Flipper au construit o integrare Proof-of-Concept care ar permite bibliotecii noastre existente Python sa discute optional cu LaunchDarkly, abstractizand codul responsabil pentru Redis I / O intr-o pereche de Clasele „adaptor de date”. In esenta, in acest PoC, foloseam LaunchDarkly ca un magazin de date pentru semnalizatorii de caracteristici.

Daca sunteti deja familiarizat cu LaunchDarkly, s-ar putea sa va ganditi: „Ce? E o prostie! De ce ati lua un sistem bogat in functii cu o interfata de utilizare web completa si l-ati folosi ca baza de date glorificata? ” Dupa cum se dovedeste, aceasta a fost de fapt una dintre cheile succesului nostru in migratia noastra. film porno black Aveam cateva zeci de aplicatii distincte in ecosistemul nostru care faceau referinta la biblioteca noastra Python pentru Flipper. Stiam ca va fi o nebunie sa ne asteptam ca toate acele echipe sa rupa si sa inlocuiasca codul de gestionare a semnalizatorului de caracteristici in timp util si apoi sa intoarca un comutator pentru ca toata lumea sa inceapa sa utilizeze interfata web LaunchDarkly intr-o sincronizare perfecta. Folosirea bibliotecii noastre existente ca o schimbare intre cererile de semnalizare si LaunchDarkly ne-a permis sa restrictionam modificarile timpurii la codul bibliotecii partajate si la setarile comune.

Una dintre cele mai mari provocari cu care ne-am confruntat a fost asigurarea continuitatii. sister porno Dezvoltatorii ajustau frecvent steaguri, iar codul orientat catre utilizator solicita steaguri de mii de ori pe secunda. Trebuia sa facem migratia transparenta si nu puteam tolera perioadele de nefunctionare, asa ca am folosit o abordare prudenta, pe etape. In timp ce PoC-ul initial a inclus un comutator simplu pentru a directiona traficul catre LaunchDarkly sau Redis, a trebuit sa putem trece si testa aplicatiile pe rand pentru o migrare ordonata.



  • belami porno
  • lecture porno
  • catherine ringer porno
  • porno humour
  • nylon porno
  • porno antillais
  • scooby doo porno
  • jeu porno 3d
  • porno one piece
  • cameron diaz porno
  • film porno perfect girl
  • porno mec
  • tante porno
  • taxi porno
  • porno f
  • photos porno vintage
  • film porno complet gratuit
  • nabila porno
  • sene porno
  • porno cap d’agde





Pentru a realiza acest lucru, am folosit variabile de mediu ca „semnalizatoare de caracteristici” rudimentare, ceea ce a permis unui singur inginer sa gestioneze migrarea pe mai multe aplicatii. barbie porno Folosind aceasta abordare, am introdus treptat modificari prin urmatoarele faze:

In prima faza, am introdus scrieri duale, astfel incat orice modificare a starilor de semnalizare a caracteristicilor sa fie scrisa atat in ​​sistemele LaunchDarkly, cat si in sistemele Redis. Odata ce toate aplicatiile au fost activate pentru aceasta faza, am rulat scripturi ad hoc care au facut o copie in masa a tuturor datelor de semnalizare existente de la Flipper la LaunchDarkly. Apoi am efectuat comparatii periodice ale tuturor datelor de semnalizare in ambele magazine de date pentru a ne asigura ca acestea au ramas consistente in urmatoarele cateva saptamani.

Urmatoarea faza a lansarii noastre a fost un regim cu citire dubla. ville porno In acest timp, scrierile duale au continuat ca in faza anterioara, dar acum citirile au fost directionate mai intai catre LaunchDarkly. Daca a aparut vreo eroare, biblioteca ar reveni sa citeasca si sa returneze valoarea stocata in Redis in timp ce inregistra o alerta pentru a anunta echipa noastra de dezvoltare ca acest lucru a avut loc.

In special, una dintre aplicatiile cheie migrate a fost handler-ul nostru Flipper Slack, astfel incat pe parcursul migratiilor, utilizatorii au putut sa-si gestioneze in continuare steagurile prin intermediul acelei interfete familiare.

Dupa ce am rulat in modul dual-write, dual-read suficient pentru a ne convinge ca lucrurile functioneaza asa cum era de asteptat, am intrat in penultima faza. porno family Singura schimbare in aceasta faza a fost comportamentala: am inceput sa incurajam oamenii sa foloseasca interfata de utilizare LaunchDarkly pentru a gestiona semnalizatoarele. Acesta a fost punctul de neintoarcere, deoarece acum am permis ca datele dintre sistemul nostru vechi si LaunchDarkly sa diverga. Utilizatorii ar putea totusi „renunta” utilizand canalul Flipper Slack, care ar continua sa scrie dual, dar LaunchDarkly devenise acum oficial sursa noastra de adevar pentru citirea datelor de semnalizare a caracteristicilor.

Faza finala a fost eliminarea capacitatii de „renuntare”, transformarea canalului Slack in numai citire, necesitatea efectuarii tuturor modificarilor de semnalizare prin interfata de utilizare a LaunchDarkly si eliminarea „caracteristicilor” cu scriere duala si dubla citire din biblioteca noastra, facandu-l pur si simplu un LaunchDarkly shim. twerk porno Mergand mai departe, aplicatiile sunt actualizate treptat pentru a utiliza SDK-ul LaunchDarkly direct, dupa care vom putea deprecia biblioteca noastra de shim in intregime.

In general, acest proces de migrare a durat cateva luni. Am reusit sa orchestram migrarea ordonata a zeci de aplicatii prin abordarea descrisa mai sus, cu intreruperi minime pentru dezvoltatorii nostri care se bazeaza pe semnalizatori de caracteristici si cu timp de nefunctionare zero.

Deci, am acoperit destul de bine „ce”. porno chantage Sa vorbim despre „de ce”. Ce am scos din asta?

Un beneficiu semnificativ este ca ne-am redus povara de dezvoltare. Nu mai trebuie sa intretinem si sa actualizam un sistem de semnalizare a caracteristicilor cultivat acasa. In mod similar, cheltuielile generale asociate intretinerii infrastructurii de baza au fost reduse. vierge porno

Acum putem, de asemenea, sa accesam functionalitatea sporita a LaunchDarkly. Asa cum am descris mai sus, sistemul nostru Flipper a fost simplu. Acest lucru a facut-o usor de utilizat, dar a insemnat, de asemenea, ca am avut o functionalitate limitata, cu doar lansari bazate pe procente de baza si directionare individuala a ID-ului. Prin migrarea la LaunchDarkly, am obtinut acces la optiuni de directionare mai bogate si la mai multe informatii despre modul in care sunt utilizate steagurile noastre. porno femmes fontaine Acum este usor de vazut cand un steag a fost complet activat (si ar trebui eliminat) in loc sa lase doar steagurile sa se adune pentru totdeauna.

Un avantaj deosebit a fost in domeniul performantei. Putem ilustra cel mai bine acest lucru cu cateva grafice capturate in timpul cand am rotit comutatorul pentru a incepe sa citim steaguri de la LaunchDarkly pe cele mai mari servicii web. Fiecare dintre aceste grafice reprezinta aproximativ acelasi interval de timp, cu un marker vertical care indica cand am facut comutarea. porno dingues Toate axele sunt liniare.

Pentru un cadru de referinta, sa analizam mai intai randamentul general pentru serviciul respectiv. Acest lucru indica traficul normal in timpul saptamanii:

Prima modificare notabila pe care o putem observa este volumul brut de solicitari Redis care anterior erau generate de Flipper. Acest grafic acopera aproximativ acelasi interval de timp ca si graficul de transfer de mai sus:

. meilleur actrice porno .si cantitatea de timp pe care o consumau:

Nu in ultimul rand, latenta generala pentru punctul final din serviciul nostru de middleware care gestiona solicitarile de semnalizare a caracteristicilor a imbunatatit corelarea. Timpul mediu de raspuns a scazut la aproximativ jumatate din ceea ce era anterior. Sunt deosebit de izbitoare aici timpul de raspuns mai consecvent vazut de liniile percentilei 99 si 95. Sistemul nostru este acum mult mai putin susceptibil la incarcarea grea a utilizatorilor, determinand multe evaluari ale caracteristicilor.

Acum ca ne-am tranzitionat complet serviciile de backend, ne uitam la imbunatatiri continue, cum ar fi interfata cu aplicatiile noastre pentru clientii mobili direct cu LaunchDarkly, fata de a le face sa treaca prin serviciile noastre de backend ca „middleware”. Acest lucru va reduce si mai mult incarcatura serviciilor noastre si va permite utilizarea unor functii precum optiuni de directionare mai bogate.

De asemenea, suntem incantati sa monitorizam mai eficient steagurile si sa folosim acest tip de informatii pentru a mentine un inventar semnificativ mai putin aglomerat de steaguri.

Rick Riensche este inginer software principal in echipa de platforma Backend a Autodesk Construction Solutions. S-a alaturat Autodesk in februarie 2019, dupa o lunga perioada de timp la un laborator national, unde a lucrat ca cercetator si inginer software. Detine un doctorat. in Informatica de la Washington State University (GO COUGS!), iar numeroasele sale hobby-uri includ Python, steaguri, plimbari lungi pe plaja, chitara electrica si jocuri video.