
quindi proveremo a capire cosa
continua a pianificare e continua
la consegna sembra effettivamente nella pratica
è difficile è difficile parlare
sulla consegna continua a Etsy
senza parlare solo di come
lavoro in generale quindi penso che penso
questo è il modo in cui lavoriamo
influenzato e abilitato da fare
consegna continua quindi avrò ragione
di solito ci riferiamo a questo
come implementazione continua così quando tu
ascoltami dire che il dispiegamento continuo è davvero
quello di cui stiamo parlando è lo stesso
cosa e tu potresti non averlo capito
la maggior parte delle persone qui probabilmente non lo sa
ciò che è / che non siamo ancora espansi
molto lontano in Europa o in Asia, ma
Etsy è un mercato, è un posto
dove le imprese creative possono vendere
online sono piccoli negozi indipendenti e
abbiamo a che fare con che abbiamo a che fare
l’e-commerce è questo è fondamentalmente
una compagnia di 7 anni quindi anche noi guardiamo a
molto come una startup nonostante le dimensioni di
il nostro team sembra molto simile a
start-up e lavoriamo in questo modo e il
il prodotto principale è un sito web così solo per
sii davvero chiaro che non lo siamo
software di packaging al di fuori della distribuzione
un’app per iOS in questo momento tutto ciò che spediamo
va davvero ai server web, quindi è così
solo un po ‘di contesto intorno a questo
questo è come appare la nostra crescita
termini di vendita solo per darti un
prospettiva sul nostro continuo aumento
questo è un fatturato lordo nel
mercato quindi questo è il denaro
negoziato tra compratori e venditori
anche noi siamo abbastanza grandi
facendo quasi un miliardo e mezzo di pagina
abbiamo visto un mese solo in agosto
quasi o nota che abbiamo fatto 76 milioni in
transazioni così a volte quando le persone
parlare di distribuzione continua e
distribuendo rapidamente c’è un’associazione
con essere una piccola società o essere
in grado di correre rischi maggiori e penso
la storia qui è che è che possiamo
prendi questi rischi e continua ad abilitare molto
di crescita e un sacco di transazioni per
succedendo abbiamo circa 170 persone
impegnandosi a nostra base di codice che
include i nostri ingegneri
designer e product manager e se
sei se stai scrivendo il codice che sei
dispiegando anche il codice questo è il tasso di
distribuisce quello che abbiamo visto durante l’ ultimo
due anni abbiamo iniziato fondamentalmente a fare
dispiegamento continuo al massimo
molto fine del 2009 e come puoi vedere
inizia una sorta di ticchettio laggiù
la differenza tra i colori qui è
quel giallo è una distribuzione completa dell’applicazione
dove stiamo spingendo tutto il codice che è
nella nostra linea principale il rosso è dove
stiamo lanciando le bandiere di configurazione e lo faremo
parlare un po ‘di che
ma puoi vedere che questi sono questi
le metriche sono al giorno, quindi puoi vederlo
in media lo sappiamo in generale
stiamo facendo tra 20 e 30 deploys a
giorno e poi la nostra configurazione cambia o
da qualche parte sai generalmente 10 a 10 a
20 a volte 30 o 40 modifiche di configurazione in
un giorno quindi è così che stiamo cambiando velocemente
cose sul sito che proveremo
parlare di alcuni dei più avanzati
argomenti e mi aspetto che tu venga
entrare qui in qualche modo sapendo così dentro
lo sfondo di ciò che continua
la consegna è che non ho intenzione di andare
in così tanto di ciò che, ma davvero di più
del modo in cui guarda a Etsy
questa è la parte wiki di Wikipedia
articolo e questi sono alcuni dei termini
che probabilmente hai riconosciuto ripetutamente
spingere l’overhead manuale minimo a basso rischio
cosa manca da quello che penso sia
alcune cose come questa e queste sono alcune
degli argomenti che finiremo per parlare
un po ‘più DevOps che lo sa
di DevOps le persone conoscono questo movimento
fantastico fantastico lavorare direttamente a
tronco principale o maestro qualunque cosa tu
voglia chiamare caratteristica Bandiere persone
sapere quali feature flag sono grandi
guardando bene e poi ramificandosi
codice che ovviamente è quello principale
linea hai caratteristiche Bandiere e
ramificando nel codice quelli sono davvero
davvero una specie di cuore di ciò che siamo
facendo inizierò con delle scuse però
perché ho sentito un po ‘ di
ridacchiando alla fine dell’ultimo discorso
quando è stato menzionato PHP lavoriamo in PHP così
per favore non correre fuori le porte così questo
è davvero il nocciolo del discorso cosa
la distribuzione continua sembra a Etsy
in pratica ogni singolo giorno questo è
meno di quello che è più di come applichiamo
e
perché non sono un consulente e non lo sono
un ottimo venditore che sarà
più di questo è solo quello che stiamo facendo
e questo è ciò che troviamo che funziona e
meno di voi ragazzi dovreste uscire e provare
farlo proprio in questo modo, perché penso
è una grande idea per te non è un
proposta unica per tutti, quindi non lo sono
Non sono qui per dirti che lo sei
fare le cose sbagliate se non vuoi
fare questo, ma questo è ciò che funziona per
noi questo è il nostro pulsante di distribuzione tutti
sul nostro team di ingegneri tutti i nostri
designer tutti i nostri product manager
chi sta effettuando il codice ha accesso a
questo finchè riesci a superare il
Le credenziali LDAP si possono ottenere a questo
quando premi questo pulsante, distribuiamo tutto
del nostro codice app per la nostra produzione
i server che elaborano richiedono solo circa
due minuti per il reale
l’implementazione ci sono alcune build e cose
che vivono portano a questo ma ma
spingere il codice è abbastanza veloce
quindi alcuni allora e ora è il tipo di
prima della fine del 2009 quando noi quando noi
trasferirlo su continuo
distribuzione e ora è il 2010 da allora
quindi sono ore e ore di spiegazioni e
come Michael ha parlato dello spiegamento
esercito questo era di solito almeno cinque
persone e quando stavo intervistando per
Etsy una delle persone che era
intervistarmi doveva partire durante il
intervista per andare a fare aiuto con un dispiegamento
perché non stava funzionando troppo a lungo
e le cose stavano fallendo è altamente
orchestrato e poco frequente ora è uno
persona che preme un pulsante per l’intera build
e distribuire richiede circa 15 minuti e
si tratta di un ciclo di rapida rapida questa
è un evento speciale che dovevamo pianificare
fuori e organizzare ora è un luogo comune
e se chiedi alla maggior parte dei manager
il team non sanno nemmeno cosa sia
schierato in un solo giorno, francamente
un po ‘una sfida per noi ma
è una delle cose in cui abbiamo
spinto al processo decisionale e alla velocità di
consegna alla nostra squadra più piccola
quindi ogni squadra di ingegneri parla di te
conosci da due a sei persone fuori da un
l’intero gruppo a ciascuno di essi è ordinato il
il punto è dare potere a tutti questi team
uscire e costruire rapidamente le loro caratteristiche
in passato ne ho parlato molto
gestendo il nostro sito in modo operativo
senso e questa è una delle cose che
il dispiegamento continuo ci consente di
fare
in passato se avessimo avuto un problema con a
schierato saremmo bloccati attraverso il
resto di quello deploy e poi
attraverso il follow-up schierato per spingere a
correggi che saranno ore e ore
e ora e ora con continuo
implementazione siamo in grado di apportare modifiche
molto rapidamente può essere un dispiegamento povero
risolto entro circa 10 a 15 minuti
e se solo stiamo per essere tweaking
config flag quelli in realtà solo in distribuzione
prendere circa cinque minuti c’era un sacco
più complessità attorno alle implementazioni in
il passato della confezione era stato rilasciato
rami abbiamo accoppiato cambiamenti di schema
insieme al codice distribuisce chi sei
immagina se stai provando a farlo e
stai trasformando i dati allo stesso modo
tempo che probabilmente avrai
tempi di inattività per questo come sei come sei
spostando entrambe le versioni avanti ora noi
lavorare fuori dalla linea principale che facciamo molto minimamente
collegando c’è sempre qualcosa che
dobbiamo mettere insieme il posto prima
prima di spingere, ma le nostre build sono complete
i nostri spiegamenti sono essenzialmente i nostri lavandini
e di nuovo questo è PHP, lo siamo
lavorando con così questo è uno dei più grandi
vantaggi che otteniamo da ciò che è
che possiamo semplicemente archiviare i file in posizione
e iniziano a correre non ce n’è bisogno
preoccuparsi di eventuali altri riavvii o cose
come quella per così riassumere che fino vecchio o il
passato questo è lento e complesso e
speciale nuovo o quello che stiamo facendo ora è
veloce e semplice ed è comune è così
è comune quando hai iniziato quella scena
questa è la prima cosa che impari
come distribuire il sito nel primo giorno
ti assegniamo un progetto per mettere te
conosci la tua immagine sul nostro sotto
la nostra azienda come quella della squadra e quella
in realtà non coinvolge un sacco di
il codice non è non comporta come
davvero imparare le profonde viscere E ‘
è un progetto abbastanza semplice per
capire dove mettere una foto di
te stesso ottenendolo in un modello ma
allora sai che viene fornito con il
sovraccarico di capire come ottenere
sulla tua macchina virtuale in cui il codice
vive come eseguire test su come distribuire il
sito e dove trovare le metriche per garantire
che tutto funziona correttamente
dopo la distribuzione è fatto così nel molto
il primo giorno stiamo cercando di prendere
tutta la cerimonia lontana dagli schieramenti
il secondo giorno ti lasciamo completare
i vostri moduli fiscali e assicurativi e
benefici e cose del genere
questa è la roba più difficile che non ho menzionato
qualsiasi cosa nei primi due giorni
sull’apprendimento della nostra struttura o a
codice base usiamo un modello di codifica ORM
o qualcuna di quelle cose che ti piacciono
può imparare nel tempo ma se si spinge
imparando lo sviluppo fino a più lontano
in fondo alla strada dopo aver speso una coppia
di mesi costruendo qualcosa poi
diventa un grande evento spaventoso e questo è
esattamente quello che stiamo cercando di evitare di fare
perché questo è il pulsante che sta andando
di essere di fronte a voi e si deve
distribuire e questo significa qualcosa che siamo
davvero bravo a fare questo come me
abbiamo detto che stiamo spingendo da 20 a 30 volte al giorno
e se non ti è familiare
quello dovrebbe sembrare davvero spaventoso e tu
dovrebbe avere una specie di fossa nella tua
stomaco che consegna qualcuno da schierare
pulsante senza alcuna misura di sicurezza è
come consegnare a qualcuno una pistola senza
sicurezza quindi voglio parlare un po ‘
su come renderlo sicuro ma io sono
andando a raccontarvi che poi ho
voglio solo precisare che se lo fosse
intrinsecamente pericoloso e se stessimo fallendo
distribuisce ogni volta che l’ abbiamo fatto o
anche il 10% delle volte l’ abbiamo fatto io
non pensare che sto speculando ma non lo faccio
penso che vedremmo la crescita oltre il
ultimi due anni che vediamo così così
distribuzione continua per noi si presenta come
questo piccolo frequente cambia tenerlo
come Michael stava parlando nell’ultimo
parlare mantenendo i lotti di cambiamenti
stai diventando davvero piccolo costantemente
integrando in produzione e io sono
parlerò molto di questo e del fare
questo ripetutamente durante il giorno così
domande che conosci alcune delle cose che io
voglio rispondere in questo discorso sono alcuni di
le domande che si presentano regolarmente
quando parliamo , conosci il processo
di dispiegare e e gli strumenti che noi
utilizzare per la distribuzione che non ho intenzione di
parlo di così tanto tempo ma ma come
questo influisce su ciò che stiamo facendo, quindi come fa
costruiamo così tante funzionalità così rapidamente
la risposta è che non stiamo creando funzionalità
che stiamo rilasciando ogni singolo giorno
stiamo apportando piccole modifiche incrementali
al sito che stiamo facendo aggiunte
il sito e se ci pensi in
termini di commit che stai facendo a
repo è la stessa cosa che stai facendo a
piccola quantità di modifica del codice che funziona
che sai che è valido e quindi
sei
lo stai integrando con la produzione
il software distribuito non è uguale al prodotto
Lanciamo possiamo lanciare il codice in ritardo che possiamo
effettivamente lanciare le funzionalità in seguito e noi
può organizzarlo in un più grande
cosa ma funziona davvero
spesso così questi ti impongono di sapere
in genere rappresentano solo un giorno o forse
un paio di giorni di lavoro e raramente loro
fanno essi costituiscono di per sé una completa
funzionalità o un progetto completo completo
quindi inseriamo il codice in te, lo sai
gated by config flags in modo che possiamo spingere
modifiche che sono incomplete perché
abbiamo sezioni della nostra applicazione
che sono disattivati ci riferiamo a questo come
rilasci scuri e quindi guardiamo
esattamente quello che sembra per noi noi
tendiamo a cercare di fare il più semplice
cosa possibile in molti casi nostri
le bandiere di configurazione sono solo incorporate in un
array in PHP e la ragione di ciò è
che se PHP e Apache stanno lavorando su a
assistente allora sappiamo che abbiamo
accedere alle nostre configurazioni se le mettiamo
in un servizio decentralizzato da qualche parte
servizio di altro o distribuito poi abbiamo
per garantire che quel servizio sia disponibile
e abbiamo imparato nel modo sbagliato
che non è sempre il caso, quindi se siamo
creazione di una nuova funzione di ricerca o se
stiamo refactoring di ricerca in atto, allora
iniziamo con una bandiera di configurazione nel fuori
posizione e quindi guardiamo il codice
esiste e ne abbiamo conosci qualcuno
un qualche tipo di cosa che stavamo facendo in
il passato che vogliamo migliorare
e lo avvolgiamo solo così abbiamo il nostro
la bandiera di configurazione dice se la nuova ricerca è attiva
allora faremo questa nuova cosa che noi
voglio fare usando l’energia solare e se non lo è
bene useremo solo il vecchio predefinito
versione i nostri assegni sono in realtà un po ‘
un po ‘più sofisticato di questo perché
possiamo possiamo impostare possiamo impostare valori
a parte solo on e off non lo è
binari ma abbiamo diversi livelli di
salire su così via significa davvero cento
percentuale di sconto significa zero percento per
utenti pubblici ma possiamo anche farlo
qualsiasi percentuale di utenti e possiamo fare
cose speciali come solo gli utenti dello staff o
forse una lista di
persone come me, John e Kelan
sono le persone che possono vedere questo
caratteristica particolare quindi stiamo schierando
codice frequentemente e stiamo convalidando in
produzione ma stiamo facendo in un modo
questo è nascosto al pubblico così
il software distribuito di nuovo non significa
lancia e non significano pubblico
visibilità su ciò che stai cambiando
Ho già parlato di questo
ma mi limiterò a sottolineare fuori di nuovo questi
sono piccole modifiche che tipicamente stiamo aggiungendo
parti di una nuova funzione quindi nuove classi
e controller e metodi in là noi
potrebbe avere designer che stanno lavorando
grafica e fogli di stile e modelli
che vengono aggiunti e potremmo
avere persone che stanno lavorando alla copia
modifiche ai contenuti non funzionano davvero
con un CMS sul sito perché la distribuzione
distribuire un cambiamento che è nel repository è
essenzialmente la nostra gestione dei contenuti
sistema e quindi abbiamo anche l’ abilità
per accendere e spegnere le bandiere e accostare ma
questo ci consente di rispondere anche a
problemi sul sito e come build
nuove funzionalità quindi immagina la nostra sicurezza
la squadra riceve una segnalazione di un buco nel sito
e vogliamo essere in grado di rispondere
velocemente
avere la linea principale pronta per la distribuzione
ed essere in grado di schierare velocemente significa
che possiamo avere qualcuno messo in una patch
in un modo molto rapido e distribuire quello
rapidamente perché abbiamo la fiducia
che sappiamo come fare questo e noi no
devo fare un sacco di cose
pre-pianificazione o organizzazione in giro
rilasciare il nostro codice o rilasciare il sito
possiamo anche rispondere a carichi imprevisti
nel traffico o contesa sul back-end
servizi di spargimento del carico è una cosa che
facciamo spesso il che significa che spegniamo
alcune funzionalità perché il back-end è
essere picchiato o qualcosa è
accadendo in produzione che non abbiamo mai
anticipato prima, quindi paragono questo ad un
compagnia aerea nel suo pilota, se tu fossi
costruire una versione un singolo singolare
versione del software che si che si
distribuire su base regolare, quindi solo tu
avere la possibilità di eseguire questo modo in questo modo
è un po ‘come avere un pre-programmato
percorso da Londra a New York e
una volta che sei in aria non puoi farlo
tutto ciò che non puoi non puoi
muoversi
e così, ma ciò che guardiamo continuo
la distribuzione abilitante per noi è che noi
abbiamo come parleremo un po ‘più tardi
e Michael ha parlato un po ‘
un po ‘prima abbiamo raccolto tonnellate e tonnellate di
metriche che sono come questi quadranti
sono di fronte a noi e li mettiamo
le metriche davanti a tutti così puoi
vederli e poi abbiamo questo davvero
ricco set di bandiere di configurazione così possiamo modificare
piccole cose che possiamo prendere
server specifici fuori rotazione che possiamo
accendi il traffico su un particolare
caratteristica possiamo disattivare le funzionalità
non funziona in questo operatore diventa
c’è una grande domanda di questo
operatore qualcuno sulle nostre operazioni
personale o è un ingegnere e lo fa
importa davvero che ci siamo un po ‘sfocati
linee non è noi non passiamo
software per il nostro team operativo da eseguire
sulla stanza ma siamo coinvolti con quello
e ciò che sembra in pratica è
queste caselle rosse sono sottolineando
diverse parti di uno strumento sul sito
chiamato preferiti che è come il tuo
possibilità di aggiungere dei segnalibri a prodotti specifici
tornare più tardi e con un semplice
config bandiera possiamo semplicemente capovolgere che fuori
e come vedete nelle nostre interfacce lo faremo
nascondi e nascondi quei pezzi del
applicazione quindi se il nostro strumento preferito
che abbiamo visto in passato ha avuto troppo
troppo carico e stava fallendo
richieste per qualche ragione possiamo solo
spegnerlo e la maggior parte degli utenti nemmeno
andando a sapere che la prossima grande domanda
otteniamo è come continuate a
distribuire continuamente la configurazione del database
lo schema cambia e questo lo so
è venuto un paio di volte prima di oggi
la risposta è che non viene implementato il nostro codice
succede circa una volta ogni 15 a 20 minuti
durante il giorno facciamo modifiche allo schema
Giovedì e la ragione di questo è quello
lo schema ovviamente quei cambiamenti sono
più costoso possono essere necessari alcuni cambiamenti
alcune ore abbiamo visto prendere giorni così noi
non avere un controllo molto fine
quando inizia e si ferma così è difficile
per sapere se dovessi cambiare una versione
di codice in risposta allo schema
quando dovrebbe atterrare
produzione quindi il rischio attorno allo schema
i cambiamenti sono più alti quelli sono posti
dove costringiamo più conversazioni
stiamo facendo la cosa giusta e ci muoviamo
un po ‘fuori dai singoli team e
parlare più in generale del rischio
coinvolto così la nostra applicazione è in realtà
in gran parte monolitico in esso si potrebbe
probabilmente trova le cose che sembrano
modelli di servizi attorno al database
diverse parti del nostro schema di database
in genere vengono trattati come servizi
dove stanno parlando i nostri controllori
che ce ne sono molti di meno
servizi web esterni nella nostra applicazione
e penso che sia un po ‘
diverso da quello che stava parlando Sam
circa stamattina ma questo è quello che noi
trovato
sembra funzionare molto bene, abbiamo un
molte persone che lavorano fuori dal comune
codebase quindi abbiamo una visibilità molto alta
in ciò che sta cambiando e molto in alto
visibilità in cui diverse parti di
la nostra applicazione è accoppiata
dove ciò accade , significa anche
che quando abbiamo eseguito i test, lo siamo
testare una specie di end to end e
tutto tra una delle cose
abbiamo giocato d’azzardo per un lungo periodo di tempo è
cercando di capire esattamente quali test
sono associati a un particolare cambiamento
invece siamo appena riusciti a mantenere il nostro
prova veramente veloce sul front end quando
facciamo un deploy che stiamo distribuendo tutto questo
diversi servizi insieme e noi
non è sempre stato così ma lo abbiamo fatto
librerie condivise che alimentano l’ Etsy
sito web di comunicazione indietro l’API dello sviluppatore
ufficio e strumenti di supporto che abbiamo
cose del genere e ciò che abbiamo trovato
il passato è se distribuiamo questi servizi
separatamente quindi finiamo con latente
bug nel codice sottostante, quindi se abbiamo
una libreria che sia etsy.com che
l’API degli sviluppatori fa affidamento su e solo noi
distribuire l’API quindi una volta che ci siamo
produzione possiamo trovare che l’API è
funziona perfettamente ma finiamo con
in bundle conosci il tipo di bundle
impegno che non abbiamo mai utilizzato
etsy.com
batching con alcuni impegni futuri
nel fare quel commit o in quella distribuzione
più confuso se qualcosa va storto
così
vedi che abbiamo trovato negli errori precedenti
si verificano nelle librerie di livello inferiore e se noi
non esporre se non integriamo tutto
quei front end in produzione al
Allo stesso tempo perdiamo traccia di alcuni di quelli
bug e questo è stato un problema
per noi è una di quelle pratiche
cose che abbiamo imparato nel tempo così
stiamo girando per un numero minore di sorprese
i servizi esterni non vengono distribuiti con
l’ applicazione principale e ho parlato
che è in qualche modo separato separato
programma i servizi esterni per noi
come il nostro database il nostro schema di database
il nostro gruppo di ricerca che funziona nel solare
e Java quindi è un animale molto diverso
da PHP e archiviazione foto che
ha anche avuto un completamente diverso
infrastruttura di back-end rispetto alla nostra principale
applicazione web e ci occupiamo di questo da
dalle bandiere di configurazione config che consentono consentire
noi per andare avanti e indietro
diversi stati di tali servizi così
un flag di configurazione che ci permette di usare a
nuovo rispetto a una vecchia versione di uno schema o
un nuovo contro un vecchio punto finale del nostro
livello di ricerca che cambia le bandiere
loro stessi sono molto molto veloci come ho detto
questo è meno di cinque minuti
non include che sai cambiare
mi scusi cambiando quella bandiera di configurazione
non significa che stiamo unendo qualsiasi codice
e non abbiamo niente a che fare con
ripristinando pezzi di codice se qualcosa
va storto è letteralmente una riga
cambiare da cose come a uno
per cento o fuori, quindi ci occupiamo di
questo esponendo più versioni di a
servizio o uno schema e la nostra applicazione
si aspetta più versioni e ha config
bandiere per permetterci di andare indietro e
avanti e quindi parleremo di questo in
lì rispetto ad un cambiamento a
schema del database e come appare
generalmente preferiamo le pubblicità sugli altari noi
non mi piace modificare i dati sul posto
soprattutto per aver mentito su una specie di
la trasformazione dei dati avviene su una colonna
come se la tua se la tua colonna di indirizzo per
qualche ragione per cui la formattazione doveva farlo
cambia e la tua domanda è in attesa
un lato contro il
questa è una cosa che credo sia Sam
indicato come ampliamento senza interruzioni
In realtà non ho mai sentito quel termine
prima di stamattina ma abbastanza bene
descrive di cosa stiamo parlando qui
stiamo parlando di aggiungere nuove
colonne invece di alterare le cose
in atto, gli alter possono impiegare molto tempo
come ho parlato prima di trasformarmi
dati in particolare su a su una colonna in
la produzione può rendere il tuo codice
incompatibili e cercando di collegare che fino
con una distribuzione del codice è davvero molto
difficile ripristinare qualcosa
hai trasformato in una nuova versione è
anche molto difficile quindi esponendone due
diverse versioni in produzione è
davvero importante per noi, così possiamo muoverci
avanti e indietro quindi parlerò del
aspetto pratico di come abbiamo fatto questo per
un particolare progetto che abbiamo fatto prima
anno che stava fondendo due diversi
tavoli un paio di anni fa abbiamo pensato
che ha preferenze utente separate
il tavolo era una grande denormalizzazione noi
ho scoperto che non l’abbiamo usato così tanto
e solo essere meglio avere pochi
valori in cui sono stati memorizzati
quel tavolo da unire al nostro
tabella degli utenti questo non era solo qualcosa
stavamo cercando qualcosa per cui lavorare
noi stessi abbiamo scoperto che eravamo
anche spostando il datastore stesso così
sembrava una buona opportunità per glob
quelle due cose insieme guardano i passaggi
in questo modo inizi a scrivere ad entrambi
versioni dello schema e poi una volta
hai iniziato a scrivere per entrambi quelli di cui hai bisogno
per capire come recuperare tutto il
dati esistenti che hai avuto nel
passato e poi una volta che hai e
hai convalidato e inizi a leggere
dalla nuova versione e una volta che sei
bene con quello hai tagliato il vecchio
versione non andare e andare in maggiori dettagli
su questo e ovviamente inizi
davvero con con l’aggiunta della nuova versione
allo schema prima di fare qualsiasi cosa
altra cosa che assomiglia a questo si aggiunge il
schema e aggiungiamo abbiamo aggiunto alcuni nuovi
colonne per la tabella di un utente e anche noi
iniziato con tre diversi tre
diversi file di configurazione che non avevamo mai
aveva prima che il primo era l’esistente
stato del sistema e lo trasformiamo in
così scrivendo i nostri scritti ai nostri utenti
le preferenze per questo vecchio tavolo che siamo
usando nel passato e poi in altri due
quello rappresentava lo stato che siamo
trasferirsi dove stavamo scrivendo
preferenze per la tabella degli utenti e poi
dove stiamo leggendo le preferenze dalla
tabella degli utenti invece di leggerli
da parte dell’utente
tabella delle preferenze quindi nel secondo passaggio
scriviamo il codice per la scrittura a due
luoghi e dopo che abbiamo schierato
alla produzione quindi giriamo la bandiera così
la nostra versione attuale o attuale di questo
significa che stiamo solo lanciando una bandiera come
in realtà non stiamo rilasciando l’applicazione
codice questi sono due diversi disploys
accadendo e poi passiamo attraverso a
processo che avviene offline dove noi
dove scriviamo alcuni script da trasformare
dati o semplicemente copiare dati da un posto a
un altro per prenderci fino al punto in cui siamo stati
quando lo abbiamo fatto perché lo siamo
ancora non leggendo dal nuovo
versione che stiamo leggendo dal vecchio
versione e poi arriviamo quando volevamo
per andare alla nuova versione come ho detto
abbiamo questa abilità a grana fine
per sintonizzare il traffico su una versione del nostro
applicazione così iniziamo a leggere
preferenze solo dalla tabella utenti
per le persone all’interno dell’azienda e possiamo
fallo per tutto il tempo che vogliamo a volte
sono un paio d’ore per convalidare
qualcosa di piccolo e qualche volta è un
un paio di settimane poi possiamo andare a uno
percentuale e possiamo andare al cinque per cento
e qualsiasi altra cosa desideriamo e mentre ci muoviamo
su guardiamo noi guardiamo il feedback
guarda i registri dalla nostra applicazione
server nel database per essere sicuri
non c’è nulla di sorprendente in cui apparire
lì e guardiamo le metriche da fare
certo che stiamo vedendo cosa vorremmo
aspettarsi la giusta quantità di assorbimento su
una nuova funzionalità e quindi faremo anche riferimento
torna a sapere se stiamo ricevendo supporto
biglietti per le persone che si lamentano
questa caratteristica particolare e vedremo
nei nostri forum degli utenti per vedere se qualcuno
segnalando che c’è un bug sul sito
o in relazione a questo e quando ci sentiamo bene
a tale proposito, passiamo al punto
di leggere al cento per cento su
il on alla nuova versione che significa
che siamo praticamente pronti a tagliare
diritti alla vecchia versione e possiamo fare
che non dobbiamo effettivamente eliminare
qualsiasi codice a quel punto possiamo solo girare
fuori e tutto è a posto così tu
sappiamo che proviamo ad evitare molte versioni
avere qualcosa a che fare con l’apportare modifiche
alla logica e alla produzione con il
eccezione di solo queste bandiere
questo è qualcosa che ho imparato due notti
fa è in immagino più di una sorta di
modello o modo Enterprise-e di cui a
come ramo per astrazione e penso
penso che sia un grande set up questo è
questo sai che modella completamente ciò che noi
ho aggiunto i miei nomi qui
i nostri controllori hanno parlato con un utente
modello e all’interno del modello è dove noi
metti questa bandiera di configurazione così tutte le persone
scrivere un codice che va in primo piano
fine no, non ho davvero bisogno di sapere
dove ottenere le loro preferenze utente
non è necessario toccare SQL o modifiche a
chiede cose come quella del modello degli utenti
è l’ unico posto che deve sapere
che queste due cose diverse esistono
ed è qui che avvengono i cambiamenti
ci sono un paio di link qui
queste diapositive saranno disponibili successivamente ma
questi ci sono alcuni link ad altro ancora
discussione su questo, ma come ho detto io
non conoscevo quel nome, quindi sono stato
chiamandolo così a lungo lo chiamo
la migrazione in quattro fasi e credo
in verità c’è probabilmente un quinto passaggio
a quello che sta tornando e pulendo
il codice e dopo il gioco è fatto e
questo diventa sempre una domanda per noi
perché è una questione di se lo farai
mai bisogno di quel codice di nuovo se ti fermi
scrivendo i tuoi dati su quello vecchio
versione quindi probabilmente non hai bisogno del
codice se il codice è un pasticcio completo
probabilmente vorrai liberartene
e se è un problema di prestazioni
sicuramente vorrai ottenere
liberarsene ma se il vecchio sistema se il
la vecchia versione è ancora valida ed è
ancora stabile quindi è una buona uscita
strategia per se qualcosa va storto
con la tua nuova versione in modo da tenerlo dentro
posto per poter eseguire il rollback in
il futuro forse può essere giorni o settimane o
anche mesi e anche questa è una questione di
se hai tempo perché la pulizia prende
tempo c’è un compromesso lì quando
Michael e io abbiamo iniziato a parlare di questo
parlare noi abbiamo ottenuto su questa questione su
come influisce la consegna continua
processi che sono a monte di
produzione e ingegneria e ho pensato
su questo molto questo non è questo non lo è
davvero strettamente coinvolto con continuo
consegna in quanto è proprio quello che siamo stati
in abili fare e come ci piace lavorare
il nostro processo di upstream è davvero molto
leggero facciamo noi abbastanza
pianificazione in termini di scrivere le cose
abbiamo un alto codice di visibilità per i nostri team
non sono a posto stanno lavorando nel
stesso luogo
non c’è territorialità su questo è
il mio codice questo non lo tocchi e
c’è alta comunicazione così è
qualcosa che ci ha davvero aiutato
senza che tu sappia che tipo di progettato
per situazioni contrattuali
tutti possono distribuire codice e distribuire
è banale questo non è questo non è un
evento speciale quindi mantenere l’implementazione
veramente economico ci consente di fare di più
rapidamente che è ciò che ci piace così c’è
alcune filosofie di cui voglio parlare
alcune delle cose che lo siamo davvero
ci troviamo davvero di successo all’interno di noi
ha continuato una distribuzione continua
dovrebbero anche raccogliere dati sull’ambiente
essere economico quindi la possibilità di ottenere un
prototipo in produzione e inserirlo
fronte di un gruppo beta limitato o 1% di
voi utenti e raccogliete dati se
Si sta lavorando è incredibilmente utile siamo
guardando con nuove funzionalità per
porta e impegno interessanti prima
passiamo un sacco di tempo per assicurarci che
questo è davvero molto solido
architettura così spesso il primo il
la prima iterazione è molto di molto
sperimentare e in gran parte non importa
com’è l’architettura quando
si sta distribuendo a 1% ci siamo quasi
mai certo cosa succederà se
apportiamo una modifica al sito in termini di
se sarà una caratteristica migliore o
se sia una caratteristica peggiore in
alcuni casi questo sta cambiando le dimensioni di
il pulsante che dice aggiungi al carrello ‘ ma noi
piace essere in grado di testare e raccogliere dati
intorno a questo e non ci piace sprecare
tempo per arrivare a quello ci concentriamo su come ottenere
codice alla produzione il più rapidamente possibile
possibile e quindi assumiamo designer
grafici che sono in realtà
davvero funzionale in una base di codice che sono
in grado di scrivere ai nostri progettisti
in HTML e CSS a cui si impegnano direttamente
il nostro repo diventa ancora più folle è il loro uso
la linea di comando per fare questo e loro possono
stub anche un controller fuori in gran parte
abbastanza da poter creare il
modelli che useremo su
sito in modo che un ingegnere del motore possa
segui con logica aggiuntiva ma
possono fondamentalmente escludere cosa
qualcosa assomiglierà e
distribuirlo alla produzione in modo che possiamo guardare
a questo nostro
se stessi come ho detto architettura in gran parte
non importa quando stiamo parlando
gruppi molto piccoli e vogliamo trovare
fuori se qualcosa sarà
vale la pena quando inizieremo la progettazione
all’interno di un piccolo gruppo all’interno della tua squadra
i tuoi pari prenderanno tante scorciatoie
possibile e si raggiungerà ad
un architetto sulla squadra qualcuno di più
senior fondamentalmente come controllo di sanità mentale
assicurati che non stiamo tagliando
noi stessi fuori dal fare la cosa intelligente
più tardi, ma spesso ci limitiamo a farlo
modelli conosciuti se noi se non vogliamo
per inventare nuove cazzate da aggiungere al sito se
le cose che abbiamo sul sito
già sta ancora trattenendo ciò che vogliamo solo
inventare nuove cose quando quando noi
sapere che non funziona più per
noi un’altra cosa che sentiamo è davvero
importante perché la distribuzione è davvero
facilmente facile e non richiede molto
organizzazione per rilasciare qualcosa è
che proviamo ad uccidere le cose come
rapidamente possibile e già nel
possibile ci piace sbarazzarci del codice
questo non funziona e sbarazzarsi di
funzionalità che non funzionano supportando
le caratteristiche legacy in particolare sono davvero
noioso e frustrante e ci toglie
tempo dal tuo team di progettazione, quindi è così
davvero bello sbarazzarsi di questo e di quello
anche da quello che ti libera da
pensando che il tuo codice sia perfetto
tutto il tempo se sai che è di qualcuno
gonna take gioia e sbarazzarsi di esso in
il futuro dopo i tuoi esperimenti
fallito ti concentrerai piuttosto ti concentrerai
sulla spedizione delle tue funzionalità più rapidamente
piuttosto che costruire cattedrali così noi
sempre mi piace chiedere è la soluzione stupida
abbastanza per noi per costruire un prodotto e come
lunga è la soluzione stupida che durerà
perché spesso, di volta in volta, si scala
10% della maggior parte delle ipotesi che hai
iniziato con o sbagliato e tu inizi
reagire e noi architetti siamo i
cosa a cui ci piace concentrarci dopo
abbiamo visto che qualcosa sta funzionando
poi lo mettiamo, poi lo dimostriamo ulteriormente
e renderlo migliore di questa architettura
che avevamo quando eravamo 10 milioni
le pagine al mese sono completamente diverse da
cos’era quando abbiamo 100 milioni di pagine
visualizza un mese ed è ora completamente
diverso come siamo oltre un miliardo di pagine
un mese quindi cerchiamo di non prenderci
troppo seriamente
c’è un corollario che penso a questo
che è non giudicare frettolosamente la gente
chi ha costruito la versione prima di te perché
le loro ipotesi erano completamente
diversa questa è una citazione come lo ero io
parlando con Kellan di chi è il nostro CTO
questo discorso, ottenendo e allenando alcuni
idee ho deciso di citarlo
direttamente su questo e non completamente
rubarlo perché pensavo che fosse davvero
Metti bene, abbiamo ottimizzato per essere noi
non ottimizzare per essere giusto o avere
l’architettura giusta per cui abbiamo ottimizzato
sapere quando abbiamo torto e quando lo è
tempo di cambiare e così lavoriamo davvero
difficile a diventare bravo a cambiare la nostra
architettura che migrazione in quattro fasi
di cui ho parlato
stiamo impazzendo maestri al farlo
lavoro che è praticamente quello che è il mio team
fare quasi tutto il tempo sta tornando e
refactoring cose che non stanno funzionando
o passando da un vecchio archivio dati a un
nuovo data store per scoprire come
rendere le cose migliori così siamo costantemente
lavorando attraverso questo processo di taglio
tira fuori il vecchio e porta il nuovo
con tempo di attività completo in cui spendiamo
il tempo è è entro il secondo o il terzo
iterazione quando sappiamo e abbiamo
dati che suggeriscono che questo è un
vale la pena, allora iniziamo
portare più ingegneri senior a
rivedere come funziona l’architettura come
le persone lo stanno usando e ciò che è nuovo
le aspettative ci arrivano dopo che lo abbiamo fatto
dati raccolti non stiamo più indovinando
a questo punto vale la pena investire
tempo così un’altra altra sezione voglio
per parlare ho circa 15 minuti
a sinistra penso qui, quindi voglio entrare
un po ‘di integrazione e operazioni
e poi penso che ci sia un po ‘
più su alcuni pensieri finali che se
Posso arrivarci sarà fantastico se non no
grosso problema quindi questo era il mio
definizione di come facciamo continuo
lo spiegamento nel pezzo principale qui è
in cui ci stiamo costantemente integrando
produzione la parte le misure di sicurezza
Ho parlato di questi dovrebbero essere carini
ovviamente è abbastanza evidente a tutti
qui revisione del codice prima di impegnarci
piace ottenere colleghi che guardano il codice e
solo assicurandoci che non stiamo davvero facendo
le cose stupide e anche perché siamo
cambiare le cose così rapidamente dentro
la produzione è sempre bene avere
qualcuno lo sa
qualcuno seduto accanto a te o qualcuno
si sa in un altro gruppo sapere cosa
stai per dispiegarti perché così tanti
persone diverse stanno dispiegando cose
durante il giorno test automatico prima
si distribuisce questa dovrebbe essere ovvio
vogliamo fare tante convalide quanto noi
può sviluppare prima di spingere
cambia in produzione che implora il
domanda perché ci preoccupiamo di integrare
con la produzione se stiamo scrivendo a
eseguendo test con il nostro codice allora
c’è un presupposto che forse sta correndo
loro contro ogni commit è abbastanza per
assicurati tutte le nostre supposizioni perché siamo noi
preoccuparsi di distribuire il codice come
beh , sembra che forse stiamo chiedendo
per ulteriori problemi e la risposta
questo è che dev dev è il tuo ambiente
non è lo stesso della produzione e se tu
pensa che lo stai facendo
essere costantemente sorpreso dal modo in cui
siamo costantemente sorpresi se il tuo dev
ambiente erano esattamente come prod poi
l’unità test in esecuzione in dev sarebbe
perfetto per la convalida del tuo software
funziona ma quando lo si distribuisce a
la produzione si trovano spesso che questo è
non è una domanda così veloce per tutti
quanti di voi scrivono test mentre siete
scrivendo il tuo codice o anche prima di te
scrivere il tuo codice mi aspetterei molto
delle mani su questo equipaggio quanti di voi
aspetta che tu abbia scritto tutto il tuo
codice prima di scrivere i test ok
incredibile non vedo le mani, il che significa che
voi ragazzi siete tutti ingegneri di modelli e voi
dovrebbe Pat voi stessi sulle spalle questo
è fantastico con cui ci stiamo integrando
la produzione è una prova di per sé che è
perché lo facciamo frequentemente in piccolo
lotti questa è la stessa cosa con l’unità
prova con frequentemente e in piccolo
lotti che ho sentito di recente produzione
è veramente l’unico posto che puoi convalidare
il tuo codice recentemente significa 40 minuti fa
Michael ha detto che nell’ultimo discorso
la produzione in dev non è la stessa
perché questi sono i tipi di cose
quello che va storto sono queste le cose
che a volte non ce ne aspettiamo
le cose che mi piacerebbe davvero su questo
elencare un po ‘più in basso i dati legacy
abbiamo sette anni di utenti
chi è stato in più versioni di
il nostro software e i dati su di loro
è cambiato al punto che ora le persone lo sono
in stati che non esistevano due anni
fa quando abbiamo assunto la maggior parte dei nostri
team di ingegneri quindi non lo sanno nemmeno
come dovrebbero apparire i dati e noi
non ho tutti questi dati in profondità
perché ce n’è troppa anche noi
non c’è traffico di produzione in esecuzione
il nostro ambiente di sviluppo è quindi difficile
simula tutti i diversi scenari
quello può andare storto in produzione sì voi
puoi modellare il traffico e puoi farlo
simulazioni ma modelli nelle simulazioni
mostra solo ciò che ti aspetti o cosa o
quello che hai visto in passato potresti essere
ripetizione della cronologia di riproduzione, ma è così
cos’è cosa è successo in passato
cambia sostanzialmente i cambiamenti futuri
ogni volta che distribuiamo il codice, che cosa è il nostro
l’applicazione sembra cambia ogni
tempo qualcuno fa un commit così è
davvero difficile sapere tutto questo
potrebbe andare storto ecco uno dei miei
i preferiti e sono anche così imbarazzato
sebbene fossi coinvolto in questo
utilizzando un database MySQL per testare un
applicazione che alla fine andrà a
essere un Oracle questo è probabilmente il peggiore
si può pensare di inestimabile
verificare frequentemente in piccoli lotti non
dopo aver scritto settimane e mesi di
codice ma per tutto il tempo stiamo integrando
con la produzione e solo così non lo fai
perdere traccia questo dev non è uguale a prod
lavoriamo in squadra, lavoriamo davvero
difficile mantenere questi due ambienti come
vicino possibile la gente conoscono
chef o burattino o configurazione
gestione okay, quindi suoniamo noi suoniamo il
stesse ricette di prod in sviluppo noi
mantenere questi in sincronia ancora sulla base di tutti
quelle cose che ti ho detto prima che non possiamo
mantienilo uguale e più grande otteniamo
più dev non è come la produzione quindi
ci piace anche mantenere le distribuzioni davvero
semplice e molto veloce ci piace mettere a fuoco
su cose che ci portano valore quando io
iniziato abbiamo avuto quattro diversi
ambienti che avevamo dev dove sono le persone
lavorando e poi QA dove sono le persone
l’integrazione di messa in scena che è molto
come una pre-produzione e poi
produzione, ma ci siamo resi conto che dovremmo
probabilmente tagliare alcuni grassi questi
dove sono quegli ambienti
in realtà una specie di divisione in termini di
Servizi
Devon QA ha condiviso lo stesso database così
avevano gli stessi dati terribili
staging aveva anche un proprio database e
i suoi server memcache sono totalmente
separare dalla produzione quindi non vedere
traffico e non vedere lo stesso
le cose che si vedono nella produzione che
è stato abbastanza inutile per noi, ma abbiamo speso
test di tempo e messa in scena e scoperta
cose che erano sorprendenti che sempre
finito per essere un artefatto del
gli ambienti sono sbagliati e e
unsimilar
quindi in realtà lo abbiamo ridotto a
qualcosa come questo dev ha il suo
database e servizi e quindi un pre
prod che non è quello che abbiamo ribattezzato
dalla messa in scena quindi non c’è confusione
pre prod comunica agli stessi server il
servizi come i nostri server di produzione
parlato con così pre prod è essenzialmente il nostro
punto di controllo di sanità , dump nuovo codice
su di esso e assicurarsi che sia ancora
lavoro che dice come gli schemi o il
nuove versioni di un servizio che siamo
a seconda che siano in produzione in questo
stanno lavorando quindi è davvero importante
pensare a tagliare il grasso dal tuo
distribuire pipeline e renderlo veloce
prova la tua integrazione dove vedrai
valore come ho detto che il QA non ha fornito un
molto valore per noi abbiamo una build
stadio in cui gestiamo tutto il nostro nostro
integrazione e unit test ma noi no
più a lungo ha un’interfaccia web per farlo
essere in grado di fare clic manualmente intorno ad esso
non ci ha fornito alcun valore config Flags
proteggici perché ancora siamo
integrando con la produzione ma siamo
non solo buttare via le cose di fronte
gli utenti tutto il tempo
siamo Privett che ci impedisce il rischio
questo e abbiamo questo molto ricco
meccanismo per poter girare il
visibilità di un prodotto fino a
produzione e questo penso sia probabilmente
ciò che le nostre piscine di canarino sembrano essere le nostre
capacità di rivelare una nuova parte del nostro
applicazione su un solo sottoinsieme del nostro
utenti ed essere in grado di ispezionarli contro
altre parti della nostra base di utenti
Ho parlato di convalidare prima
implementando convalidiamo anche dopo che c’è
nessun motivo per cui non puoi eseguire gli stessi test
in produzione quindi lo facciamo anche noi
avvisi automatici che si attivano quando questi
falliamo usiamo metriche in tempo reale e
cruscotti che guardano tutto da
la salute della nostra rete e dei nostri server
come la nostra applicazione esegue quanti
quante persone hanno colpito un particolare
parte della domanda o innescato un
evento particolare e poi cose simili
metriche di business come le nostre casse
accadendo e quanti soldi abbiamo
fatto tutto il giorno e li abbiamo messi
metriche di fronte a tutti noi
in realtà hanno una dashboard così come sei
distribuire il codice questa è una delle cose
devi mettere di fronte a te è essere in grado
guardare alla salute del sistema e
Mi scuso che tutti questi sono così
grigio e difficile da leggere ma ci proverò
diciamo che più basso è il nostro lato inferiore
livello web che è tutto il nostro Apache
server e il numero di richieste per
secondo in alto o cose come login e
registrazioni e checkouts e quindi
c’è qualche pagina di performance e in
medio così come se la nostra performance
soffre dopo un dispiegamento ed è Michael
sottolineato nell’ultimo discorso che usiamo
queste linee verticali per indicare quando
abbiamo cambiato qualcosa nel
applicazione o la nostra configurazione in genere
beh, mi occuperò di ciò che conosci
la domanda sarà perché è un ingegnere?
ho bisogno di questo di fronte a me e la risposta
è oh sì perché non ne abbiamo
responsabili del rilascio che fanno questo per te
lo stai facendo tu stesso che stai spingendo
il pulsante te stesso e sei anche tu
monitoraggio quando il codice va in
produzione per assicurarsi che le cose siano
lavorando così sì queste linee di distribuzione
fondamentalmente significano cambiamenti e lo siamo
cercando quei parametri per spostare
a volte salgono a volte
scenderanno a volte guarderanno
come questo è uno dei miei preferiti per
guardare dopo un dispiegamento che è il nostro nostro
larghezza di banda di uscita e se la nostra larghezza di banda
dal nostro centro dati scende del 25%
potresti pensare che potrebbe non farlo
è stato previsto che sembra simile
di comportamenti interessanti che non conosciamo
se è qualcosa che si è appena rotto
se le persone non stanno arrivando a
certa parte del nostro sito o forse quello
abbiamo appena migliorato qualcosa dove
stiamo spedendo molte meno immagini
o le immagini sono ridotte drasticamente
quindi abbiamo questo feedback operativo
ciclo che ogni ingegnere coinvolto in
scrivi il tuo codice di rilascio e
allora tu controlli cosa sta succedendo
produzione e se è se è
funziona come ti aspetti e c’è
questo fantastico c’è questa grande cosa
pensa dall’uso militare osserva l’orient
decidere e agire così osserviamo un orient
stiamo raccogliendo le metriche e lo siamo
guardando quelle metriche che misurano se
qualcosa funziona correttamente o no
funziona correttamente e quindi stiamo facendo un
decisione di apportare modifiche al nostro
applicazione su base frequente a
rispondere a quella distribuzione continua
ci consente di mantenere quel ciclo davvero
veramente vicino e stretto e tendo a
parlare di questo mi riferisco a questo come a
software teorico versus pratico
ingegneria se non sei a mio parere
se non lavori e vedi cosa
la produzione sembra che tu sia
in gran parte facendo ipotesi su come il tuo
il software funziona ma se stai operando
il software e ad essere coinvolti in
guardando le metriche, allora sei veramente
praticamente coinvolto nel suo funzionamento e
comprendendo le ramificazioni di
le decisioni che hai preso come i tipi
di sorprese che potresti trovare se noi
spegni gli strumenti che ti permettono di
tradurre sul sito abbiamo trovato questo
a un certo punto quando stavamo facendo un po ‘
test che era quello della nostra pagina
le prestazioni sono migliorate drammaticamente quando
chiudiamo gli strumenti a cui ci ha portato
guardando più da vicino a come il
gli strumenti di internazionalizzazione funzionano per noi
e refactoring li mette anche voi
molto vicino a quando le cose vanno male
è davvero bello quando tu spingi
un po ‘di codice e scopri che sei tu
erano completamente sbagliati o hai dispiegato a
bug che brucia con te e
sì, è davvero rotto così ancora
è questo non è solo la costruzione
l’aereo ma volando è tutto
quadranti e leve a portata di mano che facciamo
questo costantemente e sebbene queste date
significa probabilmente nulla per te in
Stati Uniti questi sono il tipo di
pietre miliari che portano al nostro nostro
La stagione dello shopping natalizio e questo è
il punto in cui i siti di e-commerce di solito
distribuire il codice e sembra così
per noi queste bande rosse sono il mese
prima di Natale e siamo ancora al
punto in cui siamo in grado di reagire e
far funzionare il sistema e lo taglierò
là fuori c’è l’ultimo bit che sto per fare
a corto di tempo per ma questo è quello che io
avere per voi e vi ringrazio molto tutti
giusto la domanda è cosa in cosa a
a che punto coinvolgiamo affari e
la risposta è questa ingegneria
squadre stavo parlando che circa che sono
molto piccoli di solito sono fatti di
da due a due a cinque forse due a
forse sei ingegneri e poi un designer
e poi un product manager che è
in sostanza rappresenta il business così
avremo in termini di pianificazione faremo
hanno generalmente circa tre mesi di bande
che pianificheremo faremo un po ‘di core
come pennellate molto spesse di cosa
pianificazione trimestrale sembra e poi
ognuna di quelle squadre sarà come
tipo di scappare da soli
è molto decentrato se lo sono
ottenere quello che vogliono
sì, così parte della raccolta delle metriche è
anche una grande quantità di affari
intelligenza che raccogliamo così dentro
quella squadra siamo in grado di se siamo se
stiamo implementando un test o implementando un
nuova funzionalità otteniamo una quantità molto ricca di
dati che tornano dal sito che
noi che informiamo il business di cosa
va avanti e se le cose stanno funzionando
come ci aspettavamo, grazie mille
tu
continua a pianificare e continua
la consegna sembra effettivamente nella pratica
è difficile è difficile parlare
sulla consegna continua a Etsy
senza parlare solo di come
lavoro in generale quindi penso che penso
questo è il modo in cui lavoriamo
influenzato e abilitato da fare
consegna continua quindi avrò ragione
di solito ci riferiamo a questo
come implementazione continua così quando tu
ascoltami dire che il dispiegamento continuo è davvero
quello di cui stiamo parlando è lo stesso
cosa e tu potresti non averlo capito
la maggior parte delle persone qui probabilmente non lo sa
ciò che è / che non siamo ancora espansi
molto lontano in Europa o in Asia, ma
Etsy è un mercato, è un posto
dove le imprese creative possono vendere
online sono piccoli negozi indipendenti e
abbiamo a che fare con che abbiamo a che fare
l’e-commerce è questo è fondamentalmente
una compagnia di 7 anni quindi anche noi guardiamo a
molto come una startup nonostante le dimensioni di
il nostro team sembra molto simile a
start-up e lavoriamo in questo modo e il
il prodotto principale è un sito web così solo per
sii davvero chiaro che non lo siamo
software di packaging al di fuori della distribuzione
un’app per iOS in questo momento tutto ciò che spediamo
va davvero ai server web, quindi è così
solo un po ‘di contesto intorno a questo
questo è come appare la nostra crescita
termini di vendita solo per darti un
prospettiva sul nostro continuo aumento
questo è un fatturato lordo nel
mercato quindi questo è il denaro
negoziato tra compratori e venditori
anche noi siamo abbastanza grandi
facendo quasi un miliardo e mezzo di pagina
abbiamo visto un mese solo in agosto
quasi o nota che abbiamo fatto 76 milioni in
transazioni così a volte quando le persone
parlare di distribuzione continua e
distribuendo rapidamente c’è un’associazione
con essere una piccola società o essere
in grado di correre rischi maggiori e penso
la storia qui è che è che possiamo
prendi questi rischi e continua ad abilitare molto
di crescita e un sacco di transazioni per
succedendo abbiamo circa 170 persone
impegnandosi a nostra base di codice che
include i nostri ingegneri
designer e product manager e se
sei se stai scrivendo il codice che sei
dispiegando anche il codice questo è il tasso di
distribuisce quello che abbiamo visto durante l’ ultimo
due anni abbiamo iniziato fondamentalmente a fare
dispiegamento continuo al massimo
molto fine del 2009 e come puoi vedere
inizia una sorta di ticchettio laggiù
la differenza tra i colori qui è
quel giallo è una distribuzione completa dell’applicazione
dove stiamo spingendo tutto il codice che è
nella nostra linea principale il rosso è dove
stiamo lanciando le bandiere di configurazione e lo faremo
parlare un po ‘di che
ma puoi vedere che questi sono questi
le metriche sono al giorno, quindi puoi vederlo
in media lo sappiamo in generale
stiamo facendo tra 20 e 30 deploys a
giorno e poi la nostra configurazione cambia o
da qualche parte sai generalmente 10 a 10 a
20 a volte 30 o 40 modifiche di configurazione in
un giorno quindi è così che stiamo cambiando velocemente
cose sul sito che proveremo
parlare di alcuni dei più avanzati
argomenti e mi aspetto che tu venga
entrare qui in qualche modo sapendo così dentro
lo sfondo di ciò che continua
la consegna è che non ho intenzione di andare
in così tanto di ciò che, ma davvero di più
del modo in cui guarda a Etsy
questa è la parte wiki di Wikipedia
articolo e questi sono alcuni dei termini
che probabilmente hai riconosciuto ripetutamente
spingere l’overhead manuale minimo a basso rischio
cosa manca da quello che penso sia
alcune cose come questa e queste sono alcune
degli argomenti che finiremo per parlare
un po ‘più DevOps che lo sa
di DevOps le persone conoscono questo movimento
fantastico fantastico lavorare direttamente a
tronco principale o maestro qualunque cosa tu
voglia chiamare caratteristica Bandiere persone
sapere quali feature flag sono grandi
guardando bene e poi ramificandosi
codice che ovviamente è quello principale
linea hai caratteristiche Bandiere e
ramificando nel codice quelli sono davvero
davvero una specie di cuore di ciò che siamo
facendo inizierò con delle scuse però
perché ho sentito un po ‘ di
ridacchiando alla fine dell’ultimo discorso
quando è stato menzionato PHP lavoriamo in PHP così
per favore non correre fuori le porte così questo
è davvero il nocciolo del discorso cosa
la distribuzione continua sembra a Etsy
in pratica ogni singolo giorno questo è
meno di quello che è più di come applichiamo
e
perché non sono un consulente e non lo sono
un ottimo venditore che sarà
più di questo è solo quello che stiamo facendo
e questo è ciò che troviamo che funziona e
meno di voi ragazzi dovreste uscire e provare
farlo proprio in questo modo, perché penso
è una grande idea per te non è un
proposta unica per tutti, quindi non lo sono
Non sono qui per dirti che lo sei
fare le cose sbagliate se non vuoi
fare questo, ma questo è ciò che funziona per
noi questo è il nostro pulsante di distribuzione tutti
sul nostro team di ingegneri tutti i nostri
designer tutti i nostri product manager
chi sta effettuando il codice ha accesso a
questo finchè riesci a superare il
Le credenziali LDAP si possono ottenere a questo
quando premi questo pulsante, distribuiamo tutto
del nostro codice app per la nostra produzione
i server che elaborano richiedono solo circa
due minuti per il reale
l’implementazione ci sono alcune build e cose
che vivono portano a questo ma ma
spingere il codice è abbastanza veloce
quindi alcuni allora e ora è il tipo di
prima della fine del 2009 quando noi quando noi
trasferirlo su continuo
distribuzione e ora è il 2010 da allora
quindi sono ore e ore di spiegazioni e
come Michael ha parlato dello spiegamento
esercito questo era di solito almeno cinque
persone e quando stavo intervistando per
Etsy una delle persone che era
intervistarmi doveva partire durante il
intervista per andare a fare aiuto con un dispiegamento
perché non stava funzionando troppo a lungo
e le cose stavano fallendo è altamente
orchestrato e poco frequente ora è uno
persona che preme un pulsante per l’intera build
e distribuire richiede circa 15 minuti e
si tratta di un ciclo di rapida rapida questa
è un evento speciale che dovevamo pianificare
fuori e organizzare ora è un luogo comune
e se chiedi alla maggior parte dei manager
il team non sanno nemmeno cosa sia
schierato in un solo giorno, francamente
un po ‘una sfida per noi ma
è una delle cose in cui abbiamo
spinto al processo decisionale e alla velocità di
consegna alla nostra squadra più piccola
quindi ogni squadra di ingegneri parla di te
conosci da due a sei persone fuori da un
l’intero gruppo a ciascuno di essi è ordinato il
il punto è dare potere a tutti questi team
uscire e costruire rapidamente le loro caratteristiche
in passato ne ho parlato molto
gestendo il nostro sito in modo operativo
senso e questa è una delle cose che
il dispiegamento continuo ci consente di
fare
in passato se avessimo avuto un problema con a
schierato saremmo bloccati attraverso il
resto di quello deploy e poi
attraverso il follow-up schierato per spingere a
correggi che saranno ore e ore
e ora e ora con continuo
implementazione siamo in grado di apportare modifiche
molto rapidamente può essere un dispiegamento povero
risolto entro circa 10 a 15 minuti
e se solo stiamo per essere tweaking
config flag quelli in realtà solo in distribuzione
prendere circa cinque minuti c’era un sacco
più complessità attorno alle implementazioni in
il passato della confezione era stato rilasciato
rami abbiamo accoppiato cambiamenti di schema
insieme al codice distribuisce chi sei
immagina se stai provando a farlo e
stai trasformando i dati allo stesso modo
tempo che probabilmente avrai
tempi di inattività per questo come sei come sei
spostando entrambe le versioni avanti ora noi
lavorare fuori dalla linea principale che facciamo molto minimamente
collegando c’è sempre qualcosa che
dobbiamo mettere insieme il posto prima
prima di spingere, ma le nostre build sono complete
i nostri spiegamenti sono essenzialmente i nostri lavandini
e di nuovo questo è PHP, lo siamo
lavorando con così questo è uno dei più grandi
vantaggi che otteniamo da ciò che è
che possiamo semplicemente archiviare i file in posizione
e iniziano a correre non ce n’è bisogno
preoccuparsi di eventuali altri riavvii o cose
come quella per così riassumere che fino vecchio o il
passato questo è lento e complesso e
speciale nuovo o quello che stiamo facendo ora è
veloce e semplice ed è comune è così
è comune quando hai iniziato quella scena
questa è la prima cosa che impari
come distribuire il sito nel primo giorno
ti assegniamo un progetto per mettere te
conosci la tua immagine sul nostro sotto
la nostra azienda come quella della squadra e quella
in realtà non coinvolge un sacco di
il codice non è non comporta come
davvero imparare le profonde viscere E ‘
è un progetto abbastanza semplice per
capire dove mettere una foto di
te stesso ottenendolo in un modello ma
allora sai che viene fornito con il
sovraccarico di capire come ottenere
sulla tua macchina virtuale in cui il codice
vive come eseguire test su come distribuire il
sito e dove trovare le metriche per garantire
che tutto funziona correttamente
dopo la distribuzione è fatto così nel molto
il primo giorno stiamo cercando di prendere
tutta la cerimonia lontana dagli schieramenti
il secondo giorno ti lasciamo completare
i vostri moduli fiscali e assicurativi e
benefici e cose del genere
questa è la roba più difficile che non ho menzionato
qualsiasi cosa nei primi due giorni
sull’apprendimento della nostra struttura o a
codice base usiamo un modello di codifica ORM
o qualcuna di quelle cose che ti piacciono
può imparare nel tempo ma se si spinge
imparando lo sviluppo fino a più lontano
in fondo alla strada dopo aver speso una coppia
di mesi costruendo qualcosa poi
diventa un grande evento spaventoso e questo è
esattamente quello che stiamo cercando di evitare di fare
perché questo è il pulsante che sta andando
di essere di fronte a voi e si deve
distribuire e questo significa qualcosa che siamo
davvero bravo a fare questo come me
abbiamo detto che stiamo spingendo da 20 a 30 volte al giorno
e se non ti è familiare
quello dovrebbe sembrare davvero spaventoso e tu
dovrebbe avere una specie di fossa nella tua
stomaco che consegna qualcuno da schierare
pulsante senza alcuna misura di sicurezza è
come consegnare a qualcuno una pistola senza
sicurezza quindi voglio parlare un po ‘
su come renderlo sicuro ma io sono
andando a raccontarvi che poi ho
voglio solo precisare che se lo fosse
intrinsecamente pericoloso e se stessimo fallendo
distribuisce ogni volta che l’ abbiamo fatto o
anche il 10% delle volte l’ abbiamo fatto io
non pensare che sto speculando ma non lo faccio
penso che vedremmo la crescita oltre il
ultimi due anni che vediamo così così
distribuzione continua per noi si presenta come
questo piccolo frequente cambia tenerlo
come Michael stava parlando nell’ultimo
parlare mantenendo i lotti di cambiamenti
stai diventando davvero piccolo costantemente
integrando in produzione e io sono
parlerò molto di questo e del fare
questo ripetutamente durante il giorno così
domande che conosci alcune delle cose che io
voglio rispondere in questo discorso sono alcuni di
le domande che si presentano regolarmente
quando parliamo , conosci il processo
di dispiegare e e gli strumenti che noi
utilizzare per la distribuzione che non ho intenzione di
parlo di così tanto tempo ma ma come
questo influisce su ciò che stiamo facendo, quindi come fa
costruiamo così tante funzionalità così rapidamente
la risposta è che non stiamo creando funzionalità
che stiamo rilasciando ogni singolo giorno
stiamo apportando piccole modifiche incrementali
al sito che stiamo facendo aggiunte
il sito e se ci pensi in
termini di commit che stai facendo a
repo è la stessa cosa che stai facendo a
piccola quantità di modifica del codice che funziona
che sai che è valido e quindi
sei
lo stai integrando con la produzione
il software distribuito non è uguale al prodotto
Lanciamo possiamo lanciare il codice in ritardo che possiamo
effettivamente lanciare le funzionalità in seguito e noi
può organizzarlo in un più grande
cosa ma funziona davvero
spesso così questi ti impongono di sapere
in genere rappresentano solo un giorno o forse
un paio di giorni di lavoro e raramente loro
fanno essi costituiscono di per sé una completa
funzionalità o un progetto completo completo
quindi inseriamo il codice in te, lo sai
gated by config flags in modo che possiamo spingere
modifiche che sono incomplete perché
abbiamo sezioni della nostra applicazione
che sono disattivati ci riferiamo a questo come
rilasci scuri e quindi guardiamo
esattamente quello che sembra per noi noi
tendiamo a cercare di fare il più semplice
cosa possibile in molti casi nostri
le bandiere di configurazione sono solo incorporate in un
array in PHP e la ragione di ciò è
che se PHP e Apache stanno lavorando su a
assistente allora sappiamo che abbiamo
accedere alle nostre configurazioni se le mettiamo
in un servizio decentralizzato da qualche parte
servizio di altro o distribuito poi abbiamo
per garantire che quel servizio sia disponibile
e abbiamo imparato nel modo sbagliato
che non è sempre il caso, quindi se siamo
creazione di una nuova funzione di ricerca o se
stiamo refactoring di ricerca in atto, allora
iniziamo con una bandiera di configurazione nel fuori
posizione e quindi guardiamo il codice
esiste e ne abbiamo conosci qualcuno
un qualche tipo di cosa che stavamo facendo in
il passato che vogliamo migliorare
e lo avvolgiamo solo così abbiamo il nostro
la bandiera di configurazione dice se la nuova ricerca è attiva
allora faremo questa nuova cosa che noi
voglio fare usando l’energia solare e se non lo è
bene useremo solo il vecchio predefinito
versione i nostri assegni sono in realtà un po ‘
un po ‘più sofisticato di questo perché
possiamo possiamo impostare possiamo impostare valori
a parte solo on e off non lo è
binari ma abbiamo diversi livelli di
salire su così via significa davvero cento
percentuale di sconto significa zero percento per
utenti pubblici ma possiamo anche farlo
qualsiasi percentuale di utenti e possiamo fare
cose speciali come solo gli utenti dello staff o
forse una lista di
persone come me, John e Kelan
sono le persone che possono vedere questo
caratteristica particolare quindi stiamo schierando
codice frequentemente e stiamo convalidando in
produzione ma stiamo facendo in un modo
questo è nascosto al pubblico così
il software distribuito di nuovo non significa
lancia e non significano pubblico
visibilità su ciò che stai cambiando
Ho già parlato di questo
ma mi limiterò a sottolineare fuori di nuovo questi
sono piccole modifiche che tipicamente stiamo aggiungendo
parti di una nuova funzione quindi nuove classi
e controller e metodi in là noi
potrebbe avere designer che stanno lavorando
grafica e fogli di stile e modelli
che vengono aggiunti e potremmo
avere persone che stanno lavorando alla copia
modifiche ai contenuti non funzionano davvero
con un CMS sul sito perché la distribuzione
distribuire un cambiamento che è nel repository è
essenzialmente la nostra gestione dei contenuti
sistema e quindi abbiamo anche l’ abilità
per accendere e spegnere le bandiere e accostare ma
questo ci consente di rispondere anche a
problemi sul sito e come build
nuove funzionalità quindi immagina la nostra sicurezza
la squadra riceve una segnalazione di un buco nel sito
e vogliamo essere in grado di rispondere
velocemente
avere la linea principale pronta per la distribuzione
ed essere in grado di schierare velocemente significa
che possiamo avere qualcuno messo in una patch
in un modo molto rapido e distribuire quello
rapidamente perché abbiamo la fiducia
che sappiamo come fare questo e noi no
devo fare un sacco di cose
pre-pianificazione o organizzazione in giro
rilasciare il nostro codice o rilasciare il sito
possiamo anche rispondere a carichi imprevisti
nel traffico o contesa sul back-end
servizi di spargimento del carico è una cosa che
facciamo spesso il che significa che spegniamo
alcune funzionalità perché il back-end è
essere picchiato o qualcosa è
accadendo in produzione che non abbiamo mai
anticipato prima, quindi paragono questo ad un
compagnia aerea nel suo pilota, se tu fossi
costruire una versione un singolo singolare
versione del software che si che si
distribuire su base regolare, quindi solo tu
avere la possibilità di eseguire questo modo in questo modo
è un po ‘come avere un pre-programmato
percorso da Londra a New York e
una volta che sei in aria non puoi farlo
tutto ciò che non puoi non puoi
muoversi
e così, ma ciò che guardiamo continuo
la distribuzione abilitante per noi è che noi
abbiamo come parleremo un po ‘più tardi
e Michael ha parlato un po ‘
un po ‘prima abbiamo raccolto tonnellate e tonnellate di
metriche che sono come questi quadranti
sono di fronte a noi e li mettiamo
le metriche davanti a tutti così puoi
vederli e poi abbiamo questo davvero
ricco set di bandiere di configurazione così possiamo modificare
piccole cose che possiamo prendere
server specifici fuori rotazione che possiamo
accendi il traffico su un particolare
caratteristica possiamo disattivare le funzionalità
non funziona in questo operatore diventa
c’è una grande domanda di questo
operatore qualcuno sulle nostre operazioni
personale o è un ingegnere e lo fa
importa davvero che ci siamo un po ‘sfocati
linee non è noi non passiamo
software per il nostro team operativo da eseguire
sulla stanza ma siamo coinvolti con quello
e ciò che sembra in pratica è
queste caselle rosse sono sottolineando
diverse parti di uno strumento sul sito
chiamato preferiti che è come il tuo
possibilità di aggiungere dei segnalibri a prodotti specifici
tornare più tardi e con un semplice
config bandiera possiamo semplicemente capovolgere che fuori
e come vedete nelle nostre interfacce lo faremo
nascondi e nascondi quei pezzi del
applicazione quindi se il nostro strumento preferito
che abbiamo visto in passato ha avuto troppo
troppo carico e stava fallendo
richieste per qualche ragione possiamo solo
spegnerlo e la maggior parte degli utenti nemmeno
andando a sapere che la prossima grande domanda
otteniamo è come continuate a
distribuire continuamente la configurazione del database
lo schema cambia e questo lo so
è venuto un paio di volte prima di oggi
la risposta è che non viene implementato il nostro codice
succede circa una volta ogni 15 a 20 minuti
durante il giorno facciamo modifiche allo schema
Giovedì e la ragione di questo è quello
lo schema ovviamente quei cambiamenti sono
più costoso possono essere necessari alcuni cambiamenti
alcune ore abbiamo visto prendere giorni così noi
non avere un controllo molto fine
quando inizia e si ferma così è difficile
per sapere se dovessi cambiare una versione
di codice in risposta allo schema
quando dovrebbe atterrare
produzione quindi il rischio attorno allo schema
i cambiamenti sono più alti quelli sono posti
dove costringiamo più conversazioni
stiamo facendo la cosa giusta e ci muoviamo
un po ‘fuori dai singoli team e
parlare più in generale del rischio
coinvolto così la nostra applicazione è in realtà
in gran parte monolitico in esso si potrebbe
probabilmente trova le cose che sembrano
modelli di servizi attorno al database
diverse parti del nostro schema di database
in genere vengono trattati come servizi
dove stanno parlando i nostri controllori
che ce ne sono molti di meno
servizi web esterni nella nostra applicazione
e penso che sia un po ‘
diverso da quello che stava parlando Sam
circa stamattina ma questo è quello che noi
trovato
sembra funzionare molto bene, abbiamo un
molte persone che lavorano fuori dal comune
codebase quindi abbiamo una visibilità molto alta
in ciò che sta cambiando e molto in alto
visibilità in cui diverse parti di
la nostra applicazione è accoppiata
dove ciò accade , significa anche
che quando abbiamo eseguito i test, lo siamo
testare una specie di end to end e
tutto tra una delle cose
abbiamo giocato d’azzardo per un lungo periodo di tempo è
cercando di capire esattamente quali test
sono associati a un particolare cambiamento
invece siamo appena riusciti a mantenere il nostro
prova veramente veloce sul front end quando
facciamo un deploy che stiamo distribuendo tutto questo
diversi servizi insieme e noi
non è sempre stato così ma lo abbiamo fatto
librerie condivise che alimentano l’ Etsy
sito web di comunicazione indietro l’API dello sviluppatore
ufficio e strumenti di supporto che abbiamo
cose del genere e ciò che abbiamo trovato
il passato è se distribuiamo questi servizi
separatamente quindi finiamo con latente
bug nel codice sottostante, quindi se abbiamo
una libreria che sia etsy.com che
l’API degli sviluppatori fa affidamento su e solo noi
distribuire l’API quindi una volta che ci siamo
produzione possiamo trovare che l’API è
funziona perfettamente ma finiamo con
in bundle conosci il tipo di bundle
impegno che non abbiamo mai utilizzato
etsy.com
batching con alcuni impegni futuri
nel fare quel commit o in quella distribuzione
più confuso se qualcosa va storto
così
vedi che abbiamo trovato negli errori precedenti
si verificano nelle librerie di livello inferiore e se noi
non esporre se non integriamo tutto
quei front end in produzione al
Allo stesso tempo perdiamo traccia di alcuni di quelli
bug e questo è stato un problema
per noi è una di quelle pratiche
cose che abbiamo imparato nel tempo così
stiamo girando per un numero minore di sorprese
i servizi esterni non vengono distribuiti con
l’ applicazione principale e ho parlato
che è in qualche modo separato separato
programma i servizi esterni per noi
come il nostro database il nostro schema di database
il nostro gruppo di ricerca che funziona nel solare
e Java quindi è un animale molto diverso
da PHP e archiviazione foto che
ha anche avuto un completamente diverso
infrastruttura di back-end rispetto alla nostra principale
applicazione web e ci occupiamo di questo da
dalle bandiere di configurazione config che consentono consentire
noi per andare avanti e indietro
diversi stati di tali servizi così
un flag di configurazione che ci permette di usare a
nuovo rispetto a una vecchia versione di uno schema o
un nuovo contro un vecchio punto finale del nostro
livello di ricerca che cambia le bandiere
loro stessi sono molto molto veloci come ho detto
questo è meno di cinque minuti
non include che sai cambiare
mi scusi cambiando quella bandiera di configurazione
non significa che stiamo unendo qualsiasi codice
e non abbiamo niente a che fare con
ripristinando pezzi di codice se qualcosa
va storto è letteralmente una riga
cambiare da cose come a uno
per cento o fuori, quindi ci occupiamo di
questo esponendo più versioni di a
servizio o uno schema e la nostra applicazione
si aspetta più versioni e ha config
bandiere per permetterci di andare indietro e
avanti e quindi parleremo di questo in
lì rispetto ad un cambiamento a
schema del database e come appare
generalmente preferiamo le pubblicità sugli altari noi
non mi piace modificare i dati sul posto
soprattutto per aver mentito su una specie di
la trasformazione dei dati avviene su una colonna
come se la tua se la tua colonna di indirizzo per
qualche ragione per cui la formattazione doveva farlo
cambia e la tua domanda è in attesa
un lato contro il
questa è una cosa che credo sia Sam
indicato come ampliamento senza interruzioni
In realtà non ho mai sentito quel termine
prima di stamattina ma abbastanza bene
descrive di cosa stiamo parlando qui
stiamo parlando di aggiungere nuove
colonne invece di alterare le cose
in atto, gli alter possono impiegare molto tempo
come ho parlato prima di trasformarmi
dati in particolare su a su una colonna in
la produzione può rendere il tuo codice
incompatibili e cercando di collegare che fino
con una distribuzione del codice è davvero molto
difficile ripristinare qualcosa
hai trasformato in una nuova versione è
anche molto difficile quindi esponendone due
diverse versioni in produzione è
davvero importante per noi, così possiamo muoverci
avanti e indietro quindi parlerò del
aspetto pratico di come abbiamo fatto questo per
un particolare progetto che abbiamo fatto prima
anno che stava fondendo due diversi
tavoli un paio di anni fa abbiamo pensato
che ha preferenze utente separate
il tavolo era una grande denormalizzazione noi
ho scoperto che non l’abbiamo usato così tanto
e solo essere meglio avere pochi
valori in cui sono stati memorizzati
quel tavolo da unire al nostro
tabella degli utenti questo non era solo qualcosa
stavamo cercando qualcosa per cui lavorare
noi stessi abbiamo scoperto che eravamo
anche spostando il datastore stesso così
sembrava una buona opportunità per glob
quelle due cose insieme guardano i passaggi
in questo modo inizi a scrivere ad entrambi
versioni dello schema e poi una volta
hai iniziato a scrivere per entrambi quelli di cui hai bisogno
per capire come recuperare tutto il
dati esistenti che hai avuto nel
passato e poi una volta che hai e
hai convalidato e inizi a leggere
dalla nuova versione e una volta che sei
bene con quello hai tagliato il vecchio
versione non andare e andare in maggiori dettagli
su questo e ovviamente inizi
davvero con con l’aggiunta della nuova versione
allo schema prima di fare qualsiasi cosa
altra cosa che assomiglia a questo si aggiunge il
schema e aggiungiamo abbiamo aggiunto alcuni nuovi
colonne per la tabella di un utente e anche noi
iniziato con tre diversi tre
diversi file di configurazione che non avevamo mai
aveva prima che il primo era l’esistente
stato del sistema e lo trasformiamo in
così scrivendo i nostri scritti ai nostri utenti
le preferenze per questo vecchio tavolo che siamo
usando nel passato e poi in altri due
quello rappresentava lo stato che siamo
trasferirsi dove stavamo scrivendo
preferenze per la tabella degli utenti e poi
dove stiamo leggendo le preferenze dalla
tabella degli utenti invece di leggerli
da parte dell’utente
tabella delle preferenze quindi nel secondo passaggio
scriviamo il codice per la scrittura a due
luoghi e dopo che abbiamo schierato
alla produzione quindi giriamo la bandiera così
la nostra versione attuale o attuale di questo
significa che stiamo solo lanciando una bandiera come
in realtà non stiamo rilasciando l’applicazione
codice questi sono due diversi disploys
accadendo e poi passiamo attraverso a
processo che avviene offline dove noi
dove scriviamo alcuni script da trasformare
dati o semplicemente copiare dati da un posto a
un altro per prenderci fino al punto in cui siamo stati
quando lo abbiamo fatto perché lo siamo
ancora non leggendo dal nuovo
versione che stiamo leggendo dal vecchio
versione e poi arriviamo quando volevamo
per andare alla nuova versione come ho detto
abbiamo questa abilità a grana fine
per sintonizzare il traffico su una versione del nostro
applicazione così iniziamo a leggere
preferenze solo dalla tabella utenti
per le persone all’interno dell’azienda e possiamo
fallo per tutto il tempo che vogliamo a volte
sono un paio d’ore per convalidare
qualcosa di piccolo e qualche volta è un
un paio di settimane poi possiamo andare a uno
percentuale e possiamo andare al cinque per cento
e qualsiasi altra cosa desideriamo e mentre ci muoviamo
su guardiamo noi guardiamo il feedback
guarda i registri dalla nostra applicazione
server nel database per essere sicuri
non c’è nulla di sorprendente in cui apparire
lì e guardiamo le metriche da fare
certo che stiamo vedendo cosa vorremmo
aspettarsi la giusta quantità di assorbimento su
una nuova funzionalità e quindi faremo anche riferimento
torna a sapere se stiamo ricevendo supporto
biglietti per le persone che si lamentano
questa caratteristica particolare e vedremo
nei nostri forum degli utenti per vedere se qualcuno
segnalando che c’è un bug sul sito
o in relazione a questo e quando ci sentiamo bene
a tale proposito, passiamo al punto
di leggere al cento per cento su
il on alla nuova versione che significa
che siamo praticamente pronti a tagliare
diritti alla vecchia versione e possiamo fare
che non dobbiamo effettivamente eliminare
qualsiasi codice a quel punto possiamo solo girare
fuori e tutto è a posto così tu
sappiamo che proviamo ad evitare molte versioni
avere qualcosa a che fare con l’apportare modifiche
alla logica e alla produzione con il
eccezione di solo queste bandiere
questo è qualcosa che ho imparato due notti
fa è in immagino più di una sorta di
modello o modo Enterprise-e di cui a
come ramo per astrazione e penso
penso che sia un grande set up questo è
questo sai che modella completamente ciò che noi
ho aggiunto i miei nomi qui
i nostri controllori hanno parlato con un utente
modello e all’interno del modello è dove noi
metti questa bandiera di configurazione così tutte le persone
scrivere un codice che va in primo piano
fine no, non ho davvero bisogno di sapere
dove ottenere le loro preferenze utente
non è necessario toccare SQL o modifiche a
chiede cose come quella del modello degli utenti
è l’ unico posto che deve sapere
che queste due cose diverse esistono
ed è qui che avvengono i cambiamenti
ci sono un paio di link qui
queste diapositive saranno disponibili successivamente ma
questi ci sono alcuni link ad altro ancora
discussione su questo, ma come ho detto io
non conoscevo quel nome, quindi sono stato
chiamandolo così a lungo lo chiamo
la migrazione in quattro fasi e credo
in verità c’è probabilmente un quinto passaggio
a quello che sta tornando e pulendo
il codice e dopo il gioco è fatto e
questo diventa sempre una domanda per noi
perché è una questione di se lo farai
mai bisogno di quel codice di nuovo se ti fermi
scrivendo i tuoi dati su quello vecchio
versione quindi probabilmente non hai bisogno del
codice se il codice è un pasticcio completo
probabilmente vorrai liberartene
e se è un problema di prestazioni
sicuramente vorrai ottenere
liberarsene ma se il vecchio sistema se il
la vecchia versione è ancora valida ed è
ancora stabile quindi è una buona uscita
strategia per se qualcosa va storto
con la tua nuova versione in modo da tenerlo dentro
posto per poter eseguire il rollback in
il futuro forse può essere giorni o settimane o
anche mesi e anche questa è una questione di
se hai tempo perché la pulizia prende
tempo c’è un compromesso lì quando
Michael e io abbiamo iniziato a parlare di questo
parlare noi abbiamo ottenuto su questa questione su
come influisce la consegna continua
processi che sono a monte di
produzione e ingegneria e ho pensato
su questo molto questo non è questo non lo è
davvero strettamente coinvolto con continuo
consegna in quanto è proprio quello che siamo stati
in abili fare e come ci piace lavorare
il nostro processo di upstream è davvero molto
leggero facciamo noi abbastanza
pianificazione in termini di scrivere le cose
abbiamo un alto codice di visibilità per i nostri team
non sono a posto stanno lavorando nel
stesso luogo
non c’è territorialità su questo è
il mio codice questo non lo tocchi e
c’è alta comunicazione così è
qualcosa che ci ha davvero aiutato
senza che tu sappia che tipo di progettato
per situazioni contrattuali
tutti possono distribuire codice e distribuire
è banale questo non è questo non è un
evento speciale quindi mantenere l’implementazione
veramente economico ci consente di fare di più
rapidamente che è ciò che ci piace così c’è
alcune filosofie di cui voglio parlare
alcune delle cose che lo siamo davvero
ci troviamo davvero di successo all’interno di noi
ha continuato una distribuzione continua
dovrebbero anche raccogliere dati sull’ambiente
essere economico quindi la possibilità di ottenere un
prototipo in produzione e inserirlo
fronte di un gruppo beta limitato o 1% di
voi utenti e raccogliete dati se
Si sta lavorando è incredibilmente utile siamo
guardando con nuove funzionalità per
porta e impegno interessanti prima
passiamo un sacco di tempo per assicurarci che
questo è davvero molto solido
architettura così spesso il primo il
la prima iterazione è molto di molto
sperimentare e in gran parte non importa
com’è l’architettura quando
si sta distribuendo a 1% ci siamo quasi
mai certo cosa succederà se
apportiamo una modifica al sito in termini di
se sarà una caratteristica migliore o
se sia una caratteristica peggiore in
alcuni casi questo sta cambiando le dimensioni di
il pulsante che dice aggiungi al carrello ‘ ma noi
piace essere in grado di testare e raccogliere dati
intorno a questo e non ci piace sprecare
tempo per arrivare a quello ci concentriamo su come ottenere
codice alla produzione il più rapidamente possibile
possibile e quindi assumiamo designer
grafici che sono in realtà
davvero funzionale in una base di codice che sono
in grado di scrivere ai nostri progettisti
in HTML e CSS a cui si impegnano direttamente
il nostro repo diventa ancora più folle è il loro uso
la linea di comando per fare questo e loro possono
stub anche un controller fuori in gran parte
abbastanza da poter creare il
modelli che useremo su
sito in modo che un ingegnere del motore possa
segui con logica aggiuntiva ma
possono fondamentalmente escludere cosa
qualcosa assomiglierà e
distribuirlo alla produzione in modo che possiamo guardare
a questo nostro
se stessi come ho detto architettura in gran parte
non importa quando stiamo parlando
gruppi molto piccoli e vogliamo trovare
fuori se qualcosa sarà
vale la pena quando inizieremo la progettazione
all’interno di un piccolo gruppo all’interno della tua squadra
i tuoi pari prenderanno tante scorciatoie
possibile e si raggiungerà ad
un architetto sulla squadra qualcuno di più
senior fondamentalmente come controllo di sanità mentale
assicurati che non stiamo tagliando
noi stessi fuori dal fare la cosa intelligente
più tardi, ma spesso ci limitiamo a farlo
modelli conosciuti se noi se non vogliamo
per inventare nuove cazzate da aggiungere al sito se
le cose che abbiamo sul sito
già sta ancora trattenendo ciò che vogliamo solo
inventare nuove cose quando quando noi
sapere che non funziona più per
noi un’altra cosa che sentiamo è davvero
importante perché la distribuzione è davvero
facilmente facile e non richiede molto
organizzazione per rilasciare qualcosa è
che proviamo ad uccidere le cose come
rapidamente possibile e già nel
possibile ci piace sbarazzarci del codice
questo non funziona e sbarazzarsi di
funzionalità che non funzionano supportando
le caratteristiche legacy in particolare sono davvero
noioso e frustrante e ci toglie
tempo dal tuo team di progettazione, quindi è così
davvero bello sbarazzarsi di questo e di quello
anche da quello che ti libera da
pensando che il tuo codice sia perfetto
tutto il tempo se sai che è di qualcuno
gonna take gioia e sbarazzarsi di esso in
il futuro dopo i tuoi esperimenti
fallito ti concentrerai piuttosto ti concentrerai
sulla spedizione delle tue funzionalità più rapidamente
piuttosto che costruire cattedrali così noi
sempre mi piace chiedere è la soluzione stupida
abbastanza per noi per costruire un prodotto e come
lunga è la soluzione stupida che durerà
perché spesso, di volta in volta, si scala
10% della maggior parte delle ipotesi che hai
iniziato con o sbagliato e tu inizi
reagire e noi architetti siamo i
cosa a cui ci piace concentrarci dopo
abbiamo visto che qualcosa sta funzionando
poi lo mettiamo, poi lo dimostriamo ulteriormente
e renderlo migliore di questa architettura
che avevamo quando eravamo 10 milioni
le pagine al mese sono completamente diverse da
cos’era quando abbiamo 100 milioni di pagine
visualizza un mese ed è ora completamente
diverso come siamo oltre un miliardo di pagine
un mese quindi cerchiamo di non prenderci
troppo seriamente
c’è un corollario che penso a questo
che è non giudicare frettolosamente la gente
chi ha costruito la versione prima di te perché
le loro ipotesi erano completamente
diversa questa è una citazione come lo ero io
parlando con Kellan di chi è il nostro CTO
questo discorso, ottenendo e allenando alcuni
idee ho deciso di citarlo
direttamente su questo e non completamente
rubarlo perché pensavo che fosse davvero
Metti bene, abbiamo ottimizzato per essere noi
non ottimizzare per essere giusto o avere
l’architettura giusta per cui abbiamo ottimizzato
sapere quando abbiamo torto e quando lo è
tempo di cambiare e così lavoriamo davvero
difficile a diventare bravo a cambiare la nostra
architettura che migrazione in quattro fasi
di cui ho parlato
stiamo impazzendo maestri al farlo
lavoro che è praticamente quello che è il mio team
fare quasi tutto il tempo sta tornando e
refactoring cose che non stanno funzionando
o passando da un vecchio archivio dati a un
nuovo data store per scoprire come
rendere le cose migliori così siamo costantemente
lavorando attraverso questo processo di taglio
tira fuori il vecchio e porta il nuovo
con tempo di attività completo in cui spendiamo
il tempo è è entro il secondo o il terzo
iterazione quando sappiamo e abbiamo
dati che suggeriscono che questo è un
vale la pena, allora iniziamo
portare più ingegneri senior a
rivedere come funziona l’architettura come
le persone lo stanno usando e ciò che è nuovo
le aspettative ci arrivano dopo che lo abbiamo fatto
dati raccolti non stiamo più indovinando
a questo punto vale la pena investire
tempo così un’altra altra sezione voglio
per parlare ho circa 15 minuti
a sinistra penso qui, quindi voglio entrare
un po ‘di integrazione e operazioni
e poi penso che ci sia un po ‘
più su alcuni pensieri finali che se
Posso arrivarci sarà fantastico se non no
grosso problema quindi questo era il mio
definizione di come facciamo continuo
lo spiegamento nel pezzo principale qui è
in cui ci stiamo costantemente integrando
produzione la parte le misure di sicurezza
Ho parlato di questi dovrebbero essere carini
ovviamente è abbastanza evidente a tutti
qui revisione del codice prima di impegnarci
piace ottenere colleghi che guardano il codice e
solo assicurandoci che non stiamo davvero facendo
le cose stupide e anche perché siamo
cambiare le cose così rapidamente dentro
la produzione è sempre bene avere
qualcuno lo sa
qualcuno seduto accanto a te o qualcuno
si sa in un altro gruppo sapere cosa
stai per dispiegarti perché così tanti
persone diverse stanno dispiegando cose
durante il giorno test automatico prima
si distribuisce questa dovrebbe essere ovvio
vogliamo fare tante convalide quanto noi
può sviluppare prima di spingere
cambia in produzione che implora il
domanda perché ci preoccupiamo di integrare
con la produzione se stiamo scrivendo a
eseguendo test con il nostro codice allora
c’è un presupposto che forse sta correndo
loro contro ogni commit è abbastanza per
assicurati tutte le nostre supposizioni perché siamo noi
preoccuparsi di distribuire il codice come
beh , sembra che forse stiamo chiedendo
per ulteriori problemi e la risposta
questo è che dev dev è il tuo ambiente
non è lo stesso della produzione e se tu
pensa che lo stai facendo
essere costantemente sorpreso dal modo in cui
siamo costantemente sorpresi se il tuo dev
ambiente erano esattamente come prod poi
l’unità test in esecuzione in dev sarebbe
perfetto per la convalida del tuo software
funziona ma quando lo si distribuisce a
la produzione si trovano spesso che questo è
non è una domanda così veloce per tutti
quanti di voi scrivono test mentre siete
scrivendo il tuo codice o anche prima di te
scrivere il tuo codice mi aspetterei molto
delle mani su questo equipaggio quanti di voi
aspetta che tu abbia scritto tutto il tuo
codice prima di scrivere i test ok
incredibile non vedo le mani, il che significa che
voi ragazzi siete tutti ingegneri di modelli e voi
dovrebbe Pat voi stessi sulle spalle questo
è fantastico con cui ci stiamo integrando
la produzione è una prova di per sé che è
perché lo facciamo frequentemente in piccolo
lotti questa è la stessa cosa con l’unità
prova con frequentemente e in piccolo
lotti che ho sentito di recente produzione
è veramente l’unico posto che puoi convalidare
il tuo codice recentemente significa 40 minuti fa
Michael ha detto che nell’ultimo discorso
la produzione in dev non è la stessa
perché questi sono i tipi di cose
quello che va storto sono queste le cose
che a volte non ce ne aspettiamo
le cose che mi piacerebbe davvero su questo
elencare un po ‘più in basso i dati legacy
abbiamo sette anni di utenti
chi è stato in più versioni di
il nostro software e i dati su di loro
è cambiato al punto che ora le persone lo sono
in stati che non esistevano due anni
fa quando abbiamo assunto la maggior parte dei nostri
team di ingegneri quindi non lo sanno nemmeno
come dovrebbero apparire i dati e noi
non ho tutti questi dati in profondità
perché ce n’è troppa anche noi
non c’è traffico di produzione in esecuzione
il nostro ambiente di sviluppo è quindi difficile
simula tutti i diversi scenari
quello può andare storto in produzione sì voi
puoi modellare il traffico e puoi farlo
simulazioni ma modelli nelle simulazioni
mostra solo ciò che ti aspetti o cosa o
quello che hai visto in passato potresti essere
ripetizione della cronologia di riproduzione, ma è così
cos’è cosa è successo in passato
cambia sostanzialmente i cambiamenti futuri
ogni volta che distribuiamo il codice, che cosa è il nostro
l’applicazione sembra cambia ogni
tempo qualcuno fa un commit così è
davvero difficile sapere tutto questo
potrebbe andare storto ecco uno dei miei
i preferiti e sono anche così imbarazzato
sebbene fossi coinvolto in questo
utilizzando un database MySQL per testare un
applicazione che alla fine andrà a
essere un Oracle questo è probabilmente il peggiore
si può pensare di inestimabile
verificare frequentemente in piccoli lotti non
dopo aver scritto settimane e mesi di
codice ma per tutto il tempo stiamo integrando
con la produzione e solo così non lo fai
perdere traccia questo dev non è uguale a prod
lavoriamo in squadra, lavoriamo davvero
difficile mantenere questi due ambienti come
vicino possibile la gente conoscono
chef o burattino o configurazione
gestione okay, quindi suoniamo noi suoniamo il
stesse ricette di prod in sviluppo noi
mantenere questi in sincronia ancora sulla base di tutti
quelle cose che ti ho detto prima che non possiamo
mantienilo uguale e più grande otteniamo
più dev non è come la produzione quindi
ci piace anche mantenere le distribuzioni davvero
semplice e molto veloce ci piace mettere a fuoco
su cose che ci portano valore quando io
iniziato abbiamo avuto quattro diversi
ambienti che avevamo dev dove sono le persone
lavorando e poi QA dove sono le persone
l’integrazione di messa in scena che è molto
come una pre-produzione e poi
produzione, ma ci siamo resi conto che dovremmo
probabilmente tagliare alcuni grassi questi
dove sono quegli ambienti
in realtà una specie di divisione in termini di
Servizi
Devon QA ha condiviso lo stesso database così
avevano gli stessi dati terribili
staging aveva anche un proprio database e
i suoi server memcache sono totalmente
separare dalla produzione quindi non vedere
traffico e non vedere lo stesso
le cose che si vedono nella produzione che
è stato abbastanza inutile per noi, ma abbiamo speso
test di tempo e messa in scena e scoperta
cose che erano sorprendenti che sempre
finito per essere un artefatto del
gli ambienti sono sbagliati e e
unsimilar
quindi in realtà lo abbiamo ridotto a
qualcosa come questo dev ha il suo
database e servizi e quindi un pre
prod che non è quello che abbiamo ribattezzato
dalla messa in scena quindi non c’è confusione
pre prod comunica agli stessi server il
servizi come i nostri server di produzione
parlato con così pre prod è essenzialmente il nostro
punto di controllo di sanità , dump nuovo codice
su di esso e assicurarsi che sia ancora
lavoro che dice come gli schemi o il
nuove versioni di un servizio che siamo
a seconda che siano in produzione in questo
stanno lavorando quindi è davvero importante
pensare a tagliare il grasso dal tuo
distribuire pipeline e renderlo veloce
prova la tua integrazione dove vedrai
valore come ho detto che il QA non ha fornito un
molto valore per noi abbiamo una build
stadio in cui gestiamo tutto il nostro nostro
integrazione e unit test ma noi no
più a lungo ha un’interfaccia web per farlo
essere in grado di fare clic manualmente intorno ad esso
non ci ha fornito alcun valore config Flags
proteggici perché ancora siamo
integrando con la produzione ma siamo
non solo buttare via le cose di fronte
gli utenti tutto il tempo
siamo Privett che ci impedisce il rischio
questo e abbiamo questo molto ricco
meccanismo per poter girare il
visibilità di un prodotto fino a
produzione e questo penso sia probabilmente
ciò che le nostre piscine di canarino sembrano essere le nostre
capacità di rivelare una nuova parte del nostro
applicazione su un solo sottoinsieme del nostro
utenti ed essere in grado di ispezionarli contro
altre parti della nostra base di utenti
Ho parlato di convalidare prima
implementando convalidiamo anche dopo che c’è
nessun motivo per cui non puoi eseguire gli stessi test
in produzione quindi lo facciamo anche noi
avvisi automatici che si attivano quando questi
falliamo usiamo metriche in tempo reale e
cruscotti che guardano tutto da
la salute della nostra rete e dei nostri server
come la nostra applicazione esegue quanti
quante persone hanno colpito un particolare
parte della domanda o innescato un
evento particolare e poi cose simili
metriche di business come le nostre casse
accadendo e quanti soldi abbiamo
fatto tutto il giorno e li abbiamo messi
metriche di fronte a tutti noi
in realtà hanno una dashboard così come sei
distribuire il codice questa è una delle cose
devi mettere di fronte a te è essere in grado
guardare alla salute del sistema e
Mi scuso che tutti questi sono così
grigio e difficile da leggere ma ci proverò
diciamo che più basso è il nostro lato inferiore
livello web che è tutto il nostro Apache
server e il numero di richieste per
secondo in alto o cose come login e
registrazioni e checkouts e quindi
c’è qualche pagina di performance e in
medio così come se la nostra performance
soffre dopo un dispiegamento ed è Michael
sottolineato nell’ultimo discorso che usiamo
queste linee verticali per indicare quando
abbiamo cambiato qualcosa nel
applicazione o la nostra configurazione in genere
beh, mi occuperò di ciò che conosci
la domanda sarà perché è un ingegnere?
ho bisogno di questo di fronte a me e la risposta
è oh sì perché non ne abbiamo
responsabili del rilascio che fanno questo per te
lo stai facendo tu stesso che stai spingendo
il pulsante te stesso e sei anche tu
monitoraggio quando il codice va in
produzione per assicurarsi che le cose siano
lavorando così sì queste linee di distribuzione
fondamentalmente significano cambiamenti e lo siamo
cercando quei parametri per spostare
a volte salgono a volte
scenderanno a volte guarderanno
come questo è uno dei miei preferiti per
guardare dopo un dispiegamento che è il nostro nostro
larghezza di banda di uscita e se la nostra larghezza di banda
dal nostro centro dati scende del 25%
potresti pensare che potrebbe non farlo
è stato previsto che sembra simile
di comportamenti interessanti che non conosciamo
se è qualcosa che si è appena rotto
se le persone non stanno arrivando a
certa parte del nostro sito o forse quello
abbiamo appena migliorato qualcosa dove
stiamo spedendo molte meno immagini
o le immagini sono ridotte drasticamente
quindi abbiamo questo feedback operativo
ciclo che ogni ingegnere coinvolto in
scrivi il tuo codice di rilascio e
allora tu controlli cosa sta succedendo
produzione e se è se è
funziona come ti aspetti e c’è
questo fantastico c’è questa grande cosa
pensa dall’uso militare osserva l’orient
decidere e agire così osserviamo un orient
stiamo raccogliendo le metriche e lo siamo
guardando quelle metriche che misurano se
qualcosa funziona correttamente o no
funziona correttamente e quindi stiamo facendo un
decisione di apportare modifiche al nostro
applicazione su base frequente a
rispondere a quella distribuzione continua
ci consente di mantenere quel ciclo davvero
veramente vicino e stretto e tendo a
parlare di questo mi riferisco a questo come a
software teorico versus pratico
ingegneria se non sei a mio parere
se non lavori e vedi cosa
la produzione sembra che tu sia
in gran parte facendo ipotesi su come il tuo
il software funziona ma se stai operando
il software e ad essere coinvolti in
guardando le metriche, allora sei veramente
praticamente coinvolto nel suo funzionamento e
comprendendo le ramificazioni di
le decisioni che hai preso come i tipi
di sorprese che potresti trovare se noi
spegni gli strumenti che ti permettono di
tradurre sul sito abbiamo trovato questo
a un certo punto quando stavamo facendo un po ‘
test che era quello della nostra pagina
le prestazioni sono migliorate drammaticamente quando
chiudiamo gli strumenti a cui ci ha portato
guardando più da vicino a come il
gli strumenti di internazionalizzazione funzionano per noi
e refactoring li mette anche voi
molto vicino a quando le cose vanno male
è davvero bello quando tu spingi
un po ‘di codice e scopri che sei tu
erano completamente sbagliati o hai dispiegato a
bug che brucia con te e
sì, è davvero rotto così ancora
è questo non è solo la costruzione
l’aereo ma volando è tutto
quadranti e leve a portata di mano che facciamo
questo costantemente e sebbene queste date
significa probabilmente nulla per te in
Stati Uniti questi sono il tipo di
pietre miliari che portano al nostro nostro
La stagione dello shopping natalizio e questo è
il punto in cui i siti di e-commerce di solito
distribuire il codice e sembra così
per noi queste bande rosse sono il mese
prima di Natale e siamo ancora al
punto in cui siamo in grado di reagire e
far funzionare il sistema e lo taglierò
là fuori c’è l’ultimo bit che sto per fare
a corto di tempo per ma questo è quello che io
avere per voi e vi ringrazio molto tutti
giusto la domanda è cosa in cosa a
a che punto coinvolgiamo affari e
la risposta è questa ingegneria
squadre stavo parlando che circa che sono
molto piccoli di solito sono fatti di
da due a due a cinque forse due a
forse sei ingegneri e poi un designer
e poi un product manager che è
in sostanza rappresenta il business così
avremo in termini di pianificazione faremo
hanno generalmente circa tre mesi di bande
che pianificheremo faremo un po ‘di core
come pennellate molto spesse di cosa
pianificazione trimestrale sembra e poi
ognuna di quelle squadre sarà come
tipo di scappare da soli
è molto decentrato se lo sono
ottenere quello che vogliono
sì, così parte della raccolta delle metriche è
anche una grande quantità di affari
intelligenza che raccogliamo così dentro
quella squadra siamo in grado di se siamo se
stiamo implementando un test o implementando un
nuova funzionalità otteniamo una quantità molto ricca di
dati che tornano dal sito che
noi che informiamo il business di cosa
va avanti e se le cose stanno funzionando
come ci aspettavamo, grazie mille
tu
Please follow and like us: