Press "Enter" to skip to content

GOTO 2016 • Pragmatic Microservices • Randy Shoup


quindi ciao sono shell di Randy e volevo
parlare di microservizi pragmatici e
questo tipo di discorso è venuto fuori da quello che ho speso
l’ultimo paio d’anni che evangelizza
micro-servizi che ho lavorato a Google e
eBay quindi un sacco di ambienti in cui noi
ha fatto di micro-servizi molto e poi
è diventato chiaro che tutti stavano parlando
su quanto siano grandi i micro servizi ma
nessuno stava parlando di come fare il
decisione di andare ai micro servizi e a
dare alle persone una sorta di metodo di principio
decidere se andare in quella direzione
o stare con quello che hanno così quanti
le persone sono già su un micro servizio
l’architettura nella stanza è sorprendente
importo quindi forse un quarto delle persone
quindi questo discorso è più per i tre
quarti rispetto al quarto di dollaro
così questo come ho detto che ho usato per lavorare per
Google e per eBay e un sacco di cose
di cui voglio parlare qui è uscito
di conversazioni che è andato a qualcosa
come questo
quindi vivo nella Silicon Valley e consiglio
un sacco di startup e conversazioni
andrebbe hey Randy dicci come hai fatto
roba a Google e eBay e direi
certo che sarò molto felice di dirtelo ma
devi promettermi di non farlo a
almeno non ancora su larga scala
architetture che sono il tipo di
poster bambini di micro servizi
evoluto non sembravano micro
servizi all’inizio così da prendere un
esempio da eBay a seconda di come tu
contare
eBay è sulla sua quinta generazione di
la sua architettura è così famosa
come un’applicazione perla monolitica che
il fondatore ha scritto in un weekend di tre giorni
nel 1995 si è poi trasferito a un monolitico
Applicazione C ++ che al suo peggio era
3,4 milioni di righe di codice in un singolo
DLL quindi per favore non farlo
è quindi migrato a Java basato su Java
infrastruttura basata che era
partizionato ma non proprio micro
servizi un po ‘di parallelo
applicazioni e finalmente penso che sia
giusto per caratterizzare l’attuale eBay come
un’architettura di micro servizi così Twitter
ha attraversato un’evoluzione simile così
a seconda di come conti su Twitter
sulla sua terza generazione del suo
infrastruttura
così iniziò notoriamente come un monolitico
applicazione rotaie che il mio Twitter
gli amici mi dicono che era soprannominato il
monorotaia che pensavo fosse abbastanza
intelligente poi si trasferì a tirar fuori un mucchio
del front-end in JavaScript un mucchio
del back-end in servizi per lo più
scritto in Scala e ora è Twitter
per lo più è Apollo è un insieme poliglotta di
micro servizi e Amazon è andato
attraverso un’evoluzione simile non lo sono
così chiaro non ce ne sono così tanti così chiari
distinzione tra l’architettura
sorta di confini ma è iniziato come
un’applicazione monolitica in C ++ un po ‘di
servizi scritti principalmente in Java e
Scala e ora Amazon può essere
caratterizzato come di nuovo un insieme di poliglotta
micro servizi quindi ci sono due cose
per notare qui uno è che le aziende a
la grande scala alla fine finirà per evolversi
ai micro servizi assolutamente veri e
è assolutamente la scelta giusta per
loro su larga scala ma nessuno di loro
iniziato in quel modo giusto così che penso
la cosa fondamentale da portare via e ciò che io
voglio lasciarti con sta pensando
sono i passi lungo il cammino nel
evoluzione e fare la scelta giusta
per dove sei ora o in un altro modo
chiedi il problema chiedi che la nostra domanda è la nostra
i micro servizi sono davvero la soluzione giusta
per ogni problema e penso che la risposta
non è quindi di scomposizione che volevo
parliamo prima di alcuni modelli monolitici
architetture quindi volevo parlare
su alcune delle caratteristiche di
architetture di micro servizi quindi voglio
per parlare della trama di Ryoka
decisione come è e quando quando siamo
intenzione di prendere la decisione di reagire
attacco potenzialmente e, infine, voglio
darvi alcuni suggerimenti da
trame reattive di successo e ho
stato coinvolto in alcune tattiche
e strategie che puoi usare per farlo
trama ryoga successo così prima voglio
parlare di monoliti così ci piace
piace sentire a volte quei monoliti
siamo cattivi e dovremmo vergognarci di
loro ma come hai sentito un momento fa
tutte quelle aziende di cui abbiamo sentito parlare
e forse usare ogni giorno tutto come iniziato
monolite e ci sono in realtà reali
vantaggi per avere un monolitico
approccio giusto è certamente semplice a
prima è un approccio molto semplice a
piccola scala tutte le latenze all’interno di a
l’applicazione monolitica è in corso così
è piuttosto veloce in genere è a
base di codice singolo e una singola distribuzione
unità in modo che abbia qualche buon funzionamento
la semplicità è ed è una vera risorsa
efficiente su piccola scala
ci sono molti svantaggi che arrivano
anche con monoliti per lo più che si verificano a
più grande scala quindi il coordinamento
l’overhead cresce sostanzialmente come il tuo
cresce la squadra e Rodriguez è eccellente
presentazione su Zalando oggi
ha dato alcuni esempi veramente nitidi di questo
c’è scarsa applicazione della modularità
con cui Adrienne ha sottolineato nel
nota chiave stamattina quindi non c’è niente
questo aiuterà questo
costringervi ad essere correttamente tra i moduli
singoli componenti e un monolite
inoltre si ottiene anche un ridimensionamento della scala così
tipicamente in un’applicazione monolitica
ottieni solo l’ opzione di ridimensionamento verticale
non hai l’opportunità di rompere
in pezzi orizzontali più piccoli e
infine il monolite tende ad essere un
unico punto di errore sia in termini di
bug e in termini di sorta di operativo
disponibilità ma quando hai un
architettura monolitica o forse il
la maggior parte del suo aspetto monolitico
tende ad essere il database e questo è
in realtà qualcosa che la mia corrente
è la società di correzione di punti negli Stati Uniti
lottare con adesso così i professionisti di
avere di nuovo un database monolitico
che è molto semplice
semplice avere tutto in uno
inserire le domande di join a cui vogliamo partecipare
più entità insieme e ottieni e
le query su più tabelle sono
molto facile in un database monolitico
ottieni il beneficio delle transazioni così
che in realtà ha qualcosa di veramente bello
le proprietà veramente belle lo rendono
la vita molto più facile, certamente e poi
di nuovo è molto efficiente in termini di risorse
piccola scala ma ma i e i problemi
quello che è successo con a
database monolitico tendono ad accadere di nuovo
su scala più ampia, quindi il database tende a
essere un punto di accoppiamento per la tua squadra finita
tempo tende ad essere teso a
su larga scala diventa una performance
e un collo di bottiglia di scalabilità che può essere
difficile da sintonizzare un database monolitico
correttamente giusto se un database sta facendo
un sacco di cose diverse come Adrienne
sottolineato nel keynote se lo è
davvero la tua cucina affonda quindi è difficile
per diventare difficile sintonizzarlo con qualcuno
caso d’uso particolare quando lo si utilizza
per il bulk legge velocemente query su larga scala
leggere letture e scritture di singoli
registra tutte quelle cose che conosci
una messa a punto differente farebbe leva
approcci di accordatura diversi
e sono difficili e se ne hai uno
questo è un database che sta facendo tutto
è difficile sintonizzarsi in un globale
modo e poi finalmente il monolitico
database diventa un singolo punto di
fallimento ma se sei in un monolitico
situazione è possibile impostare voi stessi per
successo anche senza passare a micro
servizi quindi una delle cose che io
consigliamo vivamente di sfruttare il
partizioni naturali nel tuo problema giusto
così un sacco di diversi problemi problemi
aree che affrontiamo ogni giorno e lo sono
naturalmente dividere in separato
aree così se stai scrivendo un e-commerce
sito come eBay che partiziona naturalmente
dal lato acquirente e dal lato venditore
se stai scrivendo una corsa condivisa
applicazione come uber o lyft quella
partizioni naturalmente nello scrittore
lato e il lato del conducente e allo stesso modo
i motori di ricerca si dividono naturalmente in
il crawler l’ indicizzatore nella query
motore così e poi la prossima cosa che
puoi fare è forzare te stesso e forzare
la tua squadra per avere la disciplina in giro
mantenendo i confini modulari all’interno
componenti in modo da sapere che sono abbastanza grande per
non avere più i capelli e 25 anni fa noi
non aveva i servizi di micro ma abbiamo fatto
avere la modularità giusta, quindi è sicuramente
possibile anche in un sistema dove c’è
un’applicazione o un binario da avere
divisioni modulari tra i singoli
componenti e quel componente interno
è uno ssin ti dà un sacco di the the
benefici cognitivi della divisione di
distribuire in micro servizi e
anche come vuoi mentre decidi di muoverti
a qualcosa di più come i micro servizi
rende facili quei singoli componenti
modificare o sostituire con un telecomando
servizio e poi l’ultima cosa
questo è fondamentale, penso di fare un po ‘
monolite sano è la capacità di fare
consegna continua in altre parole il
capacità di fare rapidi miglioramenti rapidi
rilascia al codice e ciò consente
per evolvere rapidamente il monolite e
anche come vedremo in un momento permette
a rapidamente evoluto da un monolitico
entrare nei micro servizi se questo è il
modo in cui finisci per voler andare bene
quindi quello era un po ‘quello era un breve
tour di monoliti e ora voglio parlare
su architetture di micro- servizi così
è un po ‘strano che non ce l’abbiamo
andato un modo parlando di micro servizi
oggi ma ma credo che non abbiamo davvero
li ha definiti
quindi per me le caratteristiche importanti
di un micro servizio è che sia single
scopo che ho un semplice
un’interfaccia ben definita e quella che il
servizi individuali in un micro servizio
l’architettura può essere modulare e indipendente
l’uno dell’altro e qualcosa che faremo
parlare di un po ‘ più tardi è in
per essere davvero di successo da
in contrasto con il database monolitico
questo è forse condiviso con un sacco di
diverse parti del sistema in ordine
per i microcircuiti davvero
successo abbiamo bisogno dell’individuo
servizi di possedere i propri isolati
persistenza quindi ora potresti guardarti
potrebbe guardare qualcosa di simile e
dite che questa è una nuova idea, ben sapete
idea la parola microcella quindi se lo sapessimo
ha solo un paio di anni ma il
concetto di dividere un sistema in questi
individuo che collabora in modo indipendente
le componenti sono piuttosto vecchie e alla mia
micro servizi mentali nonostante il
la fanciness della parola non è altro
di un’architettura orientata ai servizi
fatto correttamente quindi voglio parlare ora a
un po ‘ sul tipo di professionisti e
cons a micro servizi quindi ciascuno così
i bei vantaggi di un micro
approccio ai servizi è quello di ciascuno
la singola unità è semplice, quindi questo è il
idea del micro servizio è molto
semplice componente individuale che puoi ora
scala in modo indipendente possibile
scala in modo indipendente e loro possono
avere prestazioni indipendenti
caratteristiche che puoi anche io penso
questo ti è meno apprezzato
perché i micro servizi sono piccoli e
indipendente è molto più facile da
test indipendente e indipendente
schierandoli voglio dire che può essere reale
vantaggio in un sistema su larga scala e
quindi, infine, perché i micro servizi sono
unico scopo che ci consente di
sintonizzare potenzialmente ottimamente il
prestazioni di quella particolare parte di
il sistema in modo che possiamo introdurre il caching
per esempio dietro il dietro il
interfaccia di servizio o ha introdotto un altro
appropriata struttura dati o gioco
meccanismo di archiviazione che ci consente di
accordare le prestazioni di quel particolare
parte del sistema in modo ottimale alcuni dei
i contro dei micro servizi sono ok ognuno
la singola unità è semplice ma ora tu
hanno un sacco di diverse unità di cooperazione
e la complessità del sistema ha
cambiato così ora è ora che abbiamo
semplice semplice individuo
ma parte della complessità di ciò
il sistema si è spostato verso le interazioni
tra le unità e, se non lo facciamo
ho davvero un buon monitoraggio come parlerò
circa in un momento che sarà un
posto dove operativamente e sorta di
Per quanto riguarda lo sviluppo, saremo ciechi
a quelle complessità così abbiamo anche dentro
i micro servizi ora sostituiscono quelli in
processo che Layton vede ora con la rete
latenza quindi ora dobbiamo essere molto di più
attento a fare chiamate in parallelo
effettuare chiamate in modo asincrono che si occupano di
tutte le questioni di lungo periodo relativamente
latenza più lunga tra le chiamate
di quanto potremmo essere abituati a se tutto
era tutto in lavorazione , abbiamo perso il
possibilità di fare transazioni ci sono
molte cose di cui possiamo parlare
separatamente se ti piace il modo in cui possiamo
prendi un po ‘di buono
benefici delle transazioni indietro ma tu
non metterli in una bella autostrada senza problemi
e anche i microservizi sono una situazione
dove richiediamo molto di più
strumenti sofisticati e molto altro
la gestione delle dipendenze di loro dove
erano abituati a con un monolite quindi uno di
le cose di cui voglio parlare ora sono
alcuni dei prerequisiti per essere
successo con micro servizi e
vedrai alcuni importanti paralleli
con quello di cui Rodrigue ha parlato prima
questo pomeriggio perché è in realtà
in realtà è davvero vissuto così , per prima cosa
voglio parlare della maturità del processo allora
Voglio parlare di organizzazione
maturità e finalmente operativa
maturità e penso che tu non abbia
tutti questi pezzi al posto che tu
dovrebbe lavorare sulla gestione di questi pezzi
prima di passare a qualcosa di più prima
passare ai micro servizi così il primo
area di cui volevo parlare è dentro
elaborare la maturità e qui voglio
evidenzia l’ idea di continuo
consegna quindi è un piacere avere nel
mondo monolitico è un assoluto
requisito quando siamo in un micro
mondo dei servizi, quindi cosa dobbiamo avere
capita prima che possiamo implementare con successo
un approccio ai micro servizi è avere un
pipeline di distribuzione davvero ripetibile
dove abbiamo pulsante a basso rischio
lo spiegamento è davvero facile forse uno
linea in una riga di comando o un pulsante in a
UI che ci permette di fare un lavoro molto veloce
rilasciamo la cadenza in modo che possiamo rilasciare
potenzialmente mobile più volte al giorno
e anche permettere in modo critico di consentirci entrambi
a rollback e recuperare quando quelli
Due
I clemont non funzionano Non lavoro bene
l’altro aspetto della consegna continua
questo è importante qui è avere un
forte enfasi sui test automatizzati
e tutti i posti che io
so che hanno davvero fatto bene
i micro servizi hanno adottato automatizzato
testare subito, quindi è importante
qui che gli sviluppatori stanno scrivendo il
prova e codifica allo stesso tempo così come
Non ho finito con il mio film o il mio
passare al sistema finché non li ho entrambi
scritto il codice che implementa il
caratteristica e anche scritto il codice che
prova la funzionalità è meno importante per
me sia che si tratti di test o test
prima ma non ho finito con quello
quel pezzo di lavoro fino a quando non è entrambi
opere scritte e fini testati e questo
permette a questo ci dà la fiducia
apportare modifiche rischiose al software e
per rilasciarlo molti potenzialmente multipli
volte al giorno
e poi l’ultimo elemento qui di
la consegna continua è continua
integrazione quindi per definizione un micro
l’ architettura dei servizi è un sistema in cui
ci sono molti componenti che collaborano
un sacco di lotti di micro individuali
servizi che volano intorno, quindi è importante
che saremo in grado di testare l’interazione
di quei componenti di sistema prima di noi
implementazioni in modo che possiamo fare noi possiamo
capisci che quelle interazioni sono
andando a lavorare correttamente in un modo sicuro
prima di prima di distribuire lo
quindi, dopo la maturità del processo, voglio parlare
sulla maturità organizzativa e voglio
per menzionare ancora la stessa cosa
quadric menzionato in precedenza su Conway
legge così come hai sentito prima l’organo è
a proposito ha detto nel 1968 che essenzialmente
l’ organizzazione del software di a
l’organizzazione del software limita il
architettura che stiamo per quello che siamo
andando a produrre e in particolare il
progettazione di un sistema sta per essere un
riflessione dei percorsi di comunicazione
all’interno dell’organizzazione quindi intendeva questo
come una situazione descrittiva che era
descrivendo la scena che ha visto in a
gruppo di organizzazioni che ha lavorato
con e ma quello che ha notato è che l’ a
sistema modulare un sistema che aveva
qualcosa come i microservizi in realtà
richiede un’organizzazione modulare e così via
quando abbiamo piccoli indipendenti
squadre che sono in grado di operare
autonomamente che ottengono che finisce
conducendo più direttamente a più flessibile
e sistemi componibili mentre quando noi
avere squadre monolitiche che sono abbastanza
che sono grandi e interdipendenti che
finisce per portare a più monolitici di più
sistemi interdipendenti quindi è a
diretto c’è una relazione diretta
tra la struttura organizzativa o
l’architettura organizzativa che hai
e l’ architettura del software
sarai in grado di produrre e
quindi possiamo usare questo non solo in a
modo descrittivo ma anche in una normativa
modo che significhi che possiamo per ottenere il
sistema che vogliamo possiamo aver bisogno di
ingegnere l’ organizzazione così uno dei
le cose che consiglio vivamente è se
stai considerando di passare al micro
servizi una delle prime cose che hai fatto
considerare di fare è rompere il tuo
organizzazione in pezzi più piccoli
Parallelamente ai servizi che desideri
costruisci un po ‘più di dettagli su quello
Mi piace parlare di questo mi piace parlare
sull’organizzazione dei micro servizi in
la forma di squadre di servizio e questo è un
questo è un termine che abbiamo usato in Google
Anche Amazon e Netflix parlano di
queste cose allo stesso modo i singoli a
i singoli team di servizio sono allineati
con particolari domini del business
quindi ogni squadra ha una chiara ben definita
insieme di responsabilità e un
il singolo team è generalmente responsabile
per un servizio o una piccola serie di
servizi correlati a cui intendono partecipare i team
essere cross-funzionale così e cosa siamo
cercando di arrivare qui è che è che il
la squadra è autosufficiente è la squadra
fondamentalmente in grado di fare il suo lavoro
senza dover coinvolgere molto altro
squadre in un sacco di dover parlare
con molte altre squadre in un livello molto alto
larghezza di banda ora ovviamente ogni squadra
nessuna squadra è in grado di fare tutto al suo posto
proprio dovrebbe contare su altri team per
fornire servizi di supporto
supporto alle biblioteche e supporto
strumenti ma questo è più di una mano-fuori
relazione ma poi e e la maggior parte di
il lavoro che farebbe una squadra individuale
la necessità di fare è isolata all’interno del
confine della squadra e poi dell’altro
la disciplina importante qui è quella squadra
dovrebbe avere la proprietà end-to-end del
software che costruiscono bene così
la squadra è proprietaria del servizio fin dall’inizio
progettazione fino allo sviluppo fino a
distribuzione
fino alla pensione, così quando io
iniziato nel software te
per essere che il nostro team è stato fatto quando noi
ha gettato il codice sul muro al
team operativo ora è stato terribile
situazione per entrambi gli aspetti dello sviluppo
e il lato operazioni ora una squadra è
fatto solo quando il servizio che sono
fornendo non viene più utilizzato da nessuno
chiunque abbia ragione una squadra viene fatto solo quando a
il servizio è in pensione e questo molto
è parallelo alla filosofia di DevOps
costruiscilo tu lo esegui così l’ ultimo
prerequisito di cui voglio parlare
è una maturità operativa in giro
monitorare così per avere successo
con i micro-servizi di cui abbiamo davvero bisogno
avere una forte pratica nel nostro
organizzazione del profondo molto altamente
monitoraggio dettagliato end to end di
sistemi di produzione e ciò di cui abbiamo bisogno
ecco la capacità di rilevare e avvisare
su problemi che si verificano ovunque nel
sistema e il modo – il modo per
capire se ce l’abbiamo o no
è una sorta di metrica che è possibile utilizzare
dobbiamo essere in grado di avere abbastanza
monitoraggio per essere in grado di
diagnosticare da remoto i problemi che si verificano in
produzione senza dover accedere
la macchina individuale così la cosa che
Mi piace dire che qui è se tu mai
ssh in una macchina per eseguire il debug di un problema
è perché il tuo monitoraggio è fallito
sei così un po ‘ su Microsoft
architettura di servizio micro e alcuni
dei modi in cui possiamo avere successo
con i micro servizi ora voglio parlare
sul processo decisionale che avremmo fatto
passare attraverso per spostare potenzialmente da un
sistema monolitico in micro servizi così
Voglio porre la domanda perché siamo noi
andando a RER Kotak e sono tipicamente
tendono ad essere tendono ad essere uno dei tre uno
o più di tre tre risposte così
primo motivo che tende l’ architetto weari
essere intorno alla velocità o o in Claude
L’esempio di Reid di solando abbiamo parlato
su questo in termini di innovazione quindi
ecco il motivo per cui vorremmo farlo
il cambiamento è perché il nostro tempo per il mercato è
essere costretti dalla mancanza di
isolamento o l’accoppiamento che troviamo
da nel monolite anche un altro
l’esempio è che le squadre potrebbero fare un passo
l’un l’altro le dita dei piedi mentre cercavo di ottenere
il loro lavoro è stato fatto in modo che le squadre non lo siano
più veramente capace di svilupparsi
indipendentemente perché il perché il
interazioni con
L’ARE monolite sono troppo difficili da
trattare con e poi anche l’altro il
altra metrica è quanto tempo ci vuole
per i nuovi ingegneri che si uniscono al tuo team
essere produttivi o più precisamente per quanto tempo
ci vogliono nuovi ingegneri per essere in grado di
sentirsi sicuri di poter controllare qualcosa
dentro senza rompere qualcosa proprio così
oltre a velocità spesso altre
le organizzazioni ci penseranno da a
ridimensionamento della prospettiva, quindi non ci sarà
potrebbe venire un momento in cui verticale
il ridimensionamento del monolite non funziona più
quindi non è più sufficiente scalare
al carico che noi che siamo
sperimentare e che le parti del
il sistema potrebbe aver bisogno di scalare in modo diverso
tariffe da altri questo era certamente
qualcosa che abbiamo sperimentato su eBay
dove pezzi un sacco di pezzi diversi di
il sistema si ridimensionerebbe all’impazzata
tassi diversi rispetto ad altre parti
e così bene quando era in un monolitico
situazione eravamo piuttosto limitati
e quando avevamo un’architettura dove
le cose erano più divise , era molto
più facile essere in grado di fare quelli su scala
quelle diverse parti del sistema
indipendentemente e quindi l’ultima ragione
pensare alla connessione posteriore è
implementazione in modo che parti del sistema potrebbero
deve essere distribuito indipendentemente da
altri di altri perché forse sono su
un diverso ciclo di vita quindi alcune parti di
il sistema tende ad evolversi molto rapidamente
altre parti del sistema sono più
stabile e si evolve più lentamente e potrebbe
sia che la cadenza di rilascio monolitica
è troppo lento o troppo complicato
o è troppo rischioso, quindi può essere altro
altri criteri decisionali che vorresti
usare per pensare se spostarsi da
un approccio più monolitico in in
micro servizi così come un ingegnere guardo
a questo e vado bene se sono già
finirà nei micro servizi perché
non appena inizio lì giusto che a
e non è il fatto che devo ri sono
Kotak ha detto che il modo non significa
che non ho fatto il mio lavoro mi piace davvero
pensarlo in un modo diverso dove io
piace pensare di arrivare al re-architetto
un sistema è più un segno di successo che
è un segno di fallimento e perché dico
che ci sono molti sistemi
ci sono un sacco di start-up in tutto il mondo
Il 90% di loro fallisce ce ne sono molti
sistemi nel mondo
Il 90% di questi non è appropriato per
microservizi perché sono troppo piccoli
o sono troppo semplici quando arriviamo al
punto che vogliamo rifiutare un sistema o
che sentiamo il bisogno di re architetto a
sistema da un vecchio e più vecchio
architettura in un’architettura più recente
che spesso questo è un segno che il
il modello di business che stiamo perseguendo è
veramente successo a destra significa che
stiamo facendo qualcosa che le persone
davvero a cuore e in genere noi
avere le risorse al fine di applicare –
fare l’architettura Rea così questo io
sai che non posso dire abbastanza spesso al
startup che io quello che consiglio il
questo punto di veramente texture è veramente
come segno di una traiettoria di successo
più che più di un problema e se tu
non mi credere più, possiamo pensare
sugli esempi che ho mostrato prima
eBay è l’Amazzone di Twitter
il mondo ognuno di voi
conosci le applicazioni conosciute che usiamo
tutto il tempo è passato attraverso uno di
queste evoluzioni architettoniche e no
sistema che posso pensare a qualsiasi azienda
Ho mai sentito parlare dello stesso
l’architettura oggi come loro quando loro
iniziato così nell’altro modo che mi piace pensare
su questo è se non finisci
rammaricandoti della tua prima tecnologia
le tue decisioni probabilmente e oltre
progettato e potrebbe essere stato
un altro concorrente di Twitter che piuttosto
che fare qualcosa di veramente semplice con
le rotaie hanno iniziato a costruire un grande
sistema distribuito che stava per
ridimensionali per i prossimi cinque o dieci
anni sai che c’è una ragione per cui
non ne abbiamo mai sentito parlare
di quella compagnia c’è una ragione per cui
non abbiamo mai sentito parlare del concorrente di eBay
o concorrente di Amazon che ha iniziato
piuttosto un sistema distribuito
di un monolite è perché il
aziende che hanno avuto successo focalizzate
nel soddisfare le esigenze dei loro clienti
trovare una scoperta di un modello di business
assicurandosi che avessero il mercato del prodotto in forma
e andando avanti in una sorta di
via evolutiva piuttosto che finita
ingegneria dall’inizio così il
ultima sezione che voglio parlare
qui va bene Randy, mi sento come se fossi
la situazione in cui voglio reagire
attacco ai micro servizi così ora voglio
per offrirti alcuni suggerimenti su
tattiche e strategie che hanno funzionato
ragionevolmente bene in passato, quindi l’ uno
cosa che raccomando assolutamente di
iniziare con non farlo come a
bang e Martin Fowler ha un meraviglioso
citazione qui che amo che è il
unica cosa una migrazione Big Bang
le garanzie sono piuttosto un Big Bang
Vorrei molto molto più fortemente
consiglio di pensare a un Ryoka
texture come un passo incrementale, quindi come
possiamo mantenere l’attuale sistema di sistema
correre e allo stesso tempo muoversi
incrementale nel corso da da una cosa
da una vecchia architettura a una nuova
architettura e analogia con
i sistemi distribuiti sono un reattore
l’architettura è più un aggiornamento continuo
che è una distribuzione Bluegreen
non ha senso quello che sto dicendo va bene
ottimo quindi come ci avvicineremmo
migrazione incrementale così il punto zero
che consiglio spesso alle persone che io
lavorare con è fare un’implementazione pilota
prima di convincerti che il nuovo
architettura se si tratta di micro servizi
o qualunque cosa funzionerà per il tuo
per il tuo dominio problematico e all’interno del tuo
organizzazione e ciò che raccomando è
che noi siamo che tu scegli una iniziale
esperienza verticale end-to-end e
migra quella cosa piuttosto che prendere un
singolo pezzo di iniziare con la
ragione per cui vogliamo fare questo tipo di
pilota è vogliamo che vogliamo prendere il
opportunità di imparare e di adeguarsi come noi
come stiamo facendo questa nuova architettura noi
voglio anche dimostrare la fattibilità
e all’interno della nostra organizzazione e ottenere il
fiducia che possiamo possiamo avere questo
lavora con il nostro team tecnologico con il nostro
stack tecnologico e con il nostro business
problema anche noi allo stesso tempo vogliamo
vincolare il nostro investimento e il nostro rischio così
non vogliamo fare un big bang reale
architettura immediatamente e al
stesso tempo se noi se scegliamo un reale
problema del cliente in realtà siamo
fornendo un vero valore per il cliente mentre
lo stiamo facendo noi architettura
quello siamo noi che è il punto zero e
in realtà questo passo iniziale tende a
spesso è il più difficile perché questo è il
momento in cui stiamo in realtà imparare a
fai le cose in un modo nuovo e noi siamo
in realtà costruendo il tipo di base di
costruisce le capacità di base
al fine di passare a micro
servizi così una volta che lo abbiamo fatto ora noi
dovrebbe adottare un approccio incrementale a
migrando il resto del sistema e il mio
forte suggerimento è che noi in realtà
pensaci da
qual è il valore aziendale più importante
e una specie di cosa è più importante
parte del sistema e prova a farlo
prima e che sembra controintuitivo essa
potrebbe sembrare che forse è un forse
questo è un approccio rischioso, ma questo è
in realtà ciò che è esattamente ciò che noi
fatto a eBay dove abbiamo guardato
tutte le pagine del sito e invertite
sorta di loro per contributo alle entrate
e siamo architetti che il più alto
prima le pagine che generano entrate e poi
è andato giù da lì e la ragione
per fare questo questo nonostante essere
controintuitivo è che questo ci permette
concentrarsi sulle aree che tipicamente
avere il più grande cambiamento quindi è il
cose su cui stiamo effettivamente lavorando
saremmo lavorando comunque anche
massimizza il beneficio a breve termine e quindi
una sorta di payoff a breve termine che otteniamo
dall’investimento nella reaaahhr
trama e ci costringe anche a
affrontare e risolvere un mucchio di duro
problemi che dovremmo affrontare in precedenza
nel ciclo piuttosto che aspettare
la fine per affrontare il vero difficile
sfide e l’altro interessante
cosa che è venuto anche fuori dal eBay
l’esperienza è che potrebbe essere così come te
continua a scendere dal livello più alto
valore aziendale al valore aziendale più basso
potresti finire per avere il nostro monolito
resta in giro per sempre così quando me ne sono andato
eBay eBay ha fatto il suo è Ryoga
tech chure per sei o sette anni quando io
lasciato nel 2011 in quel momento c’erano
ancora pagine che erano su quello precedente
versione due dell’architettura ma
quelle pagine erano le pagine che erano
a nessuno importava loro mai
cambiato non stavano ottenendo molto
traffico e quindi abbiamo potuto avere da
risolto questo tipo di errore più grande
il problema più grande prima e poi partire
il resto più tardi ci ha permesso di tipo
migra quelle quelle altre pagine o quelle
altri pezzi del sito molto
opportunisticamente
e permettici e ci costringi a pensare
attentamente su dove era più
valore aziendale che potremmo ottenere da questo
investimento piuttosto strutturato piuttosto che
facendo le cose facili prima così ora un po ‘
un po ‘di tattica sull’intaglio del
monolite stessa quindi la prima cosa
Mi piace suggerire è che cerchiamo o
potenzialmente potenzialmente
fattore per creare una cucitura all’interno
il monolite così abbiamo trovato quest’area che
può essere una specie di separato dal resto
del monolite e di nuovo spesso c’è
un sacco di lavoro associato con
refactoring per rendere questo il caso così
quindi la prossima cosa che vogliamo fare è
muro dietro un’interfaccia e
tutto ciò che tutte le interazioni a quella
quel componente sta andando sta andando
attraverso quell’interfaccia ma è ancora dentro
processo con il monolite così il prossimo
cosa vogliamo fare se non lo facciamo già
avere forti test automatizzati su questo
area vogliamo scrivere un sacco di
test automatici intorno a quello particolare
componente e solo dopo quello che vogliamo
vogliamo spostare l’implementazione di
quel componente fuori nel proprio telecomando
servizio e sostituirlo con a
sorta di micro servizio e quindi vogliamo
risciacquare e ripetere
ogni volta che davo questo discorso sembrava questo
Ho avuto la sensazione che questo sembra
troppo semplicistico ma a vicenda
architetto ogni altro noi architettura
approccio che è un po ‘più complicato
o come più passaggi rispetto a questo io non trovato
non lavorare così come questo approccio
è molto semplice ma è molto
passo dopo passo ed è molto simile
procedurale e ci consente di fare il make
molti progressi in avanti quindi la finale
cosa che voglio parlare qui sono
alcuni schemi di Annie che mentre ci stiamo muovendo
ai servizi che potremmo che potremmo
imbattersi in e così il primo che voglio
parlare di è in contrasto con il micro
servizio che lo schema della zia è qui
Mi piace chiamare il servizio mega e questo
è un servizio in cui ha davvero finito
una vasta area di responsabilità così è
non è un singolo scopo , non è non è un
piccola interfaccia ben definita con a
una piccola superficie e quelle
i tipi di servizi mega tendono ad essere veramente
difficile cambiare davvero difficile
evolvere e anche a farlo
quantità di dipendenza molto insostenibili
quindi conosci quel servizio che fa abbastanza
molto è pieno di controcorrente
dipendenze da altri servizi o
applicazioni e molto downstream
anche le dipendenze, quindi non farlo
e dal modo in cui un lato come una nota a margine
Penso che molti dei nostri fallimenti
l’industria ha dovuto prima tentare di farlo
passare a un’architettura orientata ai servizi
è venuto perché abbiamo costruito servizi che lo erano
diritto troppo ampio che era quello
certamente era la mia esperienza e così uno
dei motivi per cui penso che il
l’industria ha spostato correttamente verso
pensando a servizi come micro
i servizi stanno cercando di evitare
quel problema cercando di non costruire
servizi che hanno vaste aree di
responsabilità che sono essenzialmente
altri un mini mini monoliti in
il nostro sistema così il prossimo qualsiasi modello che
Io di cui voglio parlare è qualcosa
che io chiamo l’ astrazione che perde
servizio quindi l’idea qui è quella in cui
quando si produce l’interfaccia il servizio
fornitore non pensava a questo proposito dal
prospettiva del cliente ma solo
ci pensavo dal punto di vista di
cosa avrebbe preso il fornitore
produrre come essenzialmente lo è
essenzialmente fuoriuscita di implementazione
dettagli del servizio nel
interfaccia e ci sono molte ragioni
non farlo
il più potente è perché questo
modello dei consumatori del servizio spesso
tende ad essere molto più semplice così
i consumatori tendono ad avvicinarsi ai consumatori
essere più astratto e tende ad essere un
molto più semplice dell’implementazione e
anche come fornitore di servizi se perdiamo
il nostro modello di implementazione nella
interfaccia che lo rende davvero difficile
per noi per cambiarlo
che limita la capacità della nostra abilità
per evolvere quel servizio nel tempo, quindi
l’ultima cosa di cui voglio parlare è l’ultima
anti-modello che voglio parlare
qui è persistenza condivisa così quando noi
avere una situazione in cui abbiamo un bello
interfaccia a livello di servizio micro ma
condividiamo un database o un altro
meccanismo di persistenza con altro
servizi o altre applicazioni che
in realtà si rompe completamente rompe il
incapsulamento dell’interfaccia che noi
esposto ai nostri clienti e in realtà
incoraggia o almeno consente altri
parti del sistema per tipo di marca
violazioni backdoor dell’interfaccia
alle nostre spalle, direttamente nel
database o direttamente nel persistente
negozio e ciò che porta a
è di è un accoppiamento molto malsano
ma che sei molto vicino invisibile
accoppiamento malsano tra questi due
servizi che sono anche quelli che sono
condividendo quello stesso back-end e questo era
questo era uno dei motivi principali per cui
una base per un servizio orientato al servizio
l’architettura intorno al 2008 era un era un grande
fallimento alla fine ha funzionato
bene perché l’hanno avvicinato in un
in modo diverso ma in ma nel 2008 l’EBA
l’approccio su eBay era quello di partizionare
il livello di applicazione quindi c’erano un sacco
di applicazioni che conoscevi
ecco la tua vendita e qui compra
ed ecco la ricerca e oh bella carina
partizionamento del livello applicazione
e hanno fatto anche un buon lavoro
partizionamento del livello di servizio così qui
erano servizi di autenticazione qui
erano servizi intorno check out o
fatturazione ma i database sottostanti
sotto quei servizi c’erano ancora
condiviso così ciò che è successo è stato nella pratica
nessuno ha usato i servizi o il servizio
interfacce hanno semplicemente continuato ad andare
direttamente ai database dove sono
era sempre stato ed i servizi assistono
tutto lo sforzo che abbiamo messo nella costruzione
servizi puliti veramente carini finiti
essere sprecato sforzo va bene così dentro
conclusione penso che sia penso che sia
giusto da dire meraviglioso come micro
i servizi sono particolarmente su larga scala
Voglio lasciarvi con l’idea che
i micro servizi potrebbero non essere adatti a te se tu
avere un sistema semplice, se ne hai uno
piccolo gruppo di sviluppatori se non lo sei
in grado di investire in un mucchio di quelli
prerequisiti che ho menzionato prima in
non posso investire nella consegna continua
non possono investire nel monitoraggio non sono in grado di
cambia l’organizzazione in piccolo
team di servizio e, soprattutto, micro
i servizi non fanno per te se non lo fanno
risolvere i problemi che effettivamente
ti ringrazio molto
quindi penso che abbiamo alcuni si prop bene
sì, in realtà avevamo un sacco di domande
va tutto bene lontano e io sarò
qui il resto della conferenza – così
sì sì sì vai e parla con lui
dopo se non ottieni il tuo
domanda qui così sembra che ci sia
un po ‘di confusione sul perché diresti
non fare micro servizi sin dall’inizio
perché il motivo per cui vorresti suggerire che si
dovrebbe fare un monolite fin dall’inizio
e lasciatemi solo dissuadere dalla lista di Prasanna qui
perché indica qualcosa di grande
e di solito le applicazioni non provengono da
l’ inizio giusto sì proprio ora è un
questo è un punto eccellente
sì, perché non dovrei solo trasferirmi
micro-servizi perché quando ne hai 10
utenti o 100 utenti o migliaia di utenti
non dovresti passare il tempo
costruire un sistema distribuito che dovresti
passare del tempo a costruire il
applicazione che sei quella dei tuoi utenti
effettivamente bisogno di usare quindi è una questione di
costo opportunità è una questione di cosa
dovrebbe qual è la cosa più importante che io
può spendere le mie risorse di sviluppo e
le mie risorse di macchina su adesso e in
le prime fasi di un’azienda o di un
l’applicazione è giusta è completamente
sbagliato per pensare costruire qualcosa
che sta per essere cinque anni lungo la
strada o 10 anni lungo la strada se però
conosci le startup che funzionano in questo modo
non tendono a non tendere a lavorare fuori
un’altra domanda è così solo tu
ho detto che non dovresti farlo
integrazione attraverso il database giusto
ma all’inizio del tuo discorso tu
ha detto che voi ragazzi avete avuto questo problema
in questo momento oh sì sì, una volta che ci sei dentro
quindi una delle sfide di
passando dall’approccio monolitico in
micro servizi è che devi iniziare
per interrompere questi punti di integrazione all’interno
il database di nuovo l’idea nel
presto quando ci pensi come
diversi cicli di vita vita diversa
i cicli hanno una persona o una vita diversa
cicli di un’azienda nelle prime fasi
non non si dovrebbe cercare di risolvere il
problemi che stanno per venire
più tardi così nella prima fase in cui
di nuovo stai cercando di capire
se hai un modello di business
se hai prod
mercato in forma o se la vostra applicazione
in realtà sarà usato dal tuo
gli utenti che dovresti concentrarti su di te dovrebbero
rendere il più semplice possibile per muoversi
avanti e spesso con piccoli a piccoli
scala che è un’applicazione monolitica
con database monolitici e poi se
dovresti essere così fortunato da dover finire
avere una situazione molto più ampia
è il momento giusto in cui investire
in quell’approccio a lungo termine e il
investimento che faresti prima
su nel mio parere personale è non è
il miglior uso del tempo e delle risorse
ok abbiamo anche avuto un bel po ‘ di
domande su test e come
in realtà lo fai in pratica perché tu
ho detto che dovresti fare un test
sfruttare intorno a un componente nel tuo
applicazione che si strappare e
fare un micro servizio ma a quello
indica le prove che potresti fare
unit test e all’improvviso loro
potrebbero essere test di interfaccia invece proprio io
penso di vedere cosa stai chiedendo, quindi intendo
stai chiedendo in genere di testare
e così come lo abbiamo messo noi
introdurre questa interfaccia attorno al
componente che stiamo per tirare fuori
quello che volevamo quello che stiamo cercando
raggiungere con i test qui è quello di fare
certo che nel tirarlo fuori non l’ abbiamo fatto
rotto qualcosa di giusto e il modo migliore
per farlo onestamente l’ unico modo per farlo
questo è scrivere test che si esercitano
quel componente in anticipo in anticipo
prima di spostarlo se aspettiamo di spostarci se
facciamo aspettare di scrivere dei test ma dopo
l’abbiamo già estratto
è troppo tardi perché non ci conosciamo
non possiamo sapere se siamo cambiati
comportamento o no, quindi devi avere
per farlo prima, così mentre siamo su
l’argomento di cambiare comportamento, quindi dì
che hai un paio di servizi Micra
come fai a testarlo se ne cambi uno
di loro che sono ancora compatibili
come fai a testare diversi micro?
servizi al momento sì è proprio così
come Adrian stava dicendo un momento fa è
una sorta di difesa in profondità ma test in
profondità quindi la prima cosa che possiamo fare
testare un micro servizio è testare
prova quel componente in isolamento giusto
quindi scrivere test di scrittura contro il
interfaccia
correttamente e nella misura in cui abbiamo
altri servizi che quel micro servizio
interagire con noi dovrebbe deriderli
e questo è qualcosa che abbiamo fatto super
pesantemente a Google, dove abbiamo ogni volta che
creerebbe un servizio che vorremmo spendere
la maggior parte del nostro sforzo è il nostro sforzo di test
intorno a testare questo servizio e
isolamento e poi prendersi gioco del
interazioni che quello quel sistema
aveva con che quel servizio aveva con
altre parti del sistema e quello e
questo ha tutto ciò che è facile perché
lo stai facendo in isolamento ma anche
ti permette di simulare molti fallimenti
modalità che non si sarebbero mai verificate o avrebbero mai
solo raramente si verificano nella vita reale, giusto
qualcosa che succede sai che sono uno
in un milione o uno su un miliardo di volte
in produzione è davvero difficile
simula eseguendolo un miliardo di volte
ma è super facile da simulare con
prendendo in giro quello che interagisce
servizio lì così poi il prossimo così è
al livello di servizio quindi il
il prossimo livello successivo è una specie di
test di integrazione in cui potremmo testare il
testare il sistema testare un sistema in esecuzione
tutti insieme e questo ti permette di fare
altro e tutto ciò che è end-to-end uno
più cosa dirò di te qui
non è che non si tratta di test ma
la disciplina critica che tu
bisogno di avere in termini di assicurarsi
le interazioni di servizio continuano a funzionare è
retrocompatibilità e forward
compatibilità delle interfacce proprio così
la disciplina critica è che se il mio
Il servizio a sta parlando al servizio B
il servizio B dovrebbe essere in grado di lavorare per essere
in grado di modificare se stesso e distribuire
indipendentemente ma funziona solo se il
signore se le distribuzioni che servono B
non rompe l’interfaccia che sono
aspettandomi, ecco tutto ciò che sai
questo è quasi il punto zero che è
prima del test ha senso cosa
sto parlando di
Va bene c’è stato un sacco di parlare
design basato sul dominio in relazione a
i micro servizi sono quel qualcosa che hai
usato te stesso o è qualcosa che tu
considerare quando si progettano i micro servizi
sì, penso che il design guidato dal dominio sia
Super potente in micro servizi non lo faccio
penso che non penso sia un
requisito ma ma Eric Evans si avvicina
in particolare per il contesto limitato è un
davvero meraviglioso modo di pensare
è un meraviglioso tipo di architettura
disciplina e filosofia architettonica
da applicare ai servizi quindi penso
la progettazione guidata dal dominio funziona molto bene
con i servizi di micro è
un requisito che non penso ma è così
super potente e se sei già un
fan di ciò dovresti fare i microservizi
essere molto più facile per la domanda così finale
è in relazione a distribuito
transazioni in modo da strappare un paio di
componenti dalla tua applicazione e
allora ti rendi conto che abbiamo davvero bisogno di un
la transazione attraverso questo è già quella
troppo tardi o puoi usare qualcosa del genere
transazioni distribuite e ci sono
qualsiasi buon strumento per questo
Sì, certo, questo è un discorso
se stesso, ovviamente, se hai strappato
qualcosa fuori e poi decidere di farlo
transazione bene che è troppo tardi ma
ma si sta pensando
chiunque sia un interlocutore come te
pensandoci prima del tempo, quindi lo sono
certo che non aspetteresti fino a quel momento
capisci che è quello che è un
sfida perché non appena non appena
avete, non appena si è dividere la
persistenza di una cosa tra due due
database per esempio le transazioni
diventare sfida una sfida distribuita
transazioni davvero non lo faccio davvero
come per ragioni che sono felice di parlare
offline ci sono serie disponibilità
e il collo di bottiglia della scalabilità ma tu
può fare tecniche intorno alla riconciliazione
dei cambiamenti che accadono
che, fondamentalmente, deve in modo asincrono
introdurre la coerenza tipo di dopo
il fatto e sono felice di parlare con
persone dopo perché c’è una sorta di
molto più complessità di quanto io sia in grado di fare
fare in una frase ma darò il
rapido esempio di quando sono le banche
fare transazioni tra banche come
non fanno transazioni distribuite
proprio quando Deutsche Bank e Bank of
L’America sta facendo un commercio di valuta
non è una transazione distribuita
è qualcosa in cui loro lo fanno
transazioni durante il giorno di negoziazione e
poi si riconciliano di notte lo fa
ha senso che ordinano loro inviano ciascuno
altri file che ho visto questi 999.999
transazioni oh vedo che ho visto questi 100
milioni di transazioni e loro e loro
conciliare quindi è uno dei tanti
approcci che si possono prendere per ottenere
ottenendo gli stessi effetti di coerenza
delle transazioni mentre allo stesso tempo
avendo due componenti indipendenti quello
che non sono legati alle transazioni , oh
amico che è stato utile
Grazie Randy grazie

Please follow and like us: