Press "Enter" to skip to content

GOTO 2016 • Microservices at Netflix Scale: Principles, Tradeoffs & Lessons Learned • R. Meshenberg


grazie e grazie per essere venuto
lo stock talk è intitolato micro-servizi
una scala di atlante di cui parleremo
varie definizioni di micro-servizi
e parleremo della scala di netflix ma
prima mi piacerebbe iniziare con voi a chiedere
una domanda qualcuno ha fare un grande
acquistare di recente una macchina costosa casa
Bene, Jeff , quanti di voi hanno fatto
quell’acquisto solo guardando il
presenta i vantaggi e non guarda
il prezzo va bene così l’analogia
ecco i microservizi è chiaro è dentro
molti discorsi e molti seminari si va
i micro-servizi sono stati progettati esclusivamente per loro
benefici ma questo è solo un lato del
la storia di questi benefici arriva con certo
costi e così oggi di cosa mi piacerebbe parlare
a voi riguardo è Netflix viaggio in micro
servizi benefici e reiterare alcuni di
costano le lezioni apprese fondamentalmente il
migliori pratiche e anti-modelli noi
scoperto attraverso il nostro viaggio in micro
servizi e alcune risorse che vorrei
piace mettere a vostra disposizione
prima per introduzione Netflix
con oltre 81 milioni di abbonati tutti
in tutto il mondo, probabilmente siamo noi
più grande rete televisiva internet e
permettiamo alle persone di goderne realmente
oltre 125 milioni di ore di TV al giorno
ciò si traduce in un sacco di larghezza di banda
ne parleremo più tardi
quello che faccio su Netflix è che ne eseguo diversi
squadre sotto l’ombrello della piattaforma
ingegneria se facciamo effettivamente il
Lego blocca tutto il resto del
I team di ingegneri di Netflix utilizzano
costruisci la loro applicazione per creare
quel livello comune per consentire ai team di
Muoviti velocemente
Round e microservizi di Netflix
il nostro infatti, ma ciò che non è come
scala così 125 milioni del nostro orologio per
giorno si traduce in oltre 4 miliardi di nostri
flussi ogni mese
in altri termini che si traduce
un terzo del Nord America a valle
il traffico in media è un sacco di bit
in ogni momento tutto questo traffico è
supportata da oltre 500 micro-servizi
motivo per cui dico oltre 500 semplicemente perché noi
non so quanti servizi sono in esecuzione
in qualsiasi momento in un dato giorno noi
hanno forse tra le centinaia di 2.000
la produzione cambia i nuovi servizi dell’essere
distribuito i servizi esistenti modificati
alcuni servizi di pensionamento ci sono
nessun sistema centrale che cancella tutto
perché vogliamo che le persone siano in grado di farlo
Muoviti velocemente
tutti questi servizi abbiamo un
obiettivo ambizioso di quattro nove di
la disponibilità più più più vicino alla
la realtà sarà di tre e mezzo nove
di disponibilità e di cui parleremo
quello e quello funziona attraverso tre AWS
regioni due in Nord America e uno in
Europa attraverso nove zone di disponibilità
e parleremo del perché tutto questo
una squadra di persone che in modo così efficace
rappresenta una compagnia di circa 2.400
le persone circa la metà di loro sono tecniche
quindi circa 1200 ingegneri che lavorano tutti
servizi quindi iniziamo con il viaggio
come siamo arrivati ​​a questo punto perché
non eravamo sempre nel cloud non lo erano
sempre nei micro servizi prima di tutto
il nostro viaggio durò sette anni e non lo fece
capita durante la notte abbiamo ricominciato
Agosto 2008 e appena finito prima
quest’anno quindi è stato un lungo viaggio e
il nostro viaggio verso i micro servizi non lo era
davvero un viaggio necessariamente da
era un monolite ai micro servizi di per sé
innescato dal nostro bisogno di entrare nel
cloud e per vari motivi abbiamo bloggato
e ne ho parlato in numerosi posti
non ci ripeterò ma
efficacemente l’unico modo per noi di prendere
un sistema molto complesso e prendilo
dal datacenter nel cloud noi
non potevamo semplicemente carrelli elevatori, non potevamo
prendi questo grande e fragile sistema
trasferirsi in una nuvola e dire che abbiamo finito
abbiamo dovuto scalpello pezzo per pezzo
Micro efficacemente servito da micro
servizio e quindi distribuirlo nel cloud
abbiamo architettato la riprogettazione reimplementata
e
in una nuvola così che cosa ha fatto apparire come
prima nel nostro centro dati avevamo un
monolite c’era questa applicazione che
tutte le varie squadre hanno contribuito con jar
file che sarebbero stati infornati in una guerra
file di guerra passerebbe attraverso il tuo normale
ciclo di rilascio test bi-settimanale o il
rilasciare il ciclo del treno e alla fine ottenerlo
distribuito e acceso su un lato del database
era abbastanza grande il nostro DB DB Oracle DB in
particolare che prenderebbe tutto il
traffico e si può vedere chiaramente cosa
problemi con questo sono oltre il
velocità parleremo di velocità
separatamente ma anche dall’affidabilità
prospettiva questo è molto fragile nessuno
problema che si introduce per la vostra
applicazione se è istantanea o
latente sarà rappresentato in modo omogeneo
in tutte le tue forme, quindi se metti un
bug in una macchina su cui hai inserito un bug
tutte le macchine in aggiunta questo database
rappresenta un singolo punto di errore
così in una diapositiva precedente ho menzionato
Agosto 2008 questo è esattamente ciò che
successo nell’agosto del 2008 abbiamo un
fallimento del database la nostra produzione principale
database danneggiato e tutto il
Gli utenti di Netflix la maggior parte di loro non lo erano
streaming nel momento in cui erano fermi
per lo più ottenere dvd per posta è diventato brutto
messaggio scusa stiamo lavorando al fixing
il nostro problema e ti risponderemo
ci sono voluti quattro giorni
immagina di avere un’interruzione di quattro giorni che è
non è carino, quindi era una specie di a
evento scatenante che ha guidato il nostro
trasformazione in micro servizi
trasformazione della pelle ed essere in a
solo nuvola e sono davvero felice
la transizione è fatta prima di entrare
l’ applicazione e la pratica parliamo
sui primi principi in modo efficace
le ipotesi che tutti abbiamo fatto una volta
ha iniziato a cesellare quei micro
servizi dalla loro applicazione di monoliti
abbiamo dovuto fare alcune ipotesi noi
devi dare la priorità a qualcosa di simile
andiamo rapidamente a vedere cosa
quelle supposizioni erano e lo faremo anche noi
parla del perché abbiamo fatto queste ipotesi
perché di nuovo dipende da cosa sei
cercando di ottimizzare per DSM
Gli asiatici potrebbero essere diversi e io no
voglio proporre soluzioni particolari
o quadri senza comprensione
innanzitutto quali sono queste ipotesi
prima di tutto non ci piace davvero NIH o
metodo nordico qui se ci trovassimo di fronte a a
scelta tra la costruzione di qualcosa o
comprare qualcosa e solo per essere chiari
comprando incluso non necessariamente
Ricerca limite a un fornitore di software che
significa solo usando il pronto
software open source preferiamo non farlo
costruiscilo se possiamo sfruttare e
potenzialmente contribuire a qualcosa da
open-source, preferiremmo farlo e
quindi abbiamo riservato solo edifici
qualcosa in casa per i casi in cui
non ci sono altre soluzioni per questo
che lavorerà per noi in particolare con
la nostra scala abbiamo provato molte soluzioni
che purtroppo ha finito per non funzionare
e alla fine stiamo costruendo un sacco di nostri
proprio software in ogni modo, ma almeno noi
provato a non molti dei tuoi servizi come
dovresti scoppiare il tuo modulo
apolide con il caveat, ovviamente
ad eccezione dello strato di persistenza e caching
ciò significa che non dovrebbe fare affidamento su
eventuali sessioni appiccicose se ne operate
particolare istanza o nodo ti muore
dovrebbe essere in grado di provare semplicemente a colpire a
istanza diversa e procedere con
la tua esecuzione non è abbastanza da dire
certo, okay, lo faremo
provarlo e il nostro modo di provarlo in
netflix è dal caos che prova la scimmia del caso
e allo stesso modo parleremo di quella scala
fuori contro scala hai due scelte
quando hai bisogno di più risorse , puoi farlo
vai a istanze o nodi con altro
risorse se si tratta di memoria della CPU
rete di archiviazione che puoi sempre ottenere
qualcosa che ha di più finché non puoi
fino a quando non stai eseguendo quell’istanza
che ha il maggior numero di core disponibili
ha il maggior numero di dischi disponibili e ciò che tu
fai pittura architettonica II
te stesso in un angolo, quindi cosa faresti
piuttosto è quando si tratta della sua scala voi
voglia di scalare fuori è molto più facile
aggiungi nuove istanze e specialmente nel
nuvola perché
buoni benefici dell’elasticità non infinita
elasticità, ma questo è comunque
ridondanza e isolamento parleremo
su di esso quando anche noi parliamo
resilienza ma è davvero importante
ridondante e questi due principi
sono davvero buon senso ma ridondanza
fai più di uno qualsiasi di te
semplicemente non voglio nessun singolo punto di
fallimento
anche se ne fai più di uno
tutto ciò di cui hai ancora bisogno per isolare il
raggio di esplosione per anche proposta fallimento anche
se hai 150 nodi nel tuo cluster se
uno dei fallimenti può causare
fallimento a cascata nel complesso
CLUSTER non si è isolata che
fallimento e quindi è importante farlo
e naturalmente i test distrattivi
quello che vuoi fare è non lo vuoi
essere un one-off che non vuoi semplicemente
farlo una volta un quarto una volta al rilascio o
una volta qualunque ciclo di come si desidera
essere costantemente in esecuzione che si desidera
costante costante dimostrare che il tuo
sistema in grado di sopportare gli insuccessi che
si verificano ora non è se si verifica l’ errore
l’errore si verificherà è quando lo farà
si verificano e le probabilità sono ancora la legge di Murphy
funzionando l’ultima volta ho controllato
il fallimento si verificherà nel mezzo del
notte di sabato sera dove la maggior parte di
voi ingegneri siete addormentati o ubriachi o
entrambi e non è il momento in cui tu
voglio svegliarli e avere il paradiso
affrontare un fallimento e quindi in realtà
Metti un sacco di pensiero e pratica in
correndo fallimenti distruttivi tutti i
tempo durante le ore d’ufficio dove
gli ingegneri sono lì sono caffeinati
la piena attenzione che possono affrontare
problemi subito , quindi è iniziato con
la scimmia del caos è probabilmente la nostra più famosa
membro del seminario ma in realtà
è cresciuto in cosa molto più grande è stata la
intero principio di essere in grado di
dimostrare in modo distruttivo che i nostri sistemi sono
resiliente quindi come fanno prima questi
principi tutti questi presupposti funzionano
lavorare bene in azione abbiamo parlato
servizi stateless nel nostro ecosistema in
ordinare che un servizio stateless sia un
buon cittadino in modo efficace ha solo bisogno
per fare alcune cose che ha bisogno di registrarsi
nella scoperta del servizio
e in base al tuo servizio ecosistemico
la scoperta potrebbe essere qualsiasi cosa possa essere
DNS potrebbe essere il tuo servizio
scoprire tutto ciò che deve implementare
di nuovo un controllo sanitario richiamabile esternamente
se è la tua scoperta di servizio o a
bilanciamento del carico o altro agente esterno
puoi verificare che i tuoi sistemi non lo siano
solo lì, ma in realtà e
correndo e sono funzionali
e per chiamare altri servizi
ha bisogno di utilizzare le informazioni che esso
ottiene dal servizio di scoperta di dove il
altri servizi si trovano semplicemente a destra
fino a quando fallisce così quando fallisce
tutto ciò che serve per essere in grado di verificare è
che i servizi di chiamata di questo
particolare servizio di diagrammi di cui ha bisogno
riprovare quella richiesta ottenere un diverso
l’istanza del servizio B ottiene lo stesso
risposta e poi andare avanti per fare
che devi uccidere un’istanza di
servizio B o introdurre una rete
evento di partizionamento tra un servizio a
e istanza del servizio B e poi
verificare che i risultati siano uguali a te
devi farlo in produzione questo è il
cattura ho visto tonnellate di istanze dove
gli sviluppatori e le aziende affermano che sì
Ho fatto questo test che ho fatto
test sulla mia macchina di sviluppo o
l’ambiente ha fatto questo test in
test o ambiente di controllo qualità e ancora in
la produzione il sistema fallito in
modo diverso quindi se lo vuoi davvero
prova a te stesso che sei apolide
i servizi sono veramente apolidi fai questo
produzione non devi farlo
durante la notte si può costruire la fiducia, ma
alla fine se vuoi davvero farlo
devi farlo nel caos della produzione
scimmia, l’ho già detto
quello che fa in modo efficace una scimmia
girando intorno a un centro dati virtuale
datacenter nel nostro caso ma datacenter
comunque e uccidendo istanze
a caso lo eseguiamo da lunedì a venerdì
Dalle 9:00 alle 3:00 e ogni applicazione è
soggetto ad esso inizialmente era giusto
apolide solo ora è stato
anche le applicazioni e puoi regolarle
in pratica puoi farlo puoi sintonizzarlo
farlo raramente o forse una volta a
giorno a se ti senti più audace di più
frequentemente e vedere
il tuo sistema reagisce i dati, così ho menzionato
nel nostro ambiente di data center che avevamo
questa grande istanza di DBMS è in esecuzione
Oracle DBS quando abbiamo iniziato la migrazione a
micro servizi al cloud VM coppia
Cassandra è il nostro principale archivio di valori chiave
e per diversi motivi, uno solo
in realtà funziona su scala è uno dei
la più grande scala e nessun motore sequel è
open source e questo era importante per noi
perché molto presto ne abbiamo bisogno per e
in realtà abbiamo contribuito un bel po ‘ a
Cassandra al fine di renderlo
multi-regionale multidirezionale
Replica pronta e in termini di
motore di stoccaggio dal punto di vista del cap
teorema è disponibile tollera
partizioni bene e deve fare un ciclo
coerenza sintonizzabile ora in molti discorsi
A proposito di Cassandra si sente che la sua
eventuale motore di consistenza che è
in realtà solo una parte della storia con
Cassandra per richiesta, indipendentemente dal fatto che tu sia
leggendo o scrivendo puoi accordare il
coerenza di tale richiesta da parte di CL one
che è pura coerenza finale a
quorum locale fino al globale
forum non raccomando il quorum globale
quando entreremo in queste ragioni
quindi questo è in realtà come Cassandra
la replica multiregionale funziona su uno
lato il tuo cliente diciamo scrivi con a
quorum locale che significa che stai andando a
ottenere tre repliche localmente all’interno del
regione prima di ottenere un ACK prima
confermando che la scrittura è stata fatta
ma quello che non vuoi fare è
tollerare quella conferma nel lungo periodo
rete di distanza attraverso la regione
anche la tua regione sarà semplicemente giusta
lento non sta andando in scala così quello che tu
vuoi fare è vuoi replicare il
dati tra regioni in modo asincrono e
questo è in realtà un cambiamento che uno di
i nostri pendolari hanno contribuito a Cassandra
molto presto molti anni fa e ora
è di default nella distribuzione quindi noi
parlato di servizi stateless noi
parlato di servizi di stato c’è
anche emissione di servizi di fatturazione che
probabilmente composto da entrambi, ma l’accordo
con soldi
quindi devi essere un po ‘di più
attento e questo è in realtà quello è il
servizio che ci ha portato più tempo a
migrare al cloud per entrare in micro
servizi e per una buona ragione non lo facciamo
vuole sovraccaricare i nostri utenti abbiamo anche
non vogliamo avere sotto controllo i nostri utenti noi
voglio farlo nel modo giusto così sai
anche per essere conforme a Sox
e PCI e
in noi abbiamo dovuto mettere questi servizi
in un account separato con un numero limitato
accesso non è completamente aperto come tutto il
altri sistemi di produzione che Netflix
dovrebbe essere completamente registrato e verificabile e
e la chiave di volta è solo per
sii un po ‘più attento a cosa
stai andando bene quindi andrò molto
rapidamente attraverso i benefici di
micro servizi perché ne sono abbastanza sicuro
ne hai già sentiti molti molti
volte ma penso che alcuni di loro siano peggio
ripetendo ma prima quello che sono
Priorità Netflix quello che stiamo cercando di
ottimizzare per bene prima di tutto noi
voglio ottimizzare per la velocità per
l’innovazione per noi è davvero importante
che tutte le nostre squadre che stanno lavorando
sul prodotto Netflix muoversi veloce e perché
di quello siamo davvero disposti e così
stato in grado di sacrificare un po ‘
un po ‘ di affidabilità è per questo che vedi
l’affidabilità è la priorità numero due SSL
può sembrare giusto per riuscirci
l’alta velocità e l’efficienza sono solo a
terzo su quella lista così quando eravamo
fare la scala A quando ci proviamo
per decidere in che modo ottimizzare noi
ottimizzare sempre per l’innovazione prima e
questa è esattamente la sfida che tu
avere nel tipico modello di sistemi e
rilasciare cicli di sistemi modulari voi
avere le tue squadre che stanno producendo
vari componenti sono tutti
in via di sviluppo alla fine presentano il loro
risultati di sviluppo in un ciclo di prova
per il rilascio del treno ed eventualmente dopo
i segni di AQ di ciò vengono rilasciati
crea un sacco di accoppiamento stretto tra
le squadre e che proprio non funziona se
stai cercando di ottimizzare la velocità
è troppo lento l’accoppiamento è quando si
far lavorare ogni squadra in modo indipendente
questo significa che ogni squadra deve ora lavorare
tutte le parti del ciclo loro
sviluppare l’architetto il design loro
sviluppano testano la loro distribuzione e loro
supporto in altre parole è end-to-end
la proprietà ora in questo a volte è
chiamato modello DevOps, sto cercando di non farlo
usa questa parola perché sta arrivando
abusato al punto di essere un
Parola d’ordine ma se pensi di fine alla fine
la proprietà della tua squadra è responsabile
tutto dalla culla alla tomba e
in questo modo le loro motivazioni sono impostate così
scrivono codice di qualità ma anche loro
scrivilo velocemente perché gli ingegneri
in particolare i grandi ingegneri sono motivati
dai risultati che motivati ​​dal
impatto che fanno e se ogni squadra
possiede il ciclo completo otterresti qualcosa
come questo dove sono tutti
costantemente facendo progressi
tutti loro stanno facendo costantemente
qualcosa se ci pensi
termini tecnici immaginiamo la squadra H come a
thread e tutti loro sono in esecuzione
indipendentemente in parallelo senza a
porta singola per bloccarli a impedire il
progredire tutte queste squadre che Netflix
li eseguiamo accoppiati molto liberamente noi non lo facciamo
avere un posto centrale da aprire o approvare
le loro uscite si muovono ognuna di loro
proprio ciclo alla propria cadenza anche tu
ottenere il beneficio della separazione di
riguarda ad esempio il livello più basso
le squadre di infrastrutture che lavoro
con le preoccupazioni principalmente con
sicurezza della scalabilità di disponibilità
qualità fondamentali che ciascuno
l’applicazione dovrebbe avere quindi quindi il
squadre che costruiscono le loro applicazioni fuori
di un blocco Lego che forniamo no
Devo reinventare quella sensazione che possono
costruiscici sopra e sfrutta ciò che noi
già fatto abbastanza per il
benefici però parliamo di
il costo non è gratuito prima di tutto
microservizi e del né cambio se
vuoi che tutte le tue squadre abbraccino il
ciclo completo che significa che non hai più
necessariamente una squadra di QA che non hai più
una squadra di ops
ora chi vuole sentire che il lavoro è
andare via o cambiare a destra questi sono
le cose più difficili queste sono le persone
le cose sono coinvolte nel lavoro
i cambiamenti sono difficili e quindi cosa tu cosa
devi fare è devi evolvere il
organizzazione nel tempo gradualmente voi
non sarà in grado di farlo durante la notte e
solo per darvi un paio di esempi di
come puoi cambiare le tue pratiche
a seconda di ciò che funziona per te nel nostro
ambiente data center molti anni fa
avevamo un NOC centralizzato che era
fondamentalmente approvando e guidando tutto il
rilascia subito che avevamo un gruppo IT
era responsabile della capacità e
budgeting e pianificazione ed esecuzione
quella capacità che avevamo DBAs che erano
efficacemente custodi di questo nostro grande
Messaggio DBA che non avevamo più
ho qualcosa del genere
ora se lo sviluppatore ha bisogno del nostro team
risorse l’autorappresentazione
gli strumenti ora perché lo fanno attraverso
gli strumenti è tutto trasparente
tutti possono vedere cosa sta succedendo e
le persone che si interessano sono
capacità che possono vedere un segnale in tempo reale
di dove questa capacità è necessaria noi
non abbiamo un team operativo abbiamo un SRE
squadra che costruisce un insieme centralizzato di
strumenti a cui tutti possono fare leva
gestiscono i loro sistemi, ma lo sono
non gating nessuno e il DBA sono loro
lavorare con altri team per capire cosa
per vedere quali schemi per i loro database
sarebbe ottimale ma non operiamo
qualsiasi cosa per nessuno quindi è molto
team centralizzati che creano un supporto
modelli per cui costruire i framework
altri gruppi per consentire loro di possedere il
è di nuovo pieno ciclo di vita
costruire in modo efficace questi blocchi Lego
ma per poterlo raccogliere
beneficio che devi investire devi
costruire le squadre che costruiranno questi
Blocchi di Lego ecco che arriva la cattura voi
devi farlo mentre stai ancora facendo funzionare il tuo
vecchio stack e perché la migrazione no
accadrà durante la notte che stai per essere
vivere in questo doppio mondo per a
mentre e su Netflix con le curve
questo termine che se questa immagine rappresenta
Scrittura romana che è quando sei sul
destra due cavalli una gamba alla volta
questo ragazzo sembra molto a disagio te
pensateci che supportate due testi
X raddoppiamo i bug raddoppiando il
manutenzione a volte devi
propagare nuove funzionalità in due luoghi
dover replicare i dati e multi master
la replica dei dati, soprattutto in scala è
niente pic-nic, non importa cosa sia fantastico
ingegneri che hai e quanti test
lo fai non sarà infallibile
e solo dopo aver cambiato la fonte
di verità al nuovo stato e pugnalate quello
Replica multi master dei dati che farai
essere in grado di tirare un sospiro di sollievo
fino ad allora starai costantemente
combattere qualche tipo di battaglie e allora
tipo di lezioni che abbiamo imparato attraverso questo
attraverso quel viaggio prima di tutto
che ci sono alcuni pezzi che sono
fondamentale per garantire questo accoppiamento libero
ora parli di accoppiamento lento
tra le varie squadre in via di sviluppo
micro-servizi ce ne sono davvero due
pezzi che sono necessari quando ho coperto
la diapositiva che è di nuovo IPC o IPC RPC
termini intercambiabili
ma vuoi effettivamente stabilire un
contratto o una lingua tra due qualsiasi
servizi per parlare tra loro
in questo modo quando Tom si sviluppa
sviluppare un nuovo sistema che già conosci
quale lingua parlare con tutti questi
sistemi e se hai 500 plus micro
servizi in esecuzione che non vuoi sapere
500 lingue diverse è semplicemente
non scala così IPC è uno di quelli
pezzi l’altro è ugualmente
importante che tu ti voglia omogeneizzare
voglio un po ‘di coerenza nel modo in cui il tuo
le applicazioni vengono distribuite per noi
inizialmente era Asgard che dovevamo
sviluppare in casa e poi di recente
sostituito con un altro strumento che noi
anche open source chiamato spinnaker che
automatizza tutta la nostra implementazione
flussi di lavoro il beneficio di quell’essere
ancora lo stesso strumento centrale è quello
le persone non devono reinventare questa ruota
già e abbiamo anche una fonte di
punto di vista della verità da cosa
le applicazioni sono state distribuite quando e come
n
fornisce un’introspezione preziosa in un momento
di crisi una delle prime cose che tu
voglio vedere quando qualcosa vende è
cosa è stato modificato più di recente i database
è una cosa quando arriva il tuo database
chiamato da uno o due monitor
le applicazioni è completamente diversa
quando all’improvviso viene preso a pugni
Più di 500 micro-servizi che vuoi
proteggere i database e quindi un modello
che ci siamo evoluti nel tempo è quello
anche per i database più colpiti
cassandra ha i suoi limiti che abbiamo protetto
con uno strato di cache e quindi usiamo
in realtà due diversi cache nella cache
le tecnologie all’interno di Netflix sono le
il valore chiave si aggiunge alla build in cima a
memcache ha chiamato la cache di Eva e l’altra
uno è uno schema più ricco che puoi
usare Redis perché è chiamato dinamite ma
l’idea è la stessa cosa vuoi fare
è sul percorso di lettura che vuoi colpire
prima cache e vai al database solo su
la cache manca e se vai su database
la mancanza di cache sulla via del ritorno sei
andando a recuperare la cache anche tu
voglio essere sicuro che nella tua chiamata
grafico proprio all’inizio di quella chiamata
grafico avremo una certa richiesta
cache quindi quindi per esempio se nel
inizio della chiamata che dovevi recuperare
le informazioni dell’utente per capirle
metadati relativi quell’utente si vuole
propagarlo a valle in modo che tutto il
i servizi successivi non devono andare e
chiama di nuovo quel database per completare il
stessi metadati ancora e ancora e ancora
ancora una volta si scoprirà che si riduce
il carico nei tuoi database di almeno
un ordine di grandezza forse due forse
tre dipende dalla profondità del grafico della chiamata
e attuale telemetria di interconnessione
la visibilità operativa conta molto se
tu gestisci il tuo monolito che probabilmente hai
alcune buone metriche su che tipo di
le metriche dell’applicazione e del sistema che si guardano
in per comprendere i sistemi
salute quando esegui centinaia di micro
i servizi saranno dimensionati sulla tua telemetria
molti innesti stai cercando per server
moltiplicarlo per numero di micro
servizi che si hanno si sarà in grado
per vedere la foresta dagli alberi per server
quanto è individuale l’azione umana
necessario quando qualcosa va storto come
molto di questo sei in grado di automatizzare
solo per darti un’idea su Netflix
generare oltre 20 milioni di metriche a
secondo in media che si traduce in
circa 1,7 trilioni al giorno che è semplicemente
insostenibile per chiunque qualsiasi essere umano a
guarda tutte quelle metriche e
effettivamente essere in grado di ottenere un segnale da
quel rumore e quindi la maggior parte di questi parametri
mai guardato che è da un umano
vengono convogliati in automatico scusa
algoritmi automatici di rilevamento degli errori
vengono convogliati in automatico
algoritmi di bonifica che rileveranno
se c’è un’anomalia e in molti casi
lo correggerò senza umano mai e poi mai
essere coinvolti lo stesso vale per il tuo registro
strumenti di analisi corretti se si genera
Registra come noi un paio di anni fa
il mio ex-collega ha coniato il termine
Netflix è un servizio di generazione di log che
consente anche di guardare film perché
produciamo solo una quantità così oscena
di registri e quindi è necessario essere in grado di
trova e affina gli strumenti che permetteranno
per ottenere quel segnale fuori da tutto
quel rumore e preferibilmente automatizza come
molto di più che puoi quindi questo è quello che
sembra una volta che entri in questa scala
dei microservizi semplicemente non hai un
il lusso di avere schemi architettonici
perché le cose cambiano tutto il tempo e
quindi quello di cui hai bisogno è un runtime a
runtime devi essere in grado di discernere
chi chiama chi come dove sono i
errori vari flussi di traffico ci sono
qualsiasi congestione in un sistema potrebbe sembrare
qualcosa del genere potrebbe sembrare
qualcosa di diverso in questo particolare
caso si vede che il traffico inizia al
bilanciamento del carico elastico per noi quindi
si diffonde attraverso la nostra prima linea di
la difesa ha chiamato Zul che è il nostro fronte
end proxy
allora le tue chiamate potrebbero andare in riproduzione
back-end API di sistema e quest’area
comprende i nostri sistemi di bordo questo tipo di
prima linea di difesa
da quel momento in poi hai un livello intermedio
servizi di piattaforma di servizi come il caching
e database e così via e così via, ma
questo tipo di intuizione questo tipo di
telemetria devi generare a
runtime perché se si crea solo un
diagramma architettonico statico con il
le prossime persone di servizio cambieranno la propria posizione
andando a renderlo obsoleto affidabilità
conta molto soprattutto su scala
l’errore si verifica nei sistemi distribuiti
e il tasso di fallimento è proporzionale
alla quantità di cambiamento che sei
spingendo in una scala ciò che
stai correndo per noi gli inchini sono enormi
e così ci sforziamo di aspirare ci sforziamo
per quattro nove di disponibilità
purtroppo questo ci lascia solo 52
minuti di inattività all’anno fino ad ora
non siamo stati in grado di coerentemente
Raggiungere questo ora in questi Netflix
giorni in cui Netflix è fuori causa
qualche delusione oltraggio o
ritiro
per fortuna alcune persone effettivamente mantengono
il loro senso dell’umorismo e reagiscono molto
più positivamente
ma la disponibilità è importante tanto quanto
vorremmo concentrarci sull’innovazione e
velocità solo tu non puoi farlo almeno
a lungo se il tuo sistema diventa
le persone non disponibili smettono semplicemente di usarlo
ora soprattutto nei sistemi distribuiti
quando hai un gran numero di micro
servizi che devi affrontare il fatto che
vedrai alcuni guasti a cascata se
testare ogni singolo servizio micro
servizio che hai ragione e ciascuno
l’ affidabilità del servizio individuale è due
nove bene che non è grande, ma non è
male ma se il tuo grafico è equo
interconnesso e hai oltre 500 di
loro la disponibilità totale non sta andando
per essere molto bravo, infatti, lo farai
essere fuori servizio la maggior parte del tempo
non è accettabile, quindi quello che vuoi
è necessario rilevare e correggere
questi fallimenti il ​​più velocemente possibile in questo modo
viene discusso l’intero concetto di
interruttori automatici perché circuito
gli interruttori rilevano l’errore nel tuo
sistemi elettrici e trigger a
fallback nei sistemi elettrici voi
dovrebbe semplicemente cambiare la potenza di ma dentro
software abbiamo più opzioni se tu
rilevare un errore in un sistema a valle
quello che non vuoi è quello stesso
fallimento a essere propagato alla fine a
il cliente perché quello non è molto
utile anche se lo propaghi
fallimento veloce quello che vuoi fare sei tu
non vorresti rilevarlo lì
è un problema e capire se il
il problema è con un servizio critico che
il caso ci ha dato oltre o non critici
servizio e se non è critico
servizio come ad esempio Netflix
potrebbe essere una personalizzazione potrebbe essere per
qualunque ragione non possiamo darti il
livello di personalizzazione che ti piace
di fare bene è ancora possibile probabilmente sarebbe
divertiti navigando e selezionando a da a
serie di film e programmi TV che non lo sono
necessariamente personalizzato al massimo
simpatia probabilmente lo troveremo ancora
qualcosa di bello da vedere, quindi cosa faresti
piace a voler tutti quei fallimenti
per trasformarsi in rovesci come immediatamente
come puoi in questo modo puoi ancora
funziona bene, sei il responsabile della squadra
passa al debug e risolve il problema
così qualche anno fa abbiamo effettivamente aperto
sourced una biblioteca che ci permette di fare
solo che si chiama isterica e lo è
stato usato da molte aziende che siamo stati
ottenendo davvero un buon feedback e
contributi di ciò che non posso sottolineare
questo abbastanza devi fare distrazione
i fallimenti dei test avverranno e tu
solo sapere come reagirà il tuo sistema
il fallimento se lo si inietta hai un
farlo in produzione non devo iniziare
con ma alla fine se vuoi dimostrarlo
che si ha a che fare in produzione
perché i fallimenti non accadono solo al
sistema o livello di cluster ma attraverso quelli
cluster a livello di rete alcuni
i fallimenti sono più insidiosi di altri
se qualcosa non funziona, in realtà è molto
pulitore sai che è rotto sai
stai ricevendo errore o risposta alterata
indietro puoi occuparti della visita è molto di più
insidioso quando viene restituita la risposta
troppo tardi troppo tardi proprio al
punto in cui attiverà il tuo
timeout immagina una buona causa a cascata
timeout che non è solo un non carino
scenario e quindi sviluppiamo effettivamente a
sistema internamente conosciuto come adatto dove
sarà in grado di iniettare per richiesta in
singoli percorsi di chiamata determinati errori e
i difetti potrebbero essere errori o potrebbero
si vedrà Layton o le sue combinazioni
e quando tutto il resto fallisce hai un
innescare il fallimento su scala più massiccia
non è sufficiente per innescare un fallimento
istanza individuale o zona o anche piena
cluster su Netflix ci viene effettivamente attivato
fallimenti esercitarlo in produzione su a
mensile almeno per un pieno
regioni in cui tutti i nostri servizi sono gestiti
tre regioni AWS attraverso nove zone a
almeno una volta al mese selezioniamo casualmente
una delle regioni e evacuiamo
ne simuliamo fondamentalmente quello se quello
la regione fallirebbe cosa farebbero i nostri utenti
vedere nel nostro obiettivo che è felice di dire
proprio ora è il caso quando evacuiamo
fuori da una regione come utente non lo farai
vedere una cosa
I servizi Netflix continueranno a funzionare
come se nulla fosse accaduto non era sempre
come quello il primo paio di volte noi
esegui la simulazione che chiamiamo chaos Kong
le cose non erano così divertenti che avevamo circa 40 anni
ingegneri
in uno scenario di una stanza di guerra per il debugging
circa quattro ore cercando di capire
varie cose che sono andate storte e cose del genere
abbiamo aggiustato quelle cose e ci hanno provato
ancora una volta sono stati 10 i debug degli ingegneri
per circa due ore e ora lo è
efficacemente un pezzo di animazione un pezzo
di script che viene eseguito a intervalli mensili
la maggior parte degli ingegneri non sa nemmeno quando
funziona perché i risultati sono così
trasparente ci vuole un po ‘insieme
ma una volta arrivati ​​lì ci sono i premi
abbastanza dannatamente bene, ecco quello è il
grafici di noi in questo caso particolare
evacuandoci a est verso ovest e verso ovest
regioni vedrete che come il
in basso mentre il traffico si dirigeva verso il
altre regioni ha fatto il traffico complessivo
non cambiare o come questo molto più fresco
l’illustrazione mostra che questo è molto
tempi più veloci riproducono cosa esattamente
è successo il traffico che vedi
che emana dal cerchio centrale è il
traffico dai nostri utenti da internet
il traffico attraverso i bordi che è il
traffico tra le regioni e lo farai
vediamo che in questo momento abbiamo innescato una
fallimento in questa regione proprio qui in
noi occidentali – è diventato rosso e noi semplicemente
iniziato a trasmettere il traffico all’altro
due regioni sopravvissute e così
continua a aumentare la velocità e le dimensioni
a un certo punto capovolgeremo NS
cambia e non ne vedrai più nessuno
il traffico che ci colpisce è peggiore perché
tutto il traffico più vecchio è stato completamente
questo è reindirizzato alle altre regioni
il grosso martello richiede molto tempo
insieme ma se l’ alta disponibilità è
il tuo obiettivo che dovrai fare
esercitare qualcosa come questo no
necessariamente questo è tutto ciò che funziona
si ok nessun servizio micro token sarebbe
completa senza menzionare i contenitori
la sua ultima e più grande versione II ma
veniamo ai contenitori Basics
non creare contenitori per microservizi
cambia il livello di incapsulamento di
isolamento dalla macchina virtuale a a
i contenitori di processo ti portano alla grande
vantaggi specifici per lo sviluppatore
la velocità si può iterare su un secondo
cicli di lunghezza si ottiene lo stesso artefatto
che arrotondi la tua macchina di sviluppo
lo stesso che in produzione puoi fare a
sacco di magia davvero cool con contenitori
è in realtà il primo stock questa mattina
ha mostrato, ma non è un proiettile d’argento e
quindi assicurati di usarlo
perché è uno strumento giusto per il lavoro
oltre a gestire i contenitori della sua scala
richiederebbe qualcosa di simile
questa diapositiva è intenzionalmente destinata ad essere
un sovraccarico di informazioni che non ho intenzione di
soffermarsi su qualche dettaglio qui ma lo fa
richiedono un significato molto significativo e complesso
sistemi ora Google ha fatto un lavoro incredibile
di indigeni nativi è maturato abbastanza a
un po ‘ negli ultimi due anni se tu
pensare che un numero sufficiente di contenitori usi a
blocchi fondamentali che sono disponibili
a te non scrivere il tuo
sfortunatamente per noi abbiamo iniziato un po ‘
prima dove c’erano molti di questi blocchi
non disponibile o non disponibile in
la nostra scala e così di nuovo la nostra preferenza è
non costruire qualcosa in cui possiamo comprare
in questo caso abbiamo finito per costruire
un sacco di pezzi nella nostra corsa container
il tempo chiamato Titus dovevamo scrivere il nostro
possedere uno scheduler personalizzato e un intero gruppo
di altre cose semplicemente perché il
l’ecosistema non era Ray non era ancora pronto
per la nostra scala quindi parliamo di alcuni
risorse che sono disponibili per te o
puoi pensarlo come uno spot
rompere dal regolarmente programmato
presentazione perché siamo pionieri
nella nuvola così presto siamo finiti
scrivere un sacco di cose comunque e
perché abbiamo finito per scrivere un sacco di
questo tipo di pezzi fondamentali noi
open-source e così sono
disponibile per te se vai su Netflix
che ottiene un comando Github che troverai
la maggior parte dei nostri pezzi di infrastruttura il
pezzi di utensili che sono a vostra disposizione
usare e contribuire se si sceglie di
e si separano nella categoria principale
quindi dovrebbe essere abbastanza facile per te
trovare tutto ciò che stai cercando
non cercano di leggere il piccolo piccolo
stampa puoi andare sul sito e
è tutto qui, ma il principale è
pezzi principali di cui potresti beneficiare
lo spinnaker è lo strumento che apre
fonte che funziona per continuo
distribuzioni del flusso di lavoro di consegna
costantemente in tutto il tuo
applicazioni stateful o stateless per
le librerie di condivisione runtime comuni se
per esempio, è necessario il rilevamento del servizio
abbiamo Eureka che potresti usare lì
sono molte altre alternative e
ci sono alcuni componenti IPC lì come
bene per la persistenza dei dati noi open source
e contribuire con componenti a Cassandra
componenti dell’ecosistema per leggere questo
ecosistema se hai bisogno di fare Redis
distribuito abbiamo il componente
dynomite Eva in contanti per il memcache
replica cliente e come per intuizione
di nuovo se hai bisogno della telemetria per
sistemi distribuiti su larga scala
pezzi di esso sono disponibili che puoi collegare
nella tua sicurezza di ecosistema
molto e probabilmente l’ultima cosa che tu
vuoi che i tuoi team continuino a reinventare
pezzi di sicurezza ci vuole un esperto
ingegneri del software di sicurezza da scrivere
buona criptazione per scrivere buoni sistemi sicuri
quello non cadrà sul loro base
attacchi e cosa ti piacerebbe fare è
fornire questi servizi o condivisi
librerie quindi i tecnici delle applicazioni
può concentrarsi meglio sulla logica dell’applicazione
il loro impatto sul business non è così
reinventare la sicurezza per avvolgere micro
i servizi sono buoni portano un grande valore
alla disponibilità di velocità di sviluppo
molte altre dimensioni ma non lo sono
primi servizi gratuiti su micro e
soprattutto richiede un cambiamento organizzativo
e infrastruttura centralizzata
investimento se vuoi farlo bene
e tocca a te quando vuoi farlo
quell’investimento è solo da tenere a mente
se hai 10 team che lavorano su 10 micro
servizi e vuoi presentare un
certo cambiamento centralizzato c’è questo
molta quantità di tasse per mangiare tutte e 10 le squadre
dovrà pagare se si vuole farlo
più tardi e forse queste 200 squadre hanno scritto
200 micro servizi la tua tassa centralizzata
diventa molto più grande e così ottimizzato
di conseguenza anche io non posso sottolineare questo
abbastanza non fare qualcosa solo perché
abbiamo fatto ciò che ha funzionato per noi potrebbe non
lavoro per te
quindi sii consapevole della tua situazione e di cosa
sono il commercio giusto di settembre
ottimizzazioni per te siamo felici
condividere i nostri strumenti ma l’ unico lavoro per
tu se stai facendo il simile
ipotesi e compromessi simili a noi
spero che questo sia stato utile che posso prendere
tutte le tue domande ora
grazie mille ce ne sono alcuni
domande interessanti dal
pubblico e in realtà uno di loro ha causato
un piccolo sorriso sul mio volto analogico al
albero che cade nella foresta se il caos Kong
uccide roba e nessuno se ne accorge
è come lo sai in realtà
è successo una domanda eccellente
quindi solo perché solo i nostri utenti
potrebbe non essere a conoscenza del fatto che il caos Kong sia stato ucciso
qualcosa è la nostra telemetria abbiamo il nostro
telemetria e registri e importi osceni
che praticamente ci dice tutto
questo sta accadendo nel nostro sistema ora
naturalmente l’ effetto collaterale più ovvio
che non vogliamo vedere ma tu hai
visto di volta in volta è quando il caos
Kong ha un impatto sull’utente, ma questo è
in realtà un fallimento che possiamo imparare
da e rendere i nostri sistemi più resilienti
la situazione più difficile è quando uccidi
qualcosa e gli utenti non vedono nulla
in realtà richiede disciplina da parte di tutti
gli sviluppatori di sistema coinvolti a guardare
al loro registro della loro salute del sistema
capire come è andato il sistema
la situazione di evacuazione sotto il
situazioni di latenza e assicurarsi che
non ci sono colli di bottiglia vicini
per raggiungere questo non c’è fallimento
che lo degradiamo appena fuori
tutto sembrava peachy ma non lo era
quindi c’è un po ‘di follow-up
ciò accade internamente ma prima e
soprattutto, naturalmente, quando si corre Kong è
che non vi è alcun impatto sull’utente e chi o
come decidi quali servizi e quali
i vapori devono essere creati o vanno via
che un architetto centrale o eccellente
domanda quindi non abbiamo un centro
architetto non hanno architettonico
commissioni cerchiamo davvero di abbracciare
culturalmente tutto questo concetto di sciolto
accoppiamento e individuo o in questo
caso particolare libertà di squadra e
responsabilità quindi ogni squadra è libera ma
anche responsabile per effettuare queste chiamate
quando devono entrare nuovi servizi
operazione quando alcuni servizi devono
essere in pensione e come affrontare il
strategie di migrazione
Penso che qualcuno abbia paura di fare il
I test del caos in produzione quindi penso
ecco perché sarebbe venuta questa domanda
raccomandate anche test distruttivi
sulla produzione su più critico
applicazioni ad esempio finanziarie di nuovo
dipende da cosa si sta cercando di
ottimizzare perché è davvero una buona domanda
ma a un certo punto devi abbracciarlo
il fatto che il fallimento accadrà e se
non lo metti alla prova che succederà
comunque quello che stai guadagnando
sulla gestione dei test distruttivi e
sì in produzione è la tua comprensione
se la tua tecnologia è pronta
occuparsi di questi fallimenti, ma di più
è importante che il tuo popolo sia pronto a
questo per affrontare questi fallimenti per
esempio avranno libri o volontà
devono rimescolare avete abbastanza
persone che capiscono i tuoi sistemi
hai abbastanza persone che sanno chi
chiama chi capisce questi sistemi questi
prontezza puoi fare la simulazione che puoi
eseguire le esercitazioni, ma niente batte in esecuzione
è in produzione e se vuoi farlo
in produzione ma su una copia di quello
diciamo perché è la tua fatturazione
anche il sistema in una modalità shadow va bene
ma tu vuoi avvicinarti al reale
cosa come ti stai bene con per favore
non farlo solo perché Netflix fa
ci sentiamo a nostro agio negli anni
quindi per fare un’esercitazione antincendio non lo fai davvero
c’è bisogno di accendere l’edificio
quello che stai dicendo probabilmente non ora a
domanda che è spuntata più di
una volta così ho davvero due risorse dove
possiamo ottenere quei fantastici servizi
visualizzazioni quindi il servizio
visualizzazione che ho usato qui nei video
sono chiamati flusso e flusso che non hanno
stato aperto ancora ma uso il
tastiera ancora perché la nostra filosofia è
generalmente vogliamo aprire-fonte
tutto ciò che non è critico di proprietà
al business che questi sono i
pezzi di infrastrutture o no
piace condividerli allo stesso tempo
non può impegnarsi a nome di quelle squadre a
qualsiasi linea del tempo particolare perché
le priorità aziendali vengono sempre al primo posto
tutto quello che posso dirti che ci piacerebbe
open-source e ci piacerebbe condividerlo
con te e in effetti ottieni il tuo
feedback e contributi, semplicemente no
sapere quanto presto o come non presto sta andando
per capitare, immagino che avremo tempo per a
avvolgere per uno o due di più che tipo di
disciplina chiedi alla tua squadra
membri oh questa è una domanda carica
niente di veramente in particolare ma se tu
non ho visto la nostra cultura che io altamente
ti consiglio di andare a vedere che è disponibile su
SlideShare sul nostro sito se lo hai visto
questo intero concetto di libertà e
responsabilità il tipo di sviluppatori
che vengono assunti e hanno successo a
Netflix lo accetta davvero e non lo fa
significa che queste persone non lo fanno
errori vuol dire che impareranno
dai loro errori, gli errori vanno bene
significa che è così che impariamo a non farlo
voglio continuare a fare lo stesso errore tutto
ancora una volta okay ultima domanda servizi
appartenere alle squadre come gestirle nuove
funzionalità che ha bisogno di cambiamenti in molti
i servizi c’è qualcosa da gestire
questo sì senza problemi ed è uno dei
quelle situazioni difficili dove non c’è
la pallottola magica ci sono casi in particolare
con sicurezza diciamo che vuoi
rispondere a una minaccia appena scoperta o
hai bisogno di un pezzo critico di
funzionalità da diffondere in tutto
tutti i servizi dove faccio campagna a
la campagna centralizzata è necessaria e
hai bisogno di qualcuno per coordinarlo di più
del tempo per noi questo è fondamentalmente il
squadra che sta spingendo per cambiare il
sostenendo il cambiamento vanno e si incrociano
interfacciano funzionalmente con chiunque
richiesto e fare che il cambiamento entrare in
produzione perché la maggior parte dei nostri team lo fa
implementare una sorta di CD CI in cui anche
le modifiche centralizzate alle librerie vengono spinte
su una cadenza regolare automaticamente
diventa davvero una questione di coda lunga
non ci sarà questione di quanto ci provi
per abbracciare la consegna continua lì
sarà un sottoinsieme di applicazioni che
non vengono spinti così spesso e quelli lo faranno
richiede un’attenzione speciale ok ecco fatto
Tutto ok
grazie mille e per favore assicurati
che voti per la sessione
tu

Please follow and like us: