Press "Enter" to skip to content

GOTO 2015 • From Homogeneous Monolith to Heterogeneous Microservices Architecture • Chad Fowler


quindi il mio lavoro è l’eutanasia dei sistemi ER e
eutanasia ER è una persona che va a
esseri viventi che sono malati e uccidono
per compassione ho fatto questo
per tutta la mia carriera dal sistema al
sistema andando a varie aziende
trovare questi sistemi malati e malati
a volte lentamente a volte rapidamente ma
speriamo che umanamente li faccia uscire
la loro miseria e metterli fuori dal
miseria delle persone che stanno avendo
mantenerli e io odio questo lavoro che odio
esso
Ho scritto questo libro chiamato l’appassionato
programmatore che tratta dell’essere
appassionato della tua carriera ma io
davvero odio la mia carriera è terribile ho
passare tutto il mio tempo a distruggere il duro
lavoro di altre persone a volte di me stesso
è davvero deprimente quindi spero
un giorno smetterò di farlo e il mio discorso
non si tratta di micro servizi o
tutte quelle parole divertenti che hai visto su
titolo scorrevole il mio discorso riguarda il tentativo
durante la mia carriera per imparare a costruire sistemi
quello può sopravvivere e forse sopravvivermi
ed è quello che sto andando parlare su I
spero e lo farò tramite un reale
storia del mondo quindi attualmente lavoro per a
società che costruisce un’applicazione
chiamato Wunderlist
Vivo in Germania e la compagnia è
chiamato Zacks Wunderkind er è una cosa da fare
elenca l’ applicazione così quando sono uscito
lì e ho iniziato a lavorare su questo
cosa amici miei tutti i tipi di pensiero
è una specie di sciocco che stai costruendo un
l’elenco delle cose da fare non è quello
ciao mondo delle applicazioni Internet così
probabilmente hai già creato una lista di cose da fare
o almeno ha funzionato molto velocemente
attraverso un tutorial in cui qualcuno ha mostrato
come costruire una lista di cose da fare e alcuni
Ho una tecnologia in più
modo interessante per parlare di cosa
la lista delle meraviglie è una cosa da fare
elenco ma questa è una nuova lista seduta su
parte superiore di un multiplo multiutente multi-utente
master mobile replicato in tempo reale
sistema di database quindi se microservizio
non era abbastanza degno per te allora
la descrizione dell’elenco delle meraviglie dovrebbe essere
ronzio abbastanza per te ma davvero
è che in una certa misura
questa è una glorificazione di
Certo, ma è un problema piuttosto difficile noi
avere milioni di utenti attivi molto
abbiamo un’applicazione popolare
client nativi praticamente su qualsiasi
piattaforma che ti piacerebbe correre
qualcosa come questo ed è molto
popolare abbiamo un sistema di sincronizzazione
è una specie di dominio agnostico, ma noi
capita di essere in esecuzione la gestione del progetto
e fare cose del genere su di esso così questo è
cosa costruiamo ora a circa due e mezzo
anni fa ho parlato con il team il primo
volta mi hanno portato a Berlino e
loro mi stavano mostrando molto orgogliosamente
nuova versione di Wunderlist che erano
lavorando su Wunderlist – così hanno fatto
costruito uno Wunderlist che è stato costruito da
i fondatori sono molto simili al primo
prototipo di qualcosa di sorprendentemente
la gente ama questo è stato effettivamente costruito
in titanio se lo sai
Appcelerator titanium quindi era uno di
quelle cose multipiattaforma in cui tu
costruisci un HTML e compili per iOS e
Android, ecc. Ecc. E ai loro
sorpresa è diventato molto molto popolare e
parte di esso è perché hanno fatto davvero un
ottimo lavoro di progettazione e hanno fatto a
ottimo lavoro di marketing poi hanno costruito
questa visione più grande di questa cosa chiamata
kit meraviglia che era questo enorme progetto
applicazione di gestione che completamente
fallito quasi distrutto la compagnia e
lo gettarono via
così quando li ho incontrati erano quasi
fatto con la loro bella riscrittura di
Wunderlist – che stavano svelando a
il mondo e hanno fatto un ottimo lavoro
marketing ancora così il 18 dicembre 2012
Avevo già firmato il contratto
unisciti alla compagnia e loro eccitati
pubblicato il loro post sul blog e hanno allineato
stampa hanno avuto caratteristiche globali e
tutti gli app store a cui sono fantastici
facendo questa roba a chiunque lavorasse
in azienda al momento non lo farò mai
dimentica il 18 dicembre come data perché
probabilmente era il peggior giorno di nessuno dei due
le loro carriere era quasi il peggiore
giorno del mio e non ho nemmeno lavorato lì
eppure è così che è apparso il 18 dicembre
come se qualcuno di voi usasse New Relic per caso
quindi per quelli che non lo fanno non va bene
probabilmente puoi dire che il rosso è una specie
di universalmente diffamato come un colore
non vuoi vedere su un grafico
In realtà dal primo keynote ho ottenuto un
vista più semplificata di questa immagine e
sembrava così questo è fondamentalmente
esattamente quello che è successo nel database
in fiamme è stato un gran casino e cosa loro
aveva creato e questo era prima che ho ottenuto
lì quindi non è colpa mia in realtà io
ha detto loro che sembrava buono quindi è sorta di
è colpa mia ma ne hanno creato uno grande
applicazione monolitica seduta sopra
un database monolitico che è in realtà
abbastanza grande database dato quante
gli utenti attivi stavano usando il prodotto
già e quanti dati erano
creando nel prodotto e lo hanno fatto
tutto in un linguaggio back-end così grande
cosa monolitica e questa è una specie di
storia familiare ora questo era su Rails così
abbiamo anche una parola per questo nel
industria ora monorotaia penso che il
Le persone di Twitter hanno creato questa parola loro
avevano creato una monorotaia avevano un
protocollo di sincronizzazione che avevano
creato che non ha funzionato davvero
ha funzionato tranne alcuni casi limite , ma
quando hai a che fare con questo livello di
la concorrenza è praticamente ininterrotta
casi limite così stavano facendo un grande
lavoro di TDD ma alla fine ci è voluto
15 minuti per eseguire la suite di test e
ogni volta che cambi qualcosa o
il fuso orario cambierebbe o tutti i tipi
di problemi si verificherebbe la suite di test
si spezzerebbe dappertutto così
sembrava così ci sarebbe voluto per sempre
finiresti per sentirti frustrato di più
nel tempo ci sono più rosse infrante
cuori nella suite di test questo in realtà
è quello che sembrano a proposito se
stai usando roba Ruby c’è un plugin
per r-spec che stampa queste bellissime
cuori emoji quindi smetti di mantenere
loro per un po ‘perché non puoi correre
loro è terribile e la suite di test
diventa peggio di inutile e io
ricordo che il 18 dicembre ero a
Washington DC al momento e io ero su
HipChat con loro perché il gioco non ha funzionato
esiste quindi sai che non lo sono
non cool per aver detto che ero su HipChat
HipChat con loro hanno lanciato
tutto è andato giù come gli investitori
mi ha detto se la nuova versione funziona ancora
entro due secondi hai fatto di meglio
perché è andato davvero giù così presto
hanno lanciato e ricordo di aver aiutato
loro e dicendo come aiutarli e
dicendo bene hai provato a metterne un po ‘
la memorizzazione nella cache in modo che è quello che hanno speso il
il resto di quel giorno facendo ciò ha permesso loro
alla fine dopo circa una settimana essere in grado
stare sveglio ma indovina quale fosse il cache
invalido quindi sai che mi dispiace per loro
per quello ma una delle prime cose che io
quando sono entrato, ovviamente, è stato rimosso
tutto il codice di cache perché di solito
che accelera le applicazioni che non conosco
se hai provato anche quello e poi
quando sono arrivato , erano circa due mesi
dopo che hanno lanciato hanno avuto una settimana di
tempi di inattività continui e poi hanno avuto
due mesi a malapena in cui il
il tempo di attività andava piano su ogni tipo
settimana e alla fine arrivarono dove
purché essi non toccare nulla che
andrebbe bene e se si toccasse
qualcosa poi potrebbe andare in pezzi
e davvero come avrei dovuto essere CTO
di questa compagnia, ma mi è stato detto dal
CEO la prima mattina è qui
stai seduto è la stanza in cui il
le persone di back-end sono e questo è tutto
lo farai e quello fu l’unico
cosa che sapevo, quindi, entra in questo
stanza e vedi cosa puoi fare accadere
e io vado nella stanza e tutti
sembra proprio oh dio cosa sta per succedere
capita così erano completamente terrorizzati
di essere terrorizzato è probabilmente il peggiore
cosa che si può sperimentare in un lavoro che
Immagino tranne che per essere ucciso o
qualcosa ma tu lo sai ma lo erano
completamente terrorizzato quindi la cosa che
avevano davvero paura di ottenere
di nuovo in quel periodo in cui si trovavano
precedentemente dove erano giù senza sosta
perché quello che avevano fatto era la schiena
squadra end aveva creato qualcosa che
non avrebbe funzionato le squadre clienti
in realtà hanno creato dei bellissimi clienti
Erano così orgogliosi di loro che tutti se ne erano andati
in questa modalità di crunch pazzo da ottenere
ha fatto e il team di back-end aveva davvero
ha fallito tutti perché non importa come
buono il codice cliente è in una certa misura
non funzionerà se il backend non lo è
lavoro
quindi avevano davvero fallito tutti loro
mi vergognavo se si sentivano terrorizzati
non volevo tornare a quello dove
erano così hanno pensato come quello che è
succederà che questo tizio entrerà
lui dovrebbe essere un esperto di rubini quindi
lui sta per applicare
Rubi magic e sarà fantastico e
la prima cosa che ho fatto è che ho le chiavi
al sistema e avevano un numero di
server in esecuzione e ho appena iniziato
spegnendoli uno alla volta e
mi stanno guardando come se non lo fosse
quello che mi aspettavo e poi si è schiantato
Certo, così il mio primo giorno ho schiantato il
sistema completamente inutilizzabile e come una squadra
abbiamo passato alcune ore a provare a farlo
lavoro di nuovo e sono sicuro che lo fossero
pensando bene, questo è stato un errore
queste persone Ruby sono pazze, non lo so
perché abbiamo assunto questo ragazzo ma ce l’ho fatta
meglio perché sono venuto il giorno dopo
e l’ho fatto di nuovo e il bello
cosa circa il prossimo giorno è che abbiamo avuto solo
trascorso il giorno precedente a risolvere questi
problemi e così il giorno dopo ci sono voluti un
po ‘meno tempo e ho fatto questo
ogni giorno per circa due settimane siamo caduti
il sistema più e più volte
perché in realtà faceva schifo comunque giusto
ma volevo che sentissero che c’era un
temo di averlo toccato
cosa di cambiare questa cosa quello che sei
paura di è ciò che potrebbe accadere così che cosa
fatto è che li ho messi nella situazione
quello non è successo più niente paura, non di più
temere più tu sei solo un po ‘
come se fossi già fisicamente
male non c’è niente di cui avere paura adesso
sai che non è finita qui con
crashing del sistema che sarebbe divertente
storia sai, grazie
abbiamo finito, ovviamente, abbiamo provato a pulire
questa cosa bene hanno creato questo
monolite e ho detto che è un’app to-do e
probabilmente stai pensando bene che deve
essere davvero semplice, ovviamente no
i programmatori lo hanno reso quindi non è semplice
affatto ma anche tu sai che niente è
davvero così semplice come sembra tutto
i programmatori guardano un problema e
semplifichiamo e penso bene si
può rendere ciò facile, è solo un
due ore di lavoro, ma avevano incontrato
la complessità e stavano facendo carina
cose complicate sai che erano
dovendo fare la condivisione tra diversi
come una sorta di diverse costellazioni di
persone che condividono liste diverse di cose
e ricevere notifiche e provare a
fallo in modo ottimizzato e in
processo perché è Ruby che sono stati in grado
per creare tutto questo bellissimo magico
accoppiamento in modo che non potessi davvero
dire cosa stava succedendo sembrava semplice
ma non era logico essere solo seppellito
astrazioni e non c’è proprio modo di
scopri dove è tutto
e come ho detto loro avevano creato il loro
ambiente di paura incertezza e
dubbio questa parola FUD in realtà non è così
popolare come quando Microsoft era il cattivo
ragazzi e questo è interessante ma la maggior parte
sei stato abbastanza grande per ricordarlo ma
quindi sto parlando del diluvio che tu
crea per te stesso comunque questo è giusto
l’inizio della storia, quindi voglio
Esegui il backup ora alcuni anni sono stato
parlando di questa cosa per un po ‘e
questo è da questo è la diapositiva di apertura
da una nota chiave che ho dato un paio di
volte l’anno scorso ma specificamente a
I giorni di Scala penso sia quando metto questo
Ho detto che sono un software
eutanasia nel 2006, all’inizio
del 2006 ho scritto questa serie di articoli
che è arrivato sulla prima pagina di Digg che
era in realtà un grosso problema, allora chiamato
la grande riscrittura e molte persone hanno
l’ho citato da allora e si tratta del perché farlo
la grande riscrittura del software è una cattiva idea
e quello che stavo davvero facendo era giusto
soffia fuori vapore ha già nel 2006 I
avevo speso quello che pensavo fosse un intero
carriera facendo questo sistema di eutanizzazione
eutanasia hai pensato sì
l’eutanasia è abbastanza buona ma io
voleva trovare un modo per costruire un sistema
che esisterebbe sono stanco di questo come me
detto e così come un ex musicista ho pensato
su questa parola ero in realtà nel
auto con cory haines per caso ottenere
perso sulla via di casa da boulder a
Longmont che se sei del Colorado
sai che non è effettivamente possibile ma
in qualche modo l’abbiamo fatto e stavo parlando
su un discorso imminente che dovevo fare
e penso che Cory abbia avuto questa idea
Non lo so, non so come
è successo ma stavamo parlando del perché
è legalmente una parolaccia nel nostro settore
perché nell’industria musicale è un
buona parola ma nel nostro settore significa
qualcosa del genere penso che ci siano
due definizioni e una conseguenza
dopo come tipo davvero brutto
roba legacy non è una parola che la maggior parte di
ti associ a qualcosa di buono se io
offrirti un lavoro e dico come il titolo
è un ingegnere del software legacy che non sei
molto impressionato
tuttavia nella musica, nell’arte e nella letteratura
e praticamente
qualsiasi altra cosa tu possa pensare alla parola
l’eredità ha una connotazione positiva e
significa che ti stai lasciando alle spalle
qualcosa
così come eredità ereditaria
stai lasciando qualcosa per il futuro
generazioni ma in qualche modo l’abbiamo distorto
in giro nel nostro settore così come Beethoven
lasciato un’eredità è ancora un bestseller
è incredibile non lo facciamo in
software anche se in realtà nel software come
abbiamo visto in keynote di questa mattina questo è
una bella visualizzazione del
Rapporto Standish Kaos anche se ti ho fatto
non vedere i numeri assoluti perché
non hanno importanza, ma questo sta mostrando
hai successo sfidato e fallito
progetti software e penso che abbiamo sentito
la definizione questa mattina il verde
quelli che sono di successo in modo che tutti i tipi di
so cosa significa, anche se lo farei
scommetto che non hanno avuto quel successo
quelli sfidati sono significativamente
nel tempo o oltre il budget, quindi per me è così
non è davvero un successo, è più o meno così
un fallimento e poi quelli falliti
in realtà mai lanciato, quindi guarda quanto male
siamo e questo attraversa il 2009 ma è così
non importa sembra così
per sempre e probabilmente sarà simile
questo per sempre non lo so posso probabilmente
fai questo discorso per il resto della mia vita
è deprimente ma ah questo è quello che è
sembra che facciamo davvero schifo tutto
di noi me e te siamo davvero veramente schifo
siamo davvero pessimi nel fornire software
progetti e poi quando lo facciamo consegniamo
merda forse è davvero una merda forse è
non lo so
ma il software aziendale è distribuito
l’aspettativa di vita media è cinque
anni generati scientificamente
da me quando digito queste parole nel
Scivola ma sembra giusto per me e per quello
probabilmente ti sembra abbastanza giusto per te
costruire software e poi si sente dopo
lasci quella compagnia a qualcuno
c’è qualche progetto per riscriverlo e
buttalo via e pensi ovviamente
c’era e tu ripensi a tutti
le notti che hai trascorso a stipare
farlo fare entro una scadenza e quanto
ha succhiato e i sacrifici che hai fatto
dalla tua vita personale
ed è davvero deprimente così a malapena
mai lanciato un progetto di successo quando
lo fai è morto dopo cinque anni e
quindi persone come Joel Spolsky lo dicono
ci vogliono dieci anni per fare un buon software
quindi il tuo software è morto e metà di quello
il tempo è un disastro cosa stai andando
fare come si crea software legacy
come si crea un legacy e un software
questo è quello che ho pensato
per un bel po ‘di tempo molto molto profondamente
così ho parlato con le mie amiche Mike penne
Mike feathers ha scritto un libro intitolato
lavorare efficacemente con codice legacy e
fino a poco tempo fa pensavo che fosse l’unico
libro del software che ho potuto trovare che aveva
la parola legacy nel titolo perché
la maggior parte delle persone è abbastanza intelligente da conoscerti
non dovrebbe scrivere un libro sul software
e metti la parola legacy nel titolo ma
ha fatto e così ho parlato con lui a questo proposito
e gli ho chiesto come fai a creare
codice legacy e ha detto bene lo sai
accoppiamento stretto e non comprensione
requisiti aziendali e utilizzo di frangia
le tecnologie è come il tuo amico
deprimendomi, sto parlando di come
crei un’eredità dicevano oh okay
forse dovresti leggere questa cosa con il cazzo
Gabriel è un pazzo Gabriel se non lo fai
conoscilo ha scritto un sacco di davvero
roba influente incluso come comune
sistema di oggetti lisp e un mucchio di carte
vale la pena leggerlo come peggio
meglio, ma ha scritto questa cosa chiamata
design al di là delle capacità umane ed è
in realtà una presentazione che ha dato
che ha trasformato in un giornale ed è
sulla creazione di software oltre che cosa
gli esseri umani potrebbero farlo sta parlando
come un software di linea multi-trilione
progetti dove probabilmente tutti noi
combinato hanno creato meno di tre
miliardi di linee di codice già, ma come
come si dovrebbe creare un multi trilioni di
progetto software di linea come un modo di
pensando in modo diverso al design e
una delle cose che dice qui è quella
i sistemi biologici sono molto più grandi
di qualunque cosa sia coerente la gente
costruito e dice molto di veramente
cose interessanti su biologico
sistemi come lui parla di cellulare
le cellule di rigenerazione vanno male
e le cellule muoiono e vengono rimpiazzate
e abbiamo sentito tutto questo per tutta la vita
proprio come io non sono lo stesso fisico
essendo che io ero dieci anni fa o quando io
sono nato
Sono molto più grande di quando ero
nato ad esempio come almeno il 50%
più grande quando sono nato che è quello
anche scientifico e in realtà se piace se
Penso a me dovresti vedere cosa
Ho mangiato oggi non dovrei essere vivo
non mantenere questo sistema biologico
anche i sistemi hanno una cosa chiamata
l’omeostasi è una cosa come un processo
qualunque cosa io non sia un ragazzo della scienza II
ma l’omeostasi per semplificare eccessivamente è a
modo in cui un sistema biologico può
autoregolarsi così una parte del sistema
si sporge verso un certo tipo di comportamento
sarebbe male per il sistema in generale
ma poi un’altra parte del sistema
regola quello e il cellulare
roba di rigenerazione è una specie di parte di
quella stessa idea quindi cosa in un software
il sistema è una cella perché sembra
nel sistema che sono io va bene se
le mie cellule vengono sostituite e in qualche modo posso
continua a dare questo discorso e
di nuovo sono ancora io sono il sistema
ma ciò che nel software è una cella e cosa
nel software è un sistema e quando lo fai
costruire un sistema contro una cellula come si fa
sai che stai costruendo quello giusto questo
è quello che ho iniziato a pensare molto su
e se potessi farlo bene potrei
costruire un sistema che possa sopravvivermi
senza ovviamente solo prematuramente
finendo la mia vita questo è pericoloso
obiettivo di carriera capisco così indietro
per tornare alla cosa Wunderlist
Eccomi, sto trascorrendo lunghe notti
e nei fine settimana cercando di mantenere questo malessere
sistema vivo perché il mio desiderio è non farlo
uccidere altri sistemi intendo già per
sei anni che ho desiderato non uccidere
un altro sistema
ma poi arriva il giorno in cui abbiamo una tavola
incontro e diciamo al consiglio sì noi
stanno andando a dover uccidere il sistema
dovremo sostituirlo ma questo
tempo andrà bene e ricordati
questa è la terza volta che stiamo facendo
Wunderlist e la quarta volta che siamo
facendo un sistema completamente nuovo e uno dei
membri del consiglio di amministrazione che è uno dei nostri
investitori in cui il business vc-backed è così
è un membro del consiglio di amministrazione che sai davvero
ha un sacco di potere che potresti sentire
era una chiamata e lo si poteva sentire come me
non so sputare o qualcosa che non faccio
So che sembrava quasi impossibile
respirare e poi quando ha iniziato
parlando ha detto queste parole per favore dire
io non ho intenzione di sentirti dire questo
devi farlo di nuovo ma potresti
sento solo l’odio e non essere
odio per noi ma l’odio per a
situazione e, ho detto, lo prometto
non riscriveremo mai più il sistema
e se mi senti dire che lo siamo
per farlo puoi licenziarmi da questo
lavoro puoi ridicolizzare pubblicamente me e me
lascerà l’industria del software e
è grazie che è la fine del mio
carriera ma sì il sistema no
sopravvivere abbiamo dovuto ucciderlo così come
iniziare questo processo come posso creare a
nuovo sistema che può sopravvivere così che io sia
non pubblicamente ridicolizzato e devo farlo
lasciare il settore in modo ho intenzione di parlare
su alcune delle cose che abbiamo fatto
iniziando con una specie di principi simili se tu
voglio chiamarlo che è davvero stravagante
suona ma in realtà è proprio come
idee casuali che avevo raccolto sopra
volta che ho pensato suonava intelligente che
abbiamo provato e poi vi parlerò di
più concretamente con cosa siamo finiti
ma abbiamo creato qualcosa di strano
Penso che sia così il primo adesso
elenco che non stiamo usando veramente Microsoft
Visual Basic esclusivamente no, non lo siamo
davvero usando Microsoft Visual Basic ma
la prima regola che ho deciso di venire
con era che il sistema dovrebbe
eterogeneo di default non come è
va bene essere eterogenei come questo
incoraggiando attivamente che scriviamo
questa cosa in un mucchio di diverso
linguaggi di programmazione e perché non è vero
fallo bene, una ragione è che non volevo
questo strano accoppiamento che accade quando
hai un linguaggio come Ruby che di
il modo in cui amo non mi sta a cuore
l’ho usato per molti anni ma tu hai un
linguaggio come Ruby dove puoi
raggiungere il coraggio di tutto e fare
tutto quello che vuoi come non riesci a trovare
fuori non puoi non avere confini
una situazione del genere e che è davvero
per questo che amo di Ruby, ma non volevo
costruire il sistema in quel modo così ho voluto
creare un ambiente siamo stretti
accoppiare almeno quel tipo di tight
l’accoppiamento sarebbe effettivamente così difficile da fare
che dovresti davvero uscire dal tuo
modo di farlo in modo che abbiamo JVM
roba che abbiamo scuola superiore abbiamo nodo
abbiamo ruggine ora siamo andati più o meno
qualsiasi cosa tu possa pensare a ciò che potresti
voglio provare se sei un nerd
programmatore probabilmente ce l’abbiamo in esecuzione
nel nostro sistema e penso che sia ok
l’altra ragione che volevo fare
questa cosa è eterogenea per impostazione predefinita
davvero solo ho una carriera piena di
in piedi davanti al distributore di acqua per un caffè
creatore o qualunque cosa ascolti e
partecipando a reclami sul perché io
non posso usare questa tecnologia al lavoro
perché il mio capo dice che non posso o lo siamo
legato a una vecchia versione di Java scadente
o Tomcat o puntoni indietro poi o
qualunque cosa fosse e io voglio fare
qualcosa di nuovo e se trovo un lavoro dove
mi lasciano fare la nuova cosa interessante che sono
andrò a farlo e così ho voluto
creare un ambiente dove la mia gente
possedere le scelte tecnologiche e può fare
letteralmente tutto ciò che vogliono e questo è
quello che abbiamo la regola sei tu se lo sei
sulla mia squadra non devi chiedermelo
qualsiasi linguaggio di programmazione qualsiasi cosa tu
voglio provare puoi farlo finchè
segue alcune regole è una delle regole
il codice per una cosa nuova ma principalmente
questa è la regola non deve essere più grande
di questo in modo da avere a guardarmi per
questo è così grande che il codice deve essere
questo grande o piccolo ho sempre il mio
le dita in alto e io mai
davvero misurare il loro codice con il mio
dita ma in modo direzionale tipo di
imposta l’idea che voglio il codice che è così
piccola che chiunque può venire avanti e
leggi il codice Haskell anche se lo sono
terrorizzato da Haskell che sembra
tutti nella mia squadra sono esclusi me e
l’altro ragazzo che era al Haskell
servizio ma chiunque può capirlo
perché è così piccolo e loro non lo sono
stupido e Haskell non è difficile da leggere
Haskell è facile, tutti dovrebbero farlo a
un sacco di idioti da fare a Haskell chiunque
potrebbe leggerlo e anche se non possono ottenere
per compilare, possono riscriverlo
se c’è un problema non è un grosso problema
buttalo via buttare via il codice che è
l’altra cosa è questa l’idea
rigenerazione cellulare quando siamo i primi
ho iniziato a costruire il sistema che ho detto
so che dovremo riscriverlo noi
conoscere dovremo aggiornare
quadri sarà terrificante quando
lo facciamo anche se rimaniamo con Ruby
sarà difficile perché Ruby andrà a
versione 2 e saremo sotto pressione
per andare alla versione 2 ad un certo punto
le biblioteche cominceranno a funzionare bla bla
blah quindi prendiamoci l’ abitudine
buttare via il codice e se è così grande
non importa buttare questo piccolo
pezzo distanza quindi è veramente facile da
aggiornamento ed è davvero facile da pensare
su cose nuove e cambia tutto
altrimenti questo è stato un obiettivo attivo
ogni volta che qualcuno parla di scrivere
qualcosa che esiste già e funziona
ok e una nuova lingua
Dico eccellente proviamo nel peggiore dei casi
passeranno un pomeriggio
il divertimento deciso non ha funzionato, corre e testa
fatto il lavoro, qualunque sia, buttarlo via
il caso migliore è meglio della cosa
che avevamo prima e buttiamo il vecchio
cosa lontana
perfetto quindi il codice dovrebbe sempre essere
cambiando all’interno del sistema e inizia
per forzare già questa idea che il
il sistema è una cosa e le cellule sono a
cosa e anche noi ci spostiamo dal
idea di database monolitico a un gruppo di
piccoli database questo è in realtà un
diagramma della nostra topologia di database è
molto esattamente creato e Keynote dove
tieni premuto il comando e inizi appena
catturato roba in movimento, ma noi davvero
avere su quel molti database giusto
ora ne avevamo uno solo per a
semplice da fare
abbiamo questo molti database e tu
potrebbe pensare che questo crea complessità ma
in realtà rende le cose molto più semplici
perché abbiamo preso quello che era veramente grande
problema difficile per noi e l’ abbiamo trasformato
in un mucchio di piccoli problemi che sono
facile da risolvere e la mia speranza è quella
alla fine ne avremo milioni
database perché penso a ogni utente
potrebbe avere un database o ogni attività in
il sistema che non conosco c’è probabilmente
qualcosa che potremmo fare e tu sai
spero che non debba mai andare
attraverso i test di Jepson ma funziona
abbastanza bene finora, quindi quello che abbiamo fatto è stato noi
avere un sacco di piccoli servizi e
i servizi minuscoli si siedono in cima al piccolo
database come il dr. Disse Parsons
ieri è comune in un micro servizio
architettura il servizio è di proprietà del
database e questa è una piccola istantanea
dal nostro sistema di gestione della configurazione
che abbiamo fatto in bash dove sono solo
contando il numero del servizio
configurazioni che abbiamo e c’erano
150 qualcosa di loro per il nostro semplice
poco da fare app in un determinato momento
ce ne sono alcuni di più ora e poi noi
anche mantenuto le richieste effettive o il
inviti di cose minuscole e sì noi
stanno usando crystal meth per fare questo
HTTP ma abbiamo alcuni modi per farlo
questo va bene una cosa che rende questo
meglio di quello che avevamo in precedenza e
tollerabile come un uomo sincrono
è davvero terrificante essere l’ultimo
keynote e ascoltare il ranty
keynote al mattino prima di te e
quindi sono seduti lì a guardarlo
ma funziona, prometto le richieste
loro stessi se sono piccoli sì no io sono
Non lo spiego nemmeno tu mi spaventi
troppo, ma non abbiamo usato per così abbiamo usato per
avere un sistema in cui abbiamo fatto questi grandi
richieste e abbiamo creato questa API batch
quella era la peggiore idea di sempre ma il
piano era come riduciamo il
overhead di connessione dal cellulare
clienti perché è costoso e
permetterà loro di fare un sacco di
richieste tramite singole richieste HTTP e
ottenere l’intera risposta batch così è
questa enorme cosa di blocco che era
sincrono che era terribile e cosa
abbiamo fatto in effetti in realtà abbiamo un
asso
Lo strato di Kronus in cima a questo, così puoi
smettetemi di giudicarmi ora aspettate fino a dopo ma
bene abbiamo fatto è cercato di creare minuscolo
Piccole piccole richieste e sì i clienti
in realtà li fanno ma in effetti è possibile
fai le cose in modo asincrono e tu no
avere questa grande cosa bloccante in corso così
di nuovo prende un grosso problema e si gira
in un mucchio di piccoli problemi e
poi risolverli uno alla volta e poi
per evitare le pile di cose di astrazione
noi non abbiamo favorito la riusabilità
per niente le biblioteche ce l’abbiamo fatta un paio
di volte e in realtà stiamo refactoring
loro fuori in servizi così fa male
prestazione sul piccolo certo ma
aiuta le prestazioni nel grande e it
aiuta la nostra capacità di essere produttivi
il grande quindi stiamo creando di più e
più servizi riutilizzabili e quando lo troviamo
costruendo noi stessi una biblioteca che noi
condividere tra un sacco di diversi
servizi o app che pensiamo ci sia
opportunità e ha senso
rendi questo un servizio invece di una biblioteca
che ci mescoliamo ovunque, ok così bene
alcune cose più orientate all’implementazione ma
ancora in questo tipo di cellulare
rigenerazione
vena tutti i nodi che distribuiamo sono
monouso
il che significa che non lo farai mai realmente
preoccupato per il tempo di attività in effetti il
solo la preoccupazione che ho di uptime di un nodo è
è passato troppo tempo e non posso fidarmi
questo e un nodo è un server in questo caso
quindi ci sembra di essere su AWS che sembra
avere il set di funzionalità più avanzato
disponibile per fare questo genere di cose
ma funzionerebbe su altri cloud
fornitori per qualsiasi nuova implementazione di
il nostro software generiamo nuove immagini noi
non fare ancora la finestra mobile ma generiamo nuovi
immagini e noi li cloniamo li distribuiamo
fuori e poi distruggi tutti quelli vecchi così
non aggiorniamo mai il software su esistenti
nodi in modo da non avere quella cosa dove
come ricordo negli anni ’90 ero un
amministratore di sistema e vorrei fare
uptime sulla scatola Sole e spetterebbe
per come due anni
e io ero stupito, orgoglioso e inorridito
perché abbiamo cambiato così tante cose
non c’era proprio modo di poter mai
mietitrice
così nel tempo le persone hanno costruito cose del genere
chef in modo da poter lasciare vivere un sistema
per molto tempo, ma avere un modo
presumibilmente per riprodurre il suo stato ma
quello non funziona davvero così nel nostro mondo
noi buttiamo via i server e con
che possiamo buttare via lo chef
complessità dello chef e questo è uno dei
le migliori cose che abbiamo fatto per noi stessi e
non è colpa degli chef è colpa sua
dove lo chef ha risolto un problema che noi
non devo più risolvere almeno in
la mia prospettiva limitata del mondo I
non voglio mai dover risolvere questo
problema di nuovo così sostituiamo lo chef con
originariamente un makefile e perché lo siamo
zoppo lo chiamavamo peso che è una meraviglia
fare perché tutto deve iniziare
con meraviglia della nostra compagnia è no
più un makefile perché quello era un
idea davvero stupida, ma è la fine
script che suona sempre meno
intelligente ma prometto che funzioni
Infatti l’autore di ansible pubblicato
qualcosa ieri dicendo questo
cosa di distribuzione immutabile questo è il
strada da fare e dal modo in cui dovresti
fare script bash per questo che era
gratificante quindi abbiamo creato la sveglia è solo
un set guidato da convenzioni di bash grips
questo ci permette di fornire questi nuovi
istanze e poi stenderle e
cosa cosa ho corso qui non puoi vedere
perché è troppo grande ma sto correndo
scia informazioni per il nostro servizio di file e tu
posso vedere varie cose per cui stiamo correndo
la caratteristica di attaccamento di file di meraviglia
elenco in quel momento e poi qui corro
sveglio descrivi ELB per l’icona che possiamo vedere
il server è in esecuzione per supportare iCal
integrazione e poi mi sveglio iCal in scala
a tre server e cambia il
numero di server da nove a tre I
penso che sia lì e quindi possiamo fare tutto
questa roba solo di solito ce n’è una
comando se hai anche bisogno di un comando per
sai che abbiamo troppo carico adesso
su un determinato servizio in modo che possiamo scalarla
su da 20 a 30 e gestire il carico che
tipo di cosa e poi abbiamo costruito a
semplice gancetto web così github
per ognuno dei nostri centocinquanta
più repository quando si uniscono
qualcosa da padroneggiare
va avanti e colpisce questa cosa che noi
chiamata sveglia ovviamente che inizia
costruendo le immagini per noi e poi noi
può ridimensionare con un cursore e sostituirli
e tutte queste cose così abbiamo costruito molto
investimento minimo e un sacco di soldi
sceneggiature e un piccolo schifoso Ruby Sinatra
app abbiamo costruito il nostro immutabile
sistema infrastrutturale in modo da entrare
alcuni dei dettagli di ciò che abbiamo creato
abbiamo questa architettura a più livelli
e probabilmente questo non sta per essere molto
ovvio soprattutto dove si dice inglese
e tedesco ma ti spiegherò cosa
significa praticamente ogni client Wunderlist
si connette a un servizio WebSocket che è
la cosa asincrona che ti stavo dicendo
circa e quindi abbiamo un proxy perché
abbiamo tutto ciò che conosci centinaia di
servizi dietro una cosa che devi avere
almeno un posto dove i clienti possono
parla con così abbiamo un proxy che abbiamo costruito
che è davvero come un nginx modificato
e poi abbiamo due livelli di riposo
servizi e questo parlerò un po ‘
un po ‘ perché penso che sia un
parte interessante e utile di questo
storia e poi scriviamo tutto
attraverso lo stesso adesso riutilizzabile
libreria software che è uno strato giusto
e poi per tutto ciò che spingiamo tutti
cambia quello che succede nel sistema in a
coda di messaggi e abbiamo effettivamente spingono
in due code di messaggi per ogni evenienza
questo è il modo di trattare degli hacker del nostro povero uomo
con il coniglio che non funziona, ad esempio ma
in realtà ha funzionato e quindi
Wunderlist che ho menzionato è in tempo reale
servizio di sincronizzazione e se tu
non l’ho provato è gratis così puoi farlo
provalo credo che rimarrai colpito se
Internet funziona come te
il tuo iPhone hai il tuo Mac
Client Windows qualunque sia la tua condivisione
qualcosa con qualcun altro
Pops subito in su come vogliamo che
mi sento come un telecomando, anche se
è tutto a riposo e c’è tutto
questa roba sta succedendo con asincrono
roba in sottofondo succede
praticamente istantaneamente e ciò accade
perché abbiamo un messaggio standardizzato
la coda per l’elaborazione di ogni cambiamento che
succede nel sistema quindi non abbiamo
per costruirlo ancora e ancora e ancora
di nuovo c’è solo una convenzione e
questo è ciò che appare nel diagramma di rete
piace
quindi ho detto che abbiamo questo tempo reale
strato che è
cosa abbiamo costruito in Scala con attori così
ogni cliente che si connette
ottiene effettivamente un WebSocket che ha un
attore in corsa come attore e modello Akka
che rappresenta la connessione dei client
che può quindi iscriversi al messaggio
fare la fila e poi abbiamo fatto qualcosa di simile
interessante qui e questo è il
sincrona contro cosa asincrona
dove eventualmente mi sono riscattato a
un po ‘anche se dal proxy tutti
la strada verso il basso attraverso tutto il resto
servizi ai database ovviamente lo è
solo HTTP sincrono il modo in cui il
i clienti fanno le loro richieste sono a capo
quale sarebbe normalmente una richiesta HTTP
in una busta Jason molto piccola e poi
li sputano semplicemente nello zoccolo
server il più velocemente possibile e ciascuno
ha un ID di richiesta che viene generato
che possono poi abbinare a
risposta al ritorno e poi il
socket server perché è akka scala
correndo in massiccio parallelo sul
parallelo sullo sfondo che colpisce tutti
di questi servizi sincroni
in modo asincrono e quindi lo streaming
restituisce ai clienti oltre il
WebSocket quindi se la catena e il
cose che si devono pensare sono
completamente sincrono da dove
dice proxy intelligente fino in fondo
penso sia grandioso perché per me è così
molto difficile pensare a cose
in modo asincrono localizziamo dove abbiamo
pensare alla parte asincrona
solo quel bit che è davvero giusto
facendo i join essenzialmente e poi così io
menzionato abbiamo un livello inglese e un
Strato tedesco e questo è importante
abbastanza da menzionare solo perché dice
un po ‘sui vantaggi di un
architettura come questa lo strato inglese
come lo chiamiamo è il materiale giusto sotto
il proxy intelligente e Smart è tra virgolette I
non parlerò del perché è così il
la ragione è chiamata livello inglese
tutti i servizi ci sono chiamati per il
Nome inglese della cosa che si farebbe
aspetto che si gestisca così nel nostro
sistema abbiamo liste abbiamo utenti compiti
appartenenze di quel genere di cose
questo è il nome di quei servizi nessuno
di quelli hanno qualsiasi connessione a un
database che gestiscono alcune autorizzazioni
logica aziendale ecc. e poi anche loro
gestire parlare con lo strato tedesco te
Conoscere lo strato tedesco è il tedesco
nome
così fuori grabbin per le attività che elencano per
elenca einstellung in per le impostazioni e
ora sto solo dimostrando che l’ ho fatto
ho imparato un po ‘di tedesco quelle cose sono
in realtà seduto sopra i dati
fonti direttamente stanno astrazione
via la fonte di dati che ci permette di
ho il mio sequel Postgres dynamodb Redis
ecc ecc come fonti di dati di dati al di sotto
queste cose senza nessun altro
cura e hanno accesso superutente
essenzialmente così sono piccoli
sono fondamentalmente come connettersi al
database stesso, ma avere una pausa
interfaccia invece di dati diretti
interfaccia di database qualunque cosa sarebbe
essere e, naturalmente, quello tedesco è il
superuser uno perché tedeschi nel nostro
la compagnia può fare qualsiasi cosa e il resto di
noi siamo bloccati con la cosa inglese e
poi come ho detto qualsiasi scrittura al sistema
WRI te va bene attraverso una scrittura comune
strato che si assicura e quello è a
livello software e quindi tutte le scritture
in realtà accade ancora in Ruby che è
una sfortunata conseguenza del codice
condivisione e condivisione del servizio
attraverso uno strato di scrittura che lo garantisce
vengono scritti nell’archivio del database
in un altro posto si ottengono le mutazioni
spruzzato a questo sistema comune che
li indirizza tutti verso i posti giusti e
questo è ciò che guida il nostro tempo reale
integrazioni ogni sorta di altre cose
quindi sentiremo ancora un po ‘
su quello in un minuto così ho scritto le rotaie
ricette come so che ho menzionato e l’ho fatto
rotaie per molto tempo e io non ci vado
per scusarsi per questo ma uno dei
cose per cui penso che le rotaie abbiano funzionato
la nostra industria certamente l’ha inventato
ma reso popolare a quel tempo la nozione
di convenzione sulla configurazione e
questo è uno dei più come un enorme passo
avanti a metà degli anni 2000 per ogni
tutti quelli che fanno lo sviluppo web almeno
quindi questa è una cosa che è stata
radicato in me nel giorno in cui noi
deciso che inizieremo questo
riscrivi quello degli altri sviluppatori
e sono andato a casa mia e ho scritto
qualcosa di simile, così abbiamo deciso
tutti i servizi stanno per essere il
stesso abbiamo messo i nomi dei servizi in un
schieramento
abbiamo letteralmente digitato il prompt di bash
questo comando che aveva un modello condiviso
quello ha generato appena tutte le cose
esattamente lo stesso quindi è stato scritto stupido
copia e incolla fondamentalmente ma di cosa si tratta
ci ha permesso di fare è anche se abbiamo un
centocinquanta ish servizi che non abbiamo
la complessità di 150 servizi ish noi
ho davvero un solo modo con cui parliamo
cose e hanno nomi diversi così
è abbastanza facile da gestire e uno di
l’altro degli unici posti che noi
abbiamo lasciato dove facciamo la condivisione del codice siamo noi
all’inizio ha costruito una libreria in Ruby perché
prototipiamo per tutto in Ruby
chiamato client API che è molto
nome generico che è solo un modo stupido
di avvolgere convenzionalmente come parli
per riposare servizi che ci danno un mucchio
dei benefici di una prestazione simile
monitoraggio e registrazione e tutto ciò
puoi cuocere e ogni volta che aggiungiamo un
nuova lingua che ho detto che ci penso
avere 15 back-end diversi
lingue ora ognuna di loro ora ha
un supporto di implementazione se lo è
necessario come possiamo costruirlo una volta per
la JVM quindi non abbiamo i mezzi
che quando vuoi parlare con un servizio
non hai bisogno di pensare a come tu
trovalo e quello che chiami cose e come
l’ aspetto degli URL è tutto fatto per te e
fa parte della magia che rende questo
cosa funziona ed è semplicemente stupida
roba semplice, naturalmente, abbiamo dovuto costruire
una sorta di cosa di risoluzione del servizio
e parlando di stupidi siamo inizialmente
iniziato con un file mole sì solo a
file di testo che verificheremo in a
repository e basta copiarlo su ogni
sistema come abbiamo schierato che era una specie di a
dolore nel culo così abbiamo cambiato con Jason
alla fine alla fine saremo generati automaticamente
il Jason ora siamo in console quale
in realtà solo Auto genera Jason
il server per noi ma avrai bisogno
qualcosa del genere se vai a uno di
questa architettura di micro-servizi
cosa e poi ecco uno dei
benefici quindi all’inizio di questo I
Stavo parlando di mostrarti il rosso
linee e il database in fiamme questo è
davvero dove stavamo andando sta pensando
torna ai giorni del monolite uno di
i maggiori problemi con il monolite
è quando c’è qualcosa di sbagliato in esso
è davvero difficile capire cosa sia
sbagliato a meno che tu non sia come un vero
esperto ed è un po ‘di lingua e
runtime in cui si hanno gli strumenti per entrare
i dettagli di esso e vedere cosa è
accadendo mentre Ruby PHP ecc non lo sono
buoni esempi di ciò nel nostro sistema è
molto facile è molto facile vedere dove
i punti caldi sono dove il problema è perché
tutto è così separato finché noi
misurare tutto così tornando indietro
anni se non hai letto questo è questo
Il post di Etsy su come misurare tutto ciò
misurare come il caffè è nel
caffettiere all’ufficio Etsy e così via
mostra su grafici in modo che possano ottenere
avvisi se è troppo basso
quando ero a LivingSocial eravamo
misurando metriche aziendali e noi
avere un sistema per misurare le aberrazioni
quindi potresti lanciare qualsiasi tipo di attività
metrica in questo sistema e potremmo
dire se era strano così anche se lì
non era un problema ovvio con il
sistema si otterrebbero avvisi quando le cose
erano strani e abbiamo preso questa idea
cuore qui e come solo un esempio questo
è uno screenshot di liberado e questo
è proprio quello che sembra la parada così io
sai che non dovresti avere diapositive nere
con i colori su di loro ma ho provato
per migliorarlo un esempio perché lo siamo
passando per AWS e tutto il resto
alimentato automaticamente in liberado e noi
avere un centinaio di servizi di ish quando
c’è un problema di prestazioni che c’è
letteralmente un cruscotto che non abbiamo fatto
anche fare in modo che si presenti in
liberado
dove è possibile passare il mouse sopra i servizi
e vedi ogni singolo bilanciatore del carico
e quali sono le caratteristiche delle prestazioni
delle richieste che attraversano quel carico
bilanciamento sono e basta mouse sopra e
se hai qualche tipo di problema tu
mouse sopra e puoi vedere come oh
sono compiti ma Alf Govan non è incasinato
e fuori GABA significa attività in tedesco così
cosa ci dice che c’è qualcosa
sbagliato a livello di compiti che non è spento
servizio di cabina e quindi probabilmente no
il database delle attività che è fuori goblin
avvolgimento ma piuttosto è qualcosa
forse siamo appena sopra la capacità
lì e potremmo andare a una scia e
farlo scorrere e di solito quello in realtà
risolve il problema e abbiamo ovviamente
automatico che roba a questo punto anche
ora che abbiamo tutte queste cose noi
avere tutti questi servizi separati
normalmente avrei una diapositiva
che dice che i test stanno testando come un design
odorare e ho pensato di metterlo dentro
oggi ma voglio soffermarmi troppo
ma preferiamo il monitoraggio rispetto ai test così
il monitoraggio è molto molto importante
e una parte radicata del nostro processo
una delle regole per qualsiasi servizio noi
creare è quando si crea il servizio
bisogna mettere in realtà tutte le metriche
nel generare la dashboard e inserirla
il readme prima di poterlo avviare così
quando vai al codice e github per
il servizio è possibile collegare direttamente al
cruscotto che ha tutto l’importante
cose che il servizio dovrebbe fare
avvolgere che ci permette di fare canarino in a
schieramenti stile coalmine che significa
possiamo implementarne solo alcuni
versione diversa di un servizio e guardare
tutte le nostre metriche e vediamo se c’è un
problema quindi questo è un caso in cui
ovviamente la performance è stata negativa
influenzato da uno spiegamento e in effetti io
penso che questo è che sto imbrogliando qui questo è
uno screenshot di uno dei miei primi giorni a
l’ ufficio quando stavo schiantando il
sistema questo è quello che sembrava così così
era ok e poi ho fatto qualcosa e basta
è stato terribile quattro ore dopo
non ti fa venir voglia di assumermi il
Ho parlato di questo così come noi
emigrati eravamo in questo grande enorme
cosa e ovviamente avremmo ucciso
la grande cosa enorme ma abbiamo avuto il
lusso per prendersi un po ‘di tempo
fallo così, la prima cosa che abbiamo fatto è stata noi
ha iniziato a rimuovere tutti i join dal
database perché abbiamo avuto un enorme
database e, naturalmente, abbiamo pensato che
potremmo fare queste grandi domande e quelle
sarebbe più efficiente del fare
domande separate, naturalmente
sbagliato abbiamo rimosso tutti noi
separati i database in modo che noi
avrebbe problemi più piccoli da affrontare
ma abbiamo fatto tutto nel vecchio sistema e
Penso che questa sia una parte importante di qualsiasi
riscrivi che hai sempre voglia di farlo se
devi fare una riscrittura che ti serve
passare molto tempo con il vecchio sistema
rendendolo migliore anche se il tutto
punto è quello di allontanarsi da essa come
non c’è un modo pulito per andarsene
devi passare il tempo nel vecchio sistema
quindi abbiamo separato i database che abbiamo iniziato
prototipazione di nuove funzionalità con idee di
il nuovo approccio che avevamo di questo
tutta la storia di queste mutazioni che scorre
attraverso un messaggio in coda e in corso
tempo reale per i clienti e noi
costruito davvero brutto stupido non molto buono
versioni di tutto ciò e quindi sostituiamo
le connessioni del database sul nostro vecchio
sistema con chiamate alla nostra nuova API così
questo ci ha permesso di correre in realtà alcuni di
la nuova api quando le prestazioni erano a
enorme preoccupazione per noi nella produzione di
mesi come abbiamo costruito l’intero sistema così
abbiamo avuto un livello molto forte di
fiducia prima di schierare ciò che era
poi ulteriormente rafforzato dal
creazione di questo progetto che chiamiamo
buuza gorkon che è una sorta di gioco
il quadro di prova dei cetrioli ma esso
significa cetrioli cattivi e tu puoi leggere
A proposito di questo, naturalmente, non si sta andando a
memorizzarlo ma le diapositive saranno attive
ma se cerchi google per salvare il nostro bacon
con i cetrioli malvagi è probabilmente il
solo un colpo di cui si parlerà ovviamente
software e puoi vedere cosa abbiamo costruito
questa è di nuovo una cosa basata sugli attori in
Scala e Akka dove simuliamo pazzi
gli utenti e quello che abbiamo fatto è stato il nostro
Libreria di sincronizzazione Android che si trova in Java
avvolto in Scala ha costruito una cosa che
potremmo potremmo schierare con la nostra stessa cosa
servizio infrastrutturale immutabile quindi noi
potrebbe distribuire efficacemente milioni di
utenti pazzi che stavano davvero parlando
a vicenda e condividendo liste con
l’un l’altro e condividendo compiti e tu puoi
vedere come direbbe circa la metà del
tempo creare una lista e poi abbastanza spesso
creare un’attività che condividono con ciascuno
altro e poi ci sarebbero dei punti
dove si fermerebbero e controllerebbero per fare
sicuro che fossero sincronizzati
loro stessi e quella lista che erano
condiviso erano in sincronia con l’altro in
facendo questo abbiamo trovato bug in Amazon
sottostanti e solo infrastrutture in
rabbitmq abbiamo trovato ogni sorta di cose
e davvero fino al lancio di
wunderlist 3 Sono rimasto sconvolto da questo
è stata la fine della mia carriera perché abbiamo mantenuto
schiantarsi le cose così tanto male, ma si trasforma
è stato solo perché stiamo facendo
cose davvero pazzesche quindi finalmente facciamo il
lancio e ancora una volta il nostro personale è super
marketing e il lancio era noioso
c’erano in realtà ce ne erano due
momenti di panico sul al momento del lancio
giorno
uno era sentito come se nulla fosse
accadendo e abbiamo pensato bene no
ci si preoccupa più di noi
ma abbiamo esaminato le metriche e sì
hanno fatto questo ci ha portato ad un nuovo livello
il prossimo è stato vedere un grande picco sul
i grafici e sono andato guardato ed era il nostro
un servizio Haskell è aumentato da due
a cinque millisecondi o qualcosa del genere
quello del tempo di risposta in modo che si rivelasse
stare bene nel nostro mondo in modo imbarazzante
aleggia a 10 come ora, ma Haskell
Haskell Haskell Haskell ok così ho detto
non vorrei mai riscrivere il sistema
di nuovo e ovviamente non era esattamente
vero, dipende solo da come lo definisci
sistema quindi era agosto dell’anno scorso
che abbiamo lanciato molti wunderlist 3
il sistema era in Ruby a quel punto e
quello che abbiamo fatto da allora è sostituito I
pensa che il numero sia ora l’ 80% della schiena
terminare con un nuovo codice in diverse lingue
quindi ora abbiamo dove Ruby eravamo noi
avere ruggine di chiusura Scala andare più haskell
elixir ecc nodo nel backend e it
non era solo per divertimento era parzialmente per
divertente e va bene non era solo per divertimento
siamo anche passati da 30 server simili
per un servizio specifico a 3 server per
lo stesso servizio e solo quelli 3
perché vogliamo correre in 3 disponibilità
zone ma in realtà si potrebbe andare a uno o
Potresti, se lo volessi, potresti
accatastati l’un l’altro così è
incredibile il denaro che abbiamo risparmiato
il processo e la capacità di scalare
riscrittura e rigenerazione e
buttando via queste cellule del sistema
non ha avuto tempi di inattività che avevano qualcosa da fare
con questi rimpiazzi questi aggiornamenti
queste riscrive quindi mi sento abbastanza orgoglioso
a tale proposito così dove andiamo nel
benessere futuro non abbiamo davvero fare questo
cosa succede questa omeostasi
sistema di autoregolazione siamo ancora
lavorando su questo siamo conosci come il
il sistema è una rete di cose che
dipendono l’uno dall’altro in modi diversi
e ha segnali di uscita che ti interessano
alcuni dei quali potrebbero essere prestazioni alcuni
di loro potrebbero essere errori che sanno lì
sono cose diverse e capisci
come lasciare che il sistema si evolva da solo
internamente e come questo questo servizio è
male
servizio così uccidilo quel genere di cose così
stiamo lavorando a ciò che avevamo costruito
una convalida globale asincrona
middleware in modo che ogni singolo JSON
richiesta dentro e fuori dal sistema o
Pacchetto Jason dentro e fuori dal sistema
sarebbe valido convalidato con JSON
schema Penso che questo sia davvero un vero
cosa importante perché alcuni degli errori
che abbiamo trovato che sono probabilmente
inerente a questo tipo di micro-servizi
architettura folle eterogenee sono
grazie solo alla validazione dei dati, così siamo
lavorando su questo è possibile
immagina di eseguirlo solo in una lista di cose da fare
con un centinaio di cinquanta servizi più e
più zone di disponibilità è carina
costoso questo era ok anche se come ogni
investitore ogni persona coinvolta in
questo progetto ha detto di non preoccuparsi di come
molto questo costa solo assicurarsi che sia finito
assicurati che funzioni così abbiamo fatto questo e
l’obiettivo era farlo funzionare e poi farlo
veloce quindi rendilo economico e poi
probabilmente da qualche parte lì ce la fanno
carino ma tu sai certamente quelli
tre cose quindi siamo a buon mercato
proprio ora e abbiamo trovato una specie di argento
bullet per quello, quindi qualcuno di voi sta usando
Alcuni di AWS sono hans hassel berg
lui è nella mia squadra ha scritto questo post
recentemente che potresti anche cercare
Hans ha capito che possiamo correre
ogni singola cosa nella nostra infrastruttura
su istanze spot AWS in un’istanza spot
è ciò che il suo amazon ha questo mercato
è un po ‘come il mercato azionario
dove puoi fare offerte sui prezzi per i server
di un certo tipo e quando sono
disponibili per quel prezzo saranno
avviato comunque molti lo vuoi e quando
non sono più disponibili ne avrai uno
messaggio che è un avvertimento e poi
li chiuderanno semplicemente così
probabilmente sembra ad alcuni di voi come a
pazza idea di gestire la tua produzione
infrastruttura su questo ma questo è ciò
lo faremo e lo abbiamo davvero
come se la metà dei nostri server ora fosse attiva
queste istanze spot e siamo obiettivo in
il prossimo mese o giù di lì è tutto
sono istanze spot che significa che potrebbe
essere ucciso in qualsiasi momento potrebbe essere
ucciso in realtà un minuto da qualsiasi
momento o due minuti da qualsiasi
che trovo esilarante perché
Sono il ragazzo per cui si blocca il sistema
divertimento
ma no perché se vogliamo costruire un
sistema in cui tutto ruota attorno al sistema
sopravvivere ma le cellule non mi piacciono
necessariamente non sopravvivere e poi correre
su un’infrastruttura che sta uccidendo
per te è davvero eccitante e
i risparmi sono letteralmente come 85 e 90
per cento per esempio è folle
Penso che penso che Pinterest stia facendo
alcune cose come questa quando lo facciamo e
alcuni altri ne approfittano
devi cambiare il modello perché è
non lavorerò più per loro, lo sono
piuttosto sicuro, ma prendilo mentre fa caldo
dottore, lo faremo solo perché è così
lento per rendere le istanze di Amazon che non lo sono
molto eccitante ho visto questo post di Kraft
provengono da una presentazione calma di mestiere a
un paio di settimane fa Francesco si è seduto cerini
chi è una persona di Erlang ovviamente come noi
ottenere micro sempre più sofisticati
implementazioni del servizio ciascuna cresce
la loro versione schifosa di inizio e io
pensavo che avessimo costruito una versione schifosa
di Erlang è fantastico ma mi ha fatto
pensa come hai bisogno di micro servizi a
fai questo come si, se prendo tutto
queste stesse idee e applicale al
i clienti perché hai notato che ho
solo parlando del nostro back-end come
lo faccio nei clienti come faccio?
in un’app per iOS non so esattamente
sì, questo è il mio prossimo obiettivo e poi di
Naturalmente il prossimo passo è che siamo stati un fattore
tutto questo in un monolite non lo sono davvero
scherzando su quello penso che ci sia
qualcosa da dire per questo, perché
i micro servizi sono più costosi
La cosa SOA è più costosa e a
varietà di modi e penso che questo micro
l’architettura del servizio è solo un
esempio di architettura del servizio fatto
bene, almeno penso che il nostro abbia fatto bene
e la gente chiama il nostro come un micro servizio
architettura quindi è il servizio
architettura fatta bene e tu sai indietro
all’idea che come le app di Erlang
sono in un unico processo per così dire possibile
anche beneficiare di
le stesse cose che possono fare i microservizi
allora forse l’architettura del servizio fatto
beh, l’architettura è ben fatta, quindi io
non so forse l’ anno prossimo sarò
parlando del refactoring ai monoliti
e tu conosci il grande micro servizio
disastro del 2015 ma vedremo comunque io
penso che non abbiamo tempo per le domande, io sono
ho ragione, perché dobbiamo andare
rilassati ma è stato un piacere parlare
a te
Grazie per l’organizzazione è stato
una conferenza favolosa e io lo so
ciò che è umiliato significa e io sono in realtà
umiliato di essere qui a parlarti così
grazie mille

Please follow and like us: