
ogni colpa non è davvero molto popolare
in Europa è abbastanza popolare negli Stati Uniti
ed è sorta da una specie di
recessione e c’è stata una grande eccitazione
di globale o tipo di marchi di lusso che loro
non potevo liberarmi della loro merce
e così la colpa ha costruito un business in giro
che è un sito di e-commerce con
sembra abbastanza prevedibile in questo
riguardo ma c’è molta dinamica
comportamento dietro di esso le vendite cambiano tutto il
tempo e come Steve ha indicato che c’è un
effetto precipitoso quando particolarmente più
marchi popolari sono in vendita e c’è un
molta scarsità intorno ad esso ed è
tipicamente veramente tipo di articoli solubili
e sono incredibilmente economici o
essenzialmente economico
ogni giorno è un po ‘come il Super
Bowl dove c’è questo momento in cui
tutto cambia e le persone si accalcano
la loro pausa pranzo in particolare nel
la costa orientale degli Stati Uniti inizia a martellare
il sito e questo grafico non ha nemmeno
davvero catturare quanto è intenso perché
semplicemente non ha una risoluzione sufficiente
è davvero giù nel tipo di
gamma millisecondo vediamo questo incredibile
l’ondata di traffico passa attraverso il sistema
e porta davvero qualcosa di insolito
requisiti non funzionali in termini di
come dobbiamo affrontare le cose ed è
stato molto è stato una sfida in
quello che è iniziato come una specie di generico
sito web ha incontrato sfide tecniche
che tipo di modellato il futuro della tecnologia
in compagnia in modo molto buono
rapidamente come un’azienda tecnologica che sono
il tipo di cose che stiamo usando
questi giorni e parte di questo discorso è un
un po ‘sul percorso che noi
ha preso per arrivarci sì, non ho intenzione di
parla molto di questa roba
anche se volevo dare una specie di a
senso di dove siamo nella tecnologia
paesaggio e ci siamo davvero abbracciati
microservizi abbastanza seriamente tipo di
basato sul risultato di ciò che sono
vado a parlare per parlare di oggi così
quando abbiamo iniziato è stato molto semplice
sito web davvero e io dico che questo è
in realtà prima che il mio tempo rota
Postgres e sono incredibili
e probabilmente non lo sono
modo migliore per l’avvio di andare avanti
in modo rapido e c’era sai c’era
una sorta di visione intorno a questo business di
tutte queste marche hanno questa roba
stanno andando a distruggere e potremmo noi
in realtà creare un mercato per questo e
e abbiamo creato un mercato per questo e
è andato abbastanza bene e la crescita è stata
molto veloce nel tipo di 2008 nel 2009 e
poi abbiamo firmato un produttore di scarpe
quello probabilmente conosciuto come stanza ha sentito parlare di
forse una o due persone ho avuto certamente
non ne ho mai sentito parlare II non in realtà
avere delle scarpe che sembrano così ma
ci sono persone a cui piacciono davvero questi
scarpe in realtà un sacco di gente e questo
è stato un marchio molto molto difficile per noi
ottenere un accordo perché è stato molto
sensibile nel non aver mai avuto il loro
cose sulle loro merci
vendita e quindi dobbiamo fare una specie di a
ballo delicato per farli iscriversi
e poi tutto doveva andare davvero
bene per loro essere felici e così ottenere
questo amico è stato un colpo di stato serio
assolutamente distrutto il sito intendo
Volevo solo dire che era giù per ore
e tu sai che la gente piangeva e lo era
non è una buona giornata per il team di tecnici
particolare e così fondamentalmente abbiamo dovuto
capire o hanno dovuto capire
ancora prima del mio tempo cosa ci vorrebbe
per fare in realtà questo lavoro e cosa
in realtà stava per prendere qualcosa
come 300 server e tenetelo a mente
c’è questo incredibile impulso di traffico
che dura per 10 minuti così anche voi
devo capire come girare tutto questo
capacità fino a che al momento era ancora
un po ‘rischioso o devi avere
tutta questa capacità inutilizzata in giro ma è così
mi è sembrato un sacco di cose
hardware per questo caso di uso insolito così
c’è stata un po ‘di transizione
in realtà, hanno chiamato così
assunto molto buon Ruby
sviluppatori e persone che davvero
mi è piaciuto molto Ruby e fondamentalmente il
la decisione è stata presa per guardare questo ragazzo
che era la JVM ed era molto
evento traumatico in realtà per un sacco di
gli sviluppatori di Ruby e in effetti loro
occasionalmente vengono chiamati i Ruby Talebani
ora perché lo era
proprio come l’idea di gestire il sito
su sei server anche se questo sembrava
bene non era Ruby e quindi c’era a
un po ‘di una transizione che è successo
in termini di cultura tecnologica in gilt e
una squadra piuttosto piccola di forse cinque persone
ha finito per riscrivere un po ‘del tutto
stack tecnologico in questo tipo di
tipo a grana grossa orientata al servizio
l’architettura lo hanno rotto molto
modi sensibili utenti e ordini e
pagamenti e prodotti e il carrello e
pagina Jen era una sorta di generazione di pagine
servizi che puoi immaginare nella parte anteriore
fine c’è la cosa che hanno chiamato Swift
che era fondamentalmente un motore JSP e
incredibilmente semplice davvero e ha funzionato
e in realtà avrebbero potuto aver fatto
attraverso la vendita con
qualcosa come sei server così erano
felice era tutto bello e
in realtà è un po ‘carino
architettura hai un front end server
e può chiamare molti server
servizi e comporre fondamentalmente cosa
torna da quei servizi per formare un
pagina e questo è qualcosa che è
non così difficile da ottenere la nostra testa e
è come se si potesse rompere il lavoro
in squadre e il tipo di idea base
ecco che tutte queste chiamate di servizio
sono stati fatti usando i futures e se lo sei
fortunato puoi fare tutto questo futuro
chiama molto presto nella richiesta e entro
l’ora in cui effettivamente si esegue il rendering della pagina
tutti i dati sono lì e va
davvero molto veloce e lo ha fatto andare veloce
era tutto a bassa tecnologia e e
in realtà sorprendentemente veloce sono ancora
sorpreso da quanto bene funzioni la JVM
almeno in determinate condizioni
um, quindi volevo dire che stiamo guardando
in un’architettura molto vecchio stile
rilievi proprio come un tre livelli
l’architettura non è molto sexy
qualsiasi modo moderno, ma sai che è un po ‘
ingegneria e molto affidabile e che cosa
abbiamo visto un po ‘emergere se lo sapevi
front-end che potremmo fare molto
memorizzazione nella cache e potrebbe eseguire alcuni calcoli
e orch
cercando queste chiamate a diversi
servizi e il tipo di servizio di guida
è diventato un po ‘più pesante, ma comunque
stava ancora incassando e cercando di proteggere
il database e il tipo di early
orientato ai servizi molto grossolani
l’architettura ha davvero funzionato molto bene
lavoro che separa le preoccupazioni e poi abbiamo avuto
alcuni database diversi anche se uno
database molto molto importante che era
molto difficile da scalare e fusione-io
in realtà salvato il giorno ci postgres in
fusion-io è incredibile ma è a
probabilmente diversi discorsi e mi dispiace
tipo di colore questo perché una specie di caldo
pensiamo a questo tipo di temperatura
di queste cose e c’è sia il
tipo di temperatura di esecuzione e ma
anche la temperatura di sviluppo quindi
sai che le cose stanno funzionando bene
il front-end è super-super impegnato e ce l’abbiamo
è stato scalato su molte macchine
e tende ad essere la CPU completamente al massimo
il tipo di servizio di livello abbastanza occupato
ma speriamo non così occupato e fondamentalmente
a questo punto se colpiamo il database
probabilmente sarà un’interruzione del sito
non avremmo mai colpito il database quando
siamo insurrezione occupati abbastanza l’ha anche
tipo di riflette il dove il
gli sviluppatori sono più occupati c’è solo un
insieme costante di funzionalità e correzioni di bug
e la compatibilità del browser e cose e
e il codice gira per tutto il tempo in
front-end e simili al tipo di
i modelli di accesso rallentano man mano che si ottiene
più vicino ai dati in modo da sembrare gentile
a come questi dati si muovono attraverso il
sistema che cosa abbiamo iniziato a fare nel
in natura la versione iniziale di questo
la cosa era fondamentalmente farlo molto
simile a Ruby e alla ragione del fare
quello era fondamentalmente performance e io
quando questo è un po ‘ circa il tempo
quando mi sono unito non avevo mai visto nulla
abbastanza simile e sono ancora un po ‘
un po ‘scioccato, è stato il massimo
Java low-tech che abbia mai visto
dal tipo di una molla e un esperto e un
più background di enterprise-e e questo
era puro JDBC e come il più semplice
piccola biblioteca che potrebbe trasformare il risultato
imposta in mappe hash e poi tutto questo
oh questo funzionava su queste mappe di hash
e quindi utilizzando una versione precedente di
Jackson per trasformarlo in JSON e poi
da json torna in mappe di cenere ed era
veloce è la cosa più bella che posso dire
Intendo dire che era come Ruby in a
modo solo molto più orribile intendo
non c’è solo sicurezza di tipo ovunque
il sistema veramente e e il fatto è
come i programmatori Java si aspettano un certo grado
di tipo sicurezza e quindi c’è stato un
tipo di disadattamento di impedenza su come
il sistema è stato architettato e come
le persone potrebbero affrontarlo e tipo di
quello che succede è che ottieni qualcosa
Penso che sia come progettato per accrescimento
dove non si può effettivamente mai prendere
niente via e così la gente continua a mantenere
aggiungendo questi non possiamo è impossibile
rintraccia chi sta usando ciò che puoi provare
e cerca il codice e intendo che puoi farlo
tipo di arrivare ma è costoso e
errore incline a capire da chi dipende
questi diversi valori in particolare se
sono nominati come un nome stupido
che appare ovunque, quindi non puoi mai
rimuovi cose e cose solo in un certo modo
crescere e fondamentalmente qui dentro il caos
sfugge sorprendentemente rapidamente
e quindi è stato un po ‘non eccezionale e
poi intendo che siamo un po ‘in scala
tutta questa cosa attraverso un mucchio di
servizi e c’era solo questo
incredibile sorta di divergenza di significato
ed è solo peggiorato e poi noi
voleva provare e aggiungere persone nel
sistema e in fondo non c’è da meravigliarsi
potrebbe davvero capire come funziona il sistema
ha funzionato non era un felice onboarding
esperienza penso per molte persone
e quindi c’era sicuramente un problema
ci sono alcune cose che davvero
sentivo che stavano andando decisamente bene
il sistema era davvero molto veloce e
la decomposizione del servizio non era no
orribile e c’era un nucleo implicito
modello che avremmo davvero visto al lavoro e al
questo senso di colpa stava vendendo molto
cose diverse tra cui vino e tutto
queste cose erano molto gentili
complicati modelli di vendita e tutto il resto
Sono stato capito e tutto il resto
stava lavorando e quindi c’era qualcosa
sicuramente davvero bravo lì ma ci siamo
non riuscendo abbastanza sull’org
ridimensionamento della parte e lì
nessuna vera api discernibile da nessuna parte
chiunque potrebbe vedere e, fondamentalmente, il
il modello di base implicito che era buono era
anche perché era implicito
incredibilmente difficile ragionare e molto
di bug sono stati fatti su ipotesi sbagliate
e sapevi che era un casino
e quindi eravamo abbastanza sicuri di sapere cosa
volevamo che fosse un modello di dati di base
e un’API è ovunque e non lo è
scienza missilistica o almeno lo si spera
non è scienza missilistica penso che sia
interessante per me è tutti parlano
di volere questa roba ma in realtà
non sembra mai accadere o meno raramente
di quanto dovrebbe, quindi ero davvero carina
felice di essere coinvolto in questo um
ma c’è una cosa che mi preoccupa a
po ‘e cioè che si inizia a
sentirsi un po ‘come il nostro PC e legare
a Steve ho letto Steve
lavoro per molto tempo e non ne sono sicuro
quanto sei familiare con il lavoro di Steve
ma era un serio sostenitore del korbo
che è un modello di oggetto distribuito e
tutto sul nostro PC e ha oscillato abbastanza lontano
la direzione opposta e ha scritto piuttosto a
molto su di esso e se non ti è familiare
con i suoi scritti dovresti assolutamente
dai un’occhiata a um ma nonostante questo poco
preoccupazione inquietante nella parte posteriore della mia mente
abbiamo deciso di andare avanti e così abbiamo avuto
fondamentalmente tutti questi servizi di base che
erano il tipo di eredità e lo erano
tutto costruito in modo completamente diverso e
in realtà internamente erano una specie di
esponendo gli endpoint json-rpc e tutto
i problemi che ho evidenziato
intorno al tipo di sicurezza ma stavano lavorando
e non volevamo davvero toccarli
ma eravamo davvero bloccati, era molto
difficile aggiornare il sistema in a
modo significativo soprattutto a causa del
ragioni ho evidenziato in precedenza così così il
l’approccio che abbiamo preso è stato un po ‘
in realtà sembrava sbagliato ma abbiamo deciso di farlo
provalo e così abbiamo avuto tutte queste cose
repos e il mio istinto mio tipo
mi ha detto che dovremmo provare e
grandi clienti per i singoli servizi
con i servizi e avevamo una specie di a
il gruppo pensa a questo e decide
che avremmo iniziato a non farlo
nonostante ne fossi abbastanza sicuro
era sbagliato ma ho pensato che potevamo sistemarlo
più tardi e così abbiamo fatto solo questo singolo
repo che era fondamentalmente l’intero core
modello di dati e client per tutto il core
servizi e questo un client di sincronizzazione
quadro che si spera renderà
relativamente semplice da creare
i clienti così dal cliente sono davvero solo
parlando come un’interfaccia Java quella
definisce i punti finali su un servizio e
chiami in questa cosa e fa a
chiama al servizio e ottieni
qualcosa di nuovo noto anche come il nostro PC ma
c’erano un paio di cose che siamo
facendo un po ‘diversamente allora
almeno era stato fatto in passato noi
stavano costruendo tutto intorno ai futures
come ho già detto e che era uno dei
cose che mi hanno fatto sentire forse questo
non sarebbe stato un disastro il nucleo
modellare anche il modello di dati che abbiamo costruito
quindi tutto quel tipo di bisogno era necessario
attraverso il sito che fino a quel punto
era stato davvero un giro dolce con l’hashmap
inchiodare quello che è stato abbiamo trovato bug e
abbiamo esaminato e sistemato molti bug
e molti servizi ed è arrivato
insieme in realtà abbastanza rapidamente e così
sembrava un po ‘ ok ma quello che non funzionava
davvero una buona soluzione per
come avremmo continuato ad aggiungere
servizi e servizi con i clienti in corso
avanti e in realtà una specie di
caso interessante in cui la forma dello strumento
il nostro pensiero stavamo usando zia a questo
il punto e la zia sono molto difficili da usare
in particolare per fare qualcosa come un
build multi-modulo dove puoi pensare
di un singolo tipo logico di progetto
può pubblicare più vasi che è stato
può essere fatto ma non lo stavamo facendo e
che questo è stato un punto in cui una sorta di
capito che in realtà la decisione
per mettere tutto in uno stato jarred stato
parzialmente motivato dal fatto che esso
era difficile fare qualsiasi altra cosa così com’è
spesso è così che abbiamo risolto il problema e
e così abbiamo iniziato a pensare a a
singolo get repo che ha avuto come un servizio
e un client e un tipo di core che
Parlerò tra un minuto e noi
voluto fare il ristoratore i servizi
per quanto abbiamo potuto e abbiamo deciso di farlo
scrivi i clienti in Scala che
ci piacciono molto per un sacco di
ragioni per cui non entrerò troppo e come
Ho detto che tutto sarebbe stato
basato sul futuro e poi abbiamo fatto il genere
di controversa decisione al momento
che in realtà stavamo andando a coprire il nostro
scommette in termini di tipo di protocollo o
il tipo di codifica dei dati
tra il client e le persone del server
parliamo prima dello schema o parlano
sul codice prima e ci sono un sacco di
strumenti per la generazione di codice e sapone e tutto
questa merda, quindi non abbiamo fatto niente di questo
fondamentalmente ha esaminato le classi di casi in
Scala che sono incredibilmente compatti
rappresentazione di una classe semplice con
praticamente senza comportamento e ci sono
tipo di strumenti che possono trasformare un’istanza
di una case case in JSON o costruisci quella
istanza da json o database o
qualunque sia, è davvero una specie di
modo elegante e semplice per rappresentare il
tipo di cosa che potresti rappresentare
in uno schema e di nuovo era abbastanza tranquillo
una mossa controversa che è finita
lavorando abbastanza bene, così ci mettiamo
quella roba in quello che abbiamo iniziato a chiamare
il nucleo e il nucleo erano essenzialmente
come un firewall per evitare di averne
il codice cliente dipende direttamente dal servizio
codice e viceversa um tipo di alcuni
precedenti tentativi di doratura da creare
clienti che il cliente aveva in realtà solo
stato parte del barattolo del server e così via
se volevi parlare con il server tu
doveva effettivamente collegarsi al server
stesso che ha portato a orrori indicibili
in termini di dipendenze che questo è una specie di
solo una cosa semplice come un modello semplice
per quanto
le persone potrebbero iniziare a imparare come fare
questo in un modo che noi nonostante il fatto
che è sembrato un po ‘terribile come la scena RPC
potrebbe andare bene e quindi a cosa serve
un po ‘ come in runtime sei tu
qualche consumatore di un servizio ed è it’s
fondamentalmente dipende da questo barattolo del cliente
e il jar del client dipende da questo
core jar e il client sa come
chiama questo servizio ma i clienti lo farebbero
in un certo senso è come un’ambasciata per
il servizio è davvero non molto
di proprietà del consumatore in qualsiasi modo e noi
provato davvero molto difficile da mantenere il
dettagli della sua attuazione da
fuoriuscita nel consumatore che è
in realtà è piuttosto difficile su JVM e si ferma
la JVM non è buona a questo jsr 291
è un po ‘come guardare questo tipo di
cosa in osgi ma in pratica lo è
finì per non essere un grande affare anche se
il fatto che non stavamo rilasciando questo
probabilmente il mondo ridurrà la quantità
di cose folli le persone hanno fatto con il codice
e così abbiamo costruito questo tipo di ecosistema
intorno a questa roba che sembrava tipo di
bello lo abbiamo reso davvero facile da scrivere
test funzionali per i servizi di
scrivendo quello che siamo essenzialmente come unità
test dell’API del cliente e poi noi
ha scritto un modo per catturare le risposte del servizio
e tipo di violino con numero casuale
generatore di semi ed essere in grado di
ripeti la conversazione in modo relativamente
modo semplice e che in realtà ci ha dato un
tonnellata di leva in termini di qualità e
anche essere in grado di schierarsi molto velocemente
senza preoccuparsi troppo e come parte di
questo ci è venuto in un modo molto semplice
per esprimere essenzialmente quello
in particolare ottenere il repo dipende dai test
che sono in un altro repository git di quel tipo
di cadde da questo lavoro e ne abbiamo fatto un po ‘
lavorare intorno a rendere le cose tipo di
aggiornabile su un sistema live e e
anche una delle cose che abbiamo
davvero faticato
Non so con quante persone lavora
cliente come siti web pubblici
ma i test di regressione sono un po ‘grandi
trattare in particolare nel nostro caso perché noi
ho una finestra così stretta ogni giorno
pensa se qualcosa va storto durante
quella volta non va bene e cose simili
tipo di lavoro al selenio, ma noi abbiamo
davvero faticato con come evitare
pagando solo gruppi di persone per testare il
sito manualmente e una cosa che è venuta
fuori di questo è stato lo stesso test funzionale
che potrebbe essere scritto semplicemente
annotandoli in una convenzione
puoi davvero emergere da tutto il
codifica l’insieme di test che fa una bella
lavoro dignitoso di tipo rapido test
questo è due uomini alla fine ed è stato gentile
di eccitante abbiamo anche finito per fare un
un sacco di lavoro in giro solo per automatizzare il
processo di aggiornamento al più recente
versione di tutte le librerie condivise e
abbiamo davvero iniziato a diventare
tipo di agricoltori compilatori che non ero
abbastanza in attesa e mi piacerebbe
potrebbe andare più nel dettaglio su questo
roba perché questa è la parte difficile di
scrivere codice libreria in Java quale I
non ho sentito nessuno parlare di a
molto tempo ma ci sono cose come
fragili classi base e in realtà io
penso che sia Scala e Scala è pari
peggio e ho ho sentito una sorta di
occasionalmente nel corso degli anni su come
Google sta spendendo moltissimo
risorse che compilano tutto il codice tutto il
tempo e ora ho un’idea molto migliore
di un certo motivo per cui lo fanno
non intuitivo e fragile in un modo
si potrebbe pensare che non sarebbero
ed è un po ‘il lato oscuro di
la JVM a mio avviso e cose simili
C ++ e c’era una specie di altro
componente a questo che si è rivelato essere
piuttosto importante che sta usando
Zookeeper e Zookeeper Ho sentito
vieni un paio di volte già oggi
guardiano dello zoo se non lo fai se non l’ hai fatto
usato è doloroso usarlo prima ma
deve essere assolutamente il massimo
contributo significativo alla distribuzione
calcolo per
mortali certamente per un po ‘è un
tipo di questa directory distribuita
sistema che ha tipo i trigger e
garanzie e sì io non sono un guardiano dello zoo
esperto ma ciò che amo di Zookeeper
è che la sua API è essenzialmente molto
ben costruito per impedirti di farlo
facendo qualcosa di stupido e tutti io
conoscere il cui approccio è davvero infastidito da
l’API fino a quando non si rendono conto che è
in realtà ogni cosa è
esattamente come è per una ragione che
è una specie di buona funzionalità di un’API ma
prendendo la decisione di tipo di avere
guardiano dello zoo ovunque quello che è diventato
possibile è improvvisamente questa coordinazione
tra i nostri servizi e i nostri clienti
in modo che potessero essenzialmente configurare
stessi automaticamente avviando
semplicemente sapendo come trovare
guardiano dello zoo in qualsiasi ambiente, sia
è il tuo computer portatile di sviluppo o alcuni
macchina scenica o produzione funziona tutto
lo stesso la convenzione è completamente
standard e quindi le cose funzionano da sole
quindi ad esempio quale URL fa il servizio
vivere alla fine non è in realtà
qualcosa che deve riguardare l’utente
delle API possono avere bisogno di sapere che
e deve essere facile da impostare, ma
in termini di essere in grado di rapidamente
fare qualcosa e anche farlo essere una specie di
prevedibilmente lavorando allo stesso modo su tutti
questi diversi ambienti è stato
abbastanza sorprendente e perché è possibile ordinare
di iscriversi per le modifiche a Zookeeper
diventa semplice se è necessario
fare una sorta di cambiamento di configurazione globale
a tutto se conosci per una varietà
di ragioni non succede tutto questo
spesso ma quando ne abbiamo bisogno è un po ‘
fantastico quindi finisce per essere questo
livello di riferimento indiretto che è estremamente
potente rispetto al tipo di più un altro
Approccio primaverile credo che ci permetta anche
fare una sorta di interruttore è un modo
per dire a tutti i clienti di fare
qualcosa senza di loro necessariamente
dovendo
qui per senza il servizio
stanno parlando di essere necessariamente in piedi
e così nel tempo abbiamo trovato questo
davvero abbastanza potente in termini di genere
di partizionare le preoccupazioni attraverso il
persone diverse che hanno una certa importanza
e alla fine provando a farlo è
tipo di facile da fare il lavoro
che stanno cercando di fare quale è molto
spesso costruisci un’applicazione che dipende
sui dati quindi ci sentiamo abbastanza bene
su cosa abbiamo costruito questo stadio e
abbastanza felice e nella parte posteriore della mia mente
Ho una visione simile a quella di Steve
dicendo questo ti ha completamente torto
le persone sono pazze e il motivo è questo
Steve si sente in quel modo grazie o almeno
parte della ragione è il suo tipo di
riassume questo ragazzo che Peter Deutsch ha messo
insieme questo piuttosto famoso otto
errori del calcolo distribuito e
i ladri sono in un bel po ‘su come il nostro
PC, uno per uno, viola questi così
Ho provato a farli passare attraverso
questo sistema e cerca di capire come
come questo approccio stava facendo e in realtà
Sento che mi sento come l’affidabilità
è in gran parte risolto attraverso il futuro
mette un po ‘di peso sul programmatore
ed è possibile che mi manchi il punto
anche se il futuro è particolarmente naka
e immagino che ora siano nella Scala
la libreria standard è veramente tranquilla
sofisticato in termini di come è possibile
rappresentare i fallimenti e portare i fallimenti
attraverso il sistema e mi sento abbastanza bene
su come il modo in cui è sfruttato così numero
due è la latenza è di nuovo zero e mi sento
come i futures nascondono quel fatto o lo fanno
non è una preoccupazione quindi ho intenzione di audacemente
affermare che questo è stato risolto ed è stato con
il suo infinito è un altro di questi
cose che è una specie di
e ci arriverò a quel punto
un po ‘più di dettagli sul tipo di
parte
ma alla fine per me questo si sente come
molto più problema di progettazione di servizi di un
Problema RPC e se dovessi creare servizi
ha senso che non è così grande
è evidente che la rete è sicura
sì qualunque cosa significhi nel moderno
a quanto pare l’età non è precaria, ma la rete
quello in effetti è stato aiutato da un guardiano dello zoo
siamo molto fuori, infatti, siamo stati in grado di farlo
usa il custode per fare cose come tenere
tipo di credenziali condivise in un certo modo
modo più sicuro se non assolutamente sicuro
allora poi quello che ho visto in passato
che di solito è in un mondo di testo semplice
file leggibile da qualche parte nel file
sistema quindi mi sento bene su questo
e sicuramente sentirsi bene che ci sono
un sacco di opzioni che abbiamo il
la topologia non cambia in modo che tu lo sappia
questa è l’ idea che presumi
la rete sta andando sempre esattamente
essere il modo in cui è ora e ha lo zoo
ci ha già aiutato un bel po ‘
lì e l’idea di avere questo
configurazione a cui è possibile abbonarsi
quindi mi sento abbastanza bene a riguardo e
c’è un tipo di amministratori
simili ce ne possono essere tanti
gli amministratori di cui hai bisogno, ma non c’è
solo uno zookeeper almeno uno che
conta e quindi mi sento un po ‘ coraggiosamente
va bene così anche il costo del trasferimento
zero è un altro tipo di una sorta di esso è
sicuramente il caso che quando hai un
molte cose tipo sulla tua mente e
stai cercando di muoverti velocemente e ottenere molto
fatto che si dimentica su di esso fondamentalmente
è impossibile per la maggior parte delle persone
tenere a mente quante cose effettivamente
costo in termini di rete e cosa sono
i diversi ordini di grandezza
differenze tra fare qualcosa di gentile
di bordo e fuori bordo quindi ci sono
problemi con questo tuttavia è una specie di
catturato con speranza nel design del servizio
e in pratica non è stato un grande
problema tranne in un caso particolare e
quindi lo chiamerò coraggiosamente risolto
in fretta
probabilmente nessuna sorpresa in realtà penso
l’omogeneità della rete non è un
problema tanto anche se questo
probabilmente ha molto a che fare con il fatto
che stiamo gestendo il nostro centro dati
e noi quando facciamo cose come spostare cose
in ec2 ne abbiamo una discreta quantità
controllo su come ciò accada, così è
vagamente risolto quindi sospetto ancora il
Steve non è convinto da questo e da lui
ha scritto un documento molto interessante chiamato
convenienza sulla correttezza che è
ovviamente l’obiettivo è bene così
in pratica l’arte il suo argomento è che
il nostro PC è davvero molto di più
convenienza e correttezza e penso
quella è la vera correttezza
incredibilmente difficile la maggior parte del tempo e
Mi dispiace di aver preso solo un piccolo sguardo
cosa servirebbe per fare una piccola parte
del problema che stiamo guardando
corretto ed è un po ‘di a
distrazione ma questa è questa cosa che
continua a venire per me e così ho pensato
Lo porterei in pubblico su tutto
i diversi modelli di dati in un sistema
e quanto spesso le persone tagliano gli angoli qui se
pensi solo al molto semplice
tipo di architettura a tre livelli e come
dati in genere del caso estremo se tu
volevo occuparti di ogni possibile caso
sapere che i dati sono modellati in a
database e viene caricato in a
servizio e molto spesso deve essere
trasformato in un leggermente diverso
modello diverso in modo che possa essere
calcolato contro in modo ragionevole e
allora ha bisogno di passare da quello
servizio e c’è una rete un’altra
modello per rappresentarlo sul filo e
quindi viene prelevato da un cliente e
tradotto possibilmente in un dato cliente
modello dove potrebbero esserci di più
calcoli che sono fatti contro di esso
e poi finalmente viene esposto all’esterno
il cliente in ciò che può essere completamente
ancora diversi modelli di dati modello molto
spesso vuoi mantenere i dati del cliente
modello privato in modo da poterlo cambiare e
quindi modello di dati pubblici
vuoi essere molto più cauto
cambiando così sì che intendo giusto
anche se ci sono cinque modi diversi di
che rappresenta gli stessi dati che nel
caso estremo hai bisogno di pensare
su e in cose come la RPC
quadri del passato alcuni di questi
sono stati generati da software da alcuni
descrizione e penso che probabilmente sia giusto
numero di persone nel tempo ha avuto
ho cercato di capire come possiamo usare
ereditarietà e generazione di codice e
schemi diversi per semplificare tutto questo
e una specie di mia mia conclusione è quella
questo è praticamente impossibile
nel caso generale non può essere fatto
in un modo che è effettivamente utilizzabile noi
anche se abbiamo provato così sostanzialmente questo
roba tipo di opere in pratica ma in
la teoria è completamente rotta e lo è
solo che gli affari vanno avanti e così io
sosterrebbe che stiamo ancora facendo un
coppia cose che sono un po ‘
diverso che conta davvero così il
l’assenza di matrici generate a macchina
risulta essere piuttosto importante
gente così tu sai che questo era il
caso nella nostra miniera è stato un caso in RPC
e ricordo che effettivamente stavo guardando Rmi
circa dieci anni fa e avendo appena no
indovina come funzionava questa roba e non come
era un po ‘sorprendente che potesse esistere
essere questo codice che assolutamente tu
dipendeva da esso era sorta di generato e
ha dovuto funzionare perfettamente ed è stato
difficile ottenere qualsiasi tipo di coerenza
descrizione di cosa stava cercando di fare
o e così non abbiamo adottato questo approccio
fondamentalmente stiamo usando un tipo di
eredità a Scala per mescolare in un sacco di
comportamenti diversi e cercando di fare
in modo che tu effettivamente fornisca tutto
il codice che conta ed è tutto
accessibile a te e in ogni punto
tipo nello stack c’è il
opportunità di fare un qualche tipo di
personalizzazione se è necessaria la maggior parte del
tempo non lo è
e quel tipo di legame in ciò che io
stava chiamando la programmazione orientata all’ambasciata
dove piuttosto che avere questi mozziconi
essendo questa cosa davvero stai pensando
del cliente è parte del servizio e
allora noi proteggiamo in giudizio ce ne sono molti
indiretta e come ho menzionato il tipo
il supporto del sistema per i guasti è carino
incredibile e penso che siamo solo solo
iniziando a capire cosa significa
tipo di mondo Scala, ma c’è un
molto che fa schifo sul nostro PC e su di me
pensa che alcune cose siano andate via
in un certo senso e parte di esso è ancora qui
oggetti remoti come quello che ovviamente ero
aveva tolto l’orientamento all’oggetto
nel mondo la maggior parte delle persone qui sono
probabilmente troppo giovane per ricordarlo
ogni singola cosa era orientata agli oggetti
e tutti questi oggetti erano mutabili
e questi incredibilmente complicati
i programmi sono stati creati e parte di quello
il contratto era che potresti non farlo
cura dove erano gli oggetti se fossero
locale se fossero remoti e penso
questo ha ragione nell’essenza del
affermare che il nostro pc lo fa schifo
non funziona, naturalmente, non penso
questo è quello che stiamo facendo e fallimenti
erano piuttosto orribili e oggetti
la potenza è qualcosa per cui ci battiamo
ma è davvero molto difficile e molto
i veri problemi che hanno gli altri
avuto o richiede cose come le transazioni
che di nuovo sono difficili nel caso semplice
e molto rapidamente diventano quasi
insopportabile in un sistema distribuito
per fortuna non è un problema come colpa
molto spesso quindi abbiamo ignorato tutto questo e quello
era abbastanza facile ed è stato sentito come
c’è molto successo, infatti, dietro
in aprile abbiamo misurato quanti servizi
avevamo creato un senso di colpa e ce n’è
circa un centinaio di sviluppatori che creano
servizi a un ottimo prezzo è in realtà
oltre 300 ora e sono tutti un po ‘di
seguendo questo modello e tutto è
funziona piuttosto bene con un tipo di
eccezione clamorosa
e questo è fondamentalmente come se fosse
tutto quello che hai è un martello tutto
inizia a sembrare un chiodo quindi non c’era
un po ‘di angolo del mondo Gil
che non stavo prestando molta attenzione
a come probabilmente dovrei avere intorno a come
i lavori in lotti sono stati fatti e mi piacciono davvero
gran parte del tipo di modello di gilt è
intorno alla personalizzazione e sappiamo molto
su cosa guardano i nostri utenti e cosa
a loro piace e e perché abbiamo
questo tipo di scarsità un modello che è
in realtà davvero importante perché le persone
piace venire al sito web è molto
facile per le persone che probabilmente comprerebbero
qualcosa in realtà non vederlo e
c’è un sacco di lavoro algoritmico
può essere fatto per rendere quella situazione
meglio e molto di questo algoritmo
il lavoro algoritmico avviene in lavori batch
e questo tipo di legame torna nei due
tipo di cose che non ero completamente
confortevole e questa idea del
legge dello strumento che è fondamentalmente il
nome del fenomeno quando quando tutti voi
avere è un martello e quindi cosa fondamentalmente
quello che è successo è che erano questi
i clienti erano così facili da usare e loro
funzionerebbe solo dovunque ed è stato
le persone banali stavano essenzialmente facendo
l’equivalente di un enorme lotto ridotto
lavori che fanno chiamare il servizio e loro
non ha davvero considerato cosa stava succedendo
che in questo caso era come martellare
morte on line produzione rivolta al cliente
servizi e tipo di sfruttare il
potere dei computer per abbattere il
sito e quindi sai davvero com’è
questi clienti si occupano solo di estrarre dati
e questo è il mio significato
quello che è circa come una delle cose
di cui la gente parla è una specie di
gli aspetti negativi del servizio orientato
l’architettura è che tu perdi il
capacità di fare unioni e database molto
se sei davvero una paratia dei tuoi servizi
che le persone tendono a pensare è un bene
idea quindi alla fine devi partecipare
il livello di servizio e questo ha il suo
i problemi non sempre si ridimensionano molto
bene
e quindi se davvero lo desideri
scala su una modalità batch sei piuttosto che
tirando i dati per il codice che si desidera
spingere il codice ai dati così quando
ci sono tonnellate e tonnellate di dati che lo spostano
è costoso, il codice è molto
più piccolo e questo è un po ‘cosa
MapReduce è tutto e griglia
calcolo e in questi giorni scintilla è questo
cosa che funziona su Hadoop è così
tutto su questo ed è carino
interessante, ma non ci siamo bloccati
un punto in cui sembra di calzini
o forse perché è il nostro pc che sono
Non sono sicuro, ma stiamo cercando di pensare
tipo di una prossima generazione di così e cosa
il servizio inizia davvero a guardare
come per noi e penso probabilmente altro
le persone e ci sono molte tendenze
penso che siano piuttosto interessanti e
rilevante e questa idea che il
il modello di base per i database è un male
idea stiamo iniziando ad abbracciare carina
praticamente ovunque possiamo costruire
alcuni strumenti attorno a questo e c’è
cotone non siamo purtroppo in un
posizione a usato atomico anche se lo desidero
che eravamo perché penso che sia gentile
di sorprendente ci siamo anche mossi enormemente
verso i flussi di eventi come fondamentalmente gentili
di sourcing di eventi come modo di rappresentare
il modo in cui il sistema o fondamentalmente il modo in cui i dati
sta cambiando nel tempo e ovviamente
l’elaborazione in batch è diventata enorme
l’architettura lambda è una specie di importante
a noi Nathan Mars tomba e ha dato un
stupendo chiacchierare l’anno scorso qui a riguardo
idea che non entrerò troppo e
c’è una query di comando pattern
separazione delle responsabilità lo penso
sta per cui è fondamentalmente
identificando che in realtà un sacco di volte
importa parecchio separare il
lettura da servizi di scrittura e
la scrittura è abbastanza rara spesso mentre
la lettura potrebbe farti sapere in un lotto
processo per esempio la lettura sarebbe a
evento enorme che accade miliardi
di volte e così sai dove siamo
iniziato in modo gentile da qui il
cosa semplice e ora siamo in realtà
finendo per guardare i servizi che iniziano
sentire qualcosa di simile
che non mi sembra semplice ma è così
così è il tipo di dove siamo in termini di
come puoi davvero creare cose simili?
ridimensionare e fare tutte le cose che ti servono
fatto che sai che i dati devono andare
nel data warehouse e deve essere
disponibile per lavori batch e in tempo reale
i dati devono essere soggetti a complessi
elaborazione dell’evento e fatto molte cose
devono essere pre-elaborati in modo che i servizi
posso cercarli e voglio dire che questo è
fondamentalmente sai cosa è solo un singolo
il servizio inizia a sembrare mentre a
per noi almeno un anno fa era il servizio
come un servlet container in esecuzione su Jersey
e che forse aveva un database dietro
e si spera non così siamo sì è
tipo di un tempo eccitante cosa c’è
interessante su questo modello è che noi
in realtà non devi rompere nessuno dei
i clienti di implementare questa roba che
parte sembra funzionare abbastanza bene ma
comunque è tutto ciò che ho
avere un paio di minuti per le domande corse a
un po ‘sotto il tempo che speravo
a cui va bene, sì, ne ho un po ‘
domande giuste oh vediamo, potresti
hanno ridimensionato il sistema Ruby on Rails di
solo cambiando l’architettura e non
la lingua / tecnologia quindi è difficile
per conoscere la risposta a questa domanda per due
ragioni per cui uno non ero lì, c’è un
molte persone parlano di Twitter
potrebbe essere ridimensionato penso che sia davvero rubino
non è un runtime molto efficiente
non è nemmeno sulla JVM e così sono io
penso che non è una questione di noi
l’abbiamo fatto scalare tanto quanto noi
voglio pagare i soldi per ridimensionarli
sento che ne è valsa la pena
e anche e penso che lo sai anche tu
le prestazioni non erano l’unica cosa come noi
stavano ridimensionando l’organizzazione al
tempo abbiamo trovato Ruby difficile da scalare
attraverso come hai una sorta di più squadre
cercando di lavorare insieme e si erano
so che penso che collettivamente fossero grandi fan
di programmazione typesafe come un modo per aiutare
puoi dire di più sull’emergente
test di regressione sì, in realtà siamo
mettere insieme un discorso su quello che c’è
un po ‘di interesse per questo ha
è stata una specie di lotta in corso per noi
come ho detto abbiamo un processo
internamente quando qualcosa va
sbagliato che è rivolto al cliente, abbiamo un
riunione settimanale che è fondamentalmente
parlare di ciò che era la radice
causa e parlare di cosa è andato storto e
fondamentalmente l’obbligo ora che esce
di questo sei tu se sei un po ‘
sul gancio per uno di questi problemi voi
non solo devi aggiustarlo ma anche tu
devono fornire l’automazione
avrebbe preso l’insetto se non del tutto
possibile come parte del processo di
riparandolo che è una di quelle cose
sembra ovvio ma è così
le persone non tendono a farlo davvero in un
modo impegnato e stiamo provando sinceramente
farlo in modo impegnato e il
l’altra cosa è che ci siamo trasferiti
davvero cercando di allontanarsi dal tipo di
persone QA dedicati e una sorta di
ethos interno attorno al decentramento
il problema è che cose come un globale
i test di regressione dicono che sono questi
cose intrinsecamente centralizzate e noi
ho provato a costruire una squadra che sarebbe sorta di
gestire la biblioteca della regressione globale
test e non ha funzionato molto
bene per una varietà di ragioni e così
fondamentalmente abbiamo deciso piuttosto che provare e
centralizzare una squadra per fare ciò che facciamo
è provare e avere il minimo assoluto
quantità di centralizzazione richiesta quale
era fondamentalmente una sorta di convenzione su
sul tagging e poi alcuni relativamente
macchine semplici che potrebbero
cerca attraverso il codice e Phi
tutti questi tag e assemblare tutto il
prova e li esegue e poi nel tempo
sai come la gente passa attraverso il
tipo di processo di risolvere incidenti che
quella libreria emerge e diventa più grande e
le cose che stanno effettivamente causando
le interruzioni sono le cose che siamo
in realtà scrivere test per e c’è
proprio come una convergenza verso la qualità I
pensa che l’altra cosa è che puoi
solo come un sistema diventa più grande io
pensa che puoi solo arrivare così lontano
test in tempo reale e così siamo anche noi
ora sto iniziando a salire su una specie di aa
molto più ambizioso modo di guardare
il tipo di dati clickstream in tempo reale
e altri dati di registro e centralizzati
registra i dati e cerca di rilevare le cose
che stanno accadendo che sono cattivi come
il più rapidamente possibile invece di provare e
prendere ogni cosa come esempio
lo sai per se stiamo guardando gli accessi
dall’utente agente se ce n’è
versione particolarmente strana di internet
esploratore o qualsiasi altra cosa che non lo è
il modo per vedere quella roba è in realtà
prendilo in tempo reale e poi prova e
risolvilo piuttosto che concentrarti su
testeremo tutti i browser
il tempo quindi facciamo qualche cross browser
test ma non abbastanza esteso a
prendere tutti questi problemi e ora è così
tipo di chiaro che dobbiamo tornare indietro
a un tipo di elaborazione degli eventi da catturare
quella roba va bene um ha fatto la gente Ruby
non portare alcun metodo di prova insieme a
il loro design della mappa hash quindi sì il Ruby
la base di codice esiste ancora a proposito
c’è un enorme codice di base e a
molto di questo è interno ed è
in realtà una base di codice di altissima qualità
ma nel dio santo oh mio dio siamo tutti
andando a morire momento di porting
tutto su Java cosa no
accadeva lo stesso grado di test
quello era successo in Ruby e quello era
deplorevole, penso che sia giusto dirlo a
allo stesso tempo penso che sia
per immaginare la quantità di pressione che
quella squadra era sotto come il business
era letteralmente in fiamme quindi sì, lo eravamo
sento ancora il dolore lì se lo sei
correndo vedi QRS con lo sfiato
cosa usi per la memorizzazione degli eventi, quindi io
non direi che penso sia giusto dire
che non stiamo ancora facendo che siamo
usando Kafka e stiamo usando coniglio e
ora stiamo praticamente prendendo molto
eventi da alcuni sistemi in Kafka e
quindi fondamentalmente facendo un’operazione ETL
in un data warehouse, ma è questo
super primi giorni e penso che ci sia un
molto interesse per quello stile e abbiamo
fatto alcune delle nostre implementazioni
con qualche successo misto ma il
eventi o cose che sono state fatte per acha
che immagino ora si sia trasferito in acha i
penso sia davvero interessante anche se io
non ho ancora un’opinione su come vorremmo
immagazzina quella roba per fare il
pubblico come il fatto che l’oratore
trolled l’ host di pista da quando mi è stato detto
Voglio fare un buon commento, no
pensa che quello che stai facendo va bene perché
il problema di cui stavo scrivendo è
la comodità è che conosci RPC
è stato inventato per nascondere la distribuzione da
lo sviluppatore se torni al molto
primi scritti su RPC il punto di essere
fatto ed è in realtà nel testo di
questi scritti che dice oggi non lo facciamo
hanno sviluppatori di sistemi distribuiti
le persone non capiscono come farlo
quindi abbiamo così questi sviluppatori di librerie
se possiamo rendere la programmazione simile
scrivendo una biblioteca, poi siamo andati e tu
sanno che stanno spazzando tutto sotto il tappeto
quei problemi seri l’otto
errori e ordinamenti e causalità e
tutto quel genere di cose e questo è il
obiezione e chiaramente non stai facendo
quello perché stai pensando al
sistema distribuito e sai scrivere
in particolare come un sistema distribuito
fu con significativa ironia che io
capito che noi
era stato infatti bruciato proprio da quelli
problemi che sul batch ancora in fase di elaborazione
sì sì sì è necessaria la vigilanza e
e sì, ho lungamente concordato con quello
idea di non farlo apparire come locale
codice in modo tale da poter effettivamente annullare il
codice e trova ovunque ciò che stava facendo
una chiamata remota ed è difficile tenerla
tipo di diligenza, sì, sì, c’era
domanda lì sì come lo costruisci
molti servizi se ho capito bene
stai usando le lezioni di bacio skala
e fornire un client-server composto
comunicazione sì, qual è il tuo
l’esperienza è stata nell’impatto di
accoppiando i tuoi sistemi come te
prova e cambia come aggiungi nuovi campi dati
tipi in quei tipi di cose proprio così
la domanda riguarda i doveri
accoppiando come funziona usando il caso
classi per condividere dati tra il
clienti e server, quindi sì, ci sono
Gotchas anche se funziona abbastanza bene se
aggiungi campi e molto spesso quando tu
aggiungi un campo devi renderlo un
campo opzionale e quindi i client
che sono là fuori sono preparati per lo sono
pronti a ignorare i dati che non hanno
capire e in pratica funziona
abbastanza bene anche se molta gente se ne va
attraverso un fallimento cognitivo che
li porta a cancellare qualcosa ma il
prova che è davvero molto veloce
dopo aver detto che è diventato chiaro
che dobbiamo essere davvero veramente
aggressivo sul tentativo di aggiornare
cose il più rapidamente possibile se noi
lasciare le cose intendo che stanno andando bene
non ci sarebbe motivo di aggiornarli
diverso da quello che è solo una sorta di politica di
aggiornando costantemente tutto al
più rapidamente che possiamo prendere in considerazione
passando a tipi di dati primitivi così
che puoi far sì che un server possa iterare e
spingere fuori nuovi dati senza tutto il
i clienti devono strofinare solo per raccogliere un
oggetto tipizzato staticamente um sì, il
la domanda è che pensiamo che io indovino
cosa permetteva solo i dati
cadere senza il più stretto
avvolgendo in modo che non si deve
rivedi tutti i clienti ogni volta, così
sì, era come iniziare
Voglio dire che è fondamentalmente un tipo sicuro e
tipo approccio non sicuro e sì, abbiamo trovato
è difficile mantenere quel codice che fa
lavoro puoi farlo in quel modo ma per tanto tempo
come abbiamo mantenuto la retrocompatibilità
dei dati che non è in realtà non
così difficile in pratica finché tu
non eliminare le cose e quindi aggiungi
le cose con attenzione non è stato
necessario aggiornare quelli remoti
i clienti anche se noi scegliamo di tipo di
per altri motivi ma più correlato a
dipendenze con dire la configurazione
sistema quindi i dati effettivi
compatibilità ok ci sono più domande
Eric ci sarà, ma per favore, facciamolo
grazie al nostro relatore, grazie
in Europa è abbastanza popolare negli Stati Uniti
ed è sorta da una specie di
recessione e c’è stata una grande eccitazione
di globale o tipo di marchi di lusso che loro
non potevo liberarmi della loro merce
e così la colpa ha costruito un business in giro
che è un sito di e-commerce con
sembra abbastanza prevedibile in questo
riguardo ma c’è molta dinamica
comportamento dietro di esso le vendite cambiano tutto il
tempo e come Steve ha indicato che c’è un
effetto precipitoso quando particolarmente più
marchi popolari sono in vendita e c’è un
molta scarsità intorno ad esso ed è
tipicamente veramente tipo di articoli solubili
e sono incredibilmente economici o
essenzialmente economico
ogni giorno è un po ‘come il Super
Bowl dove c’è questo momento in cui
tutto cambia e le persone si accalcano
la loro pausa pranzo in particolare nel
la costa orientale degli Stati Uniti inizia a martellare
il sito e questo grafico non ha nemmeno
davvero catturare quanto è intenso perché
semplicemente non ha una risoluzione sufficiente
è davvero giù nel tipo di
gamma millisecondo vediamo questo incredibile
l’ondata di traffico passa attraverso il sistema
e porta davvero qualcosa di insolito
requisiti non funzionali in termini di
come dobbiamo affrontare le cose ed è
stato molto è stato una sfida in
quello che è iniziato come una specie di generico
sito web ha incontrato sfide tecniche
che tipo di modellato il futuro della tecnologia
in compagnia in modo molto buono
rapidamente come un’azienda tecnologica che sono
il tipo di cose che stiamo usando
questi giorni e parte di questo discorso è un
un po ‘sul percorso che noi
ha preso per arrivarci sì, non ho intenzione di
parla molto di questa roba
anche se volevo dare una specie di a
senso di dove siamo nella tecnologia
paesaggio e ci siamo davvero abbracciati
microservizi abbastanza seriamente tipo di
basato sul risultato di ciò che sono
vado a parlare per parlare di oggi così
quando abbiamo iniziato è stato molto semplice
sito web davvero e io dico che questo è
in realtà prima che il mio tempo rota
Postgres e sono incredibili
e probabilmente non lo sono
modo migliore per l’avvio di andare avanti
in modo rapido e c’era sai c’era
una sorta di visione intorno a questo business di
tutte queste marche hanno questa roba
stanno andando a distruggere e potremmo noi
in realtà creare un mercato per questo e
e abbiamo creato un mercato per questo e
è andato abbastanza bene e la crescita è stata
molto veloce nel tipo di 2008 nel 2009 e
poi abbiamo firmato un produttore di scarpe
quello probabilmente conosciuto come stanza ha sentito parlare di
forse una o due persone ho avuto certamente
non ne ho mai sentito parlare II non in realtà
avere delle scarpe che sembrano così ma
ci sono persone a cui piacciono davvero questi
scarpe in realtà un sacco di gente e questo
è stato un marchio molto molto difficile per noi
ottenere un accordo perché è stato molto
sensibile nel non aver mai avuto il loro
cose sulle loro merci
vendita e quindi dobbiamo fare una specie di a
ballo delicato per farli iscriversi
e poi tutto doveva andare davvero
bene per loro essere felici e così ottenere
questo amico è stato un colpo di stato serio
assolutamente distrutto il sito intendo
Volevo solo dire che era giù per ore
e tu sai che la gente piangeva e lo era
non è una buona giornata per il team di tecnici
particolare e così fondamentalmente abbiamo dovuto
capire o hanno dovuto capire
ancora prima del mio tempo cosa ci vorrebbe
per fare in realtà questo lavoro e cosa
in realtà stava per prendere qualcosa
come 300 server e tenetelo a mente
c’è questo incredibile impulso di traffico
che dura per 10 minuti così anche voi
devo capire come girare tutto questo
capacità fino a che al momento era ancora
un po ‘rischioso o devi avere
tutta questa capacità inutilizzata in giro ma è così
mi è sembrato un sacco di cose
hardware per questo caso di uso insolito così
c’è stata un po ‘di transizione
in realtà, hanno chiamato così
assunto molto buon Ruby
sviluppatori e persone che davvero
mi è piaciuto molto Ruby e fondamentalmente il
la decisione è stata presa per guardare questo ragazzo
che era la JVM ed era molto
evento traumatico in realtà per un sacco di
gli sviluppatori di Ruby e in effetti loro
occasionalmente vengono chiamati i Ruby Talebani
ora perché lo era
proprio come l’idea di gestire il sito
su sei server anche se questo sembrava
bene non era Ruby e quindi c’era a
un po ‘di una transizione che è successo
in termini di cultura tecnologica in gilt e
una squadra piuttosto piccola di forse cinque persone
ha finito per riscrivere un po ‘del tutto
stack tecnologico in questo tipo di
tipo a grana grossa orientata al servizio
l’architettura lo hanno rotto molto
modi sensibili utenti e ordini e
pagamenti e prodotti e il carrello e
pagina Jen era una sorta di generazione di pagine
servizi che puoi immaginare nella parte anteriore
fine c’è la cosa che hanno chiamato Swift
che era fondamentalmente un motore JSP e
incredibilmente semplice davvero e ha funzionato
e in realtà avrebbero potuto aver fatto
attraverso la vendita con
qualcosa come sei server così erano
felice era tutto bello e
in realtà è un po ‘carino
architettura hai un front end server
e può chiamare molti server
servizi e comporre fondamentalmente cosa
torna da quei servizi per formare un
pagina e questo è qualcosa che è
non così difficile da ottenere la nostra testa e
è come se si potesse rompere il lavoro
in squadre e il tipo di idea base
ecco che tutte queste chiamate di servizio
sono stati fatti usando i futures e se lo sei
fortunato puoi fare tutto questo futuro
chiama molto presto nella richiesta e entro
l’ora in cui effettivamente si esegue il rendering della pagina
tutti i dati sono lì e va
davvero molto veloce e lo ha fatto andare veloce
era tutto a bassa tecnologia e e
in realtà sorprendentemente veloce sono ancora
sorpreso da quanto bene funzioni la JVM
almeno in determinate condizioni
um, quindi volevo dire che stiamo guardando
in un’architettura molto vecchio stile
rilievi proprio come un tre livelli
l’architettura non è molto sexy
qualsiasi modo moderno, ma sai che è un po ‘
ingegneria e molto affidabile e che cosa
abbiamo visto un po ‘emergere se lo sapevi
front-end che potremmo fare molto
memorizzazione nella cache e potrebbe eseguire alcuni calcoli
e orch
cercando queste chiamate a diversi
servizi e il tipo di servizio di guida
è diventato un po ‘più pesante, ma comunque
stava ancora incassando e cercando di proteggere
il database e il tipo di early
orientato ai servizi molto grossolani
l’architettura ha davvero funzionato molto bene
lavoro che separa le preoccupazioni e poi abbiamo avuto
alcuni database diversi anche se uno
database molto molto importante che era
molto difficile da scalare e fusione-io
in realtà salvato il giorno ci postgres in
fusion-io è incredibile ma è a
probabilmente diversi discorsi e mi dispiace
tipo di colore questo perché una specie di caldo
pensiamo a questo tipo di temperatura
di queste cose e c’è sia il
tipo di temperatura di esecuzione e ma
anche la temperatura di sviluppo quindi
sai che le cose stanno funzionando bene
il front-end è super-super impegnato e ce l’abbiamo
è stato scalato su molte macchine
e tende ad essere la CPU completamente al massimo
il tipo di servizio di livello abbastanza occupato
ma speriamo non così occupato e fondamentalmente
a questo punto se colpiamo il database
probabilmente sarà un’interruzione del sito
non avremmo mai colpito il database quando
siamo insurrezione occupati abbastanza l’ha anche
tipo di riflette il dove il
gli sviluppatori sono più occupati c’è solo un
insieme costante di funzionalità e correzioni di bug
e la compatibilità del browser e cose e
e il codice gira per tutto il tempo in
front-end e simili al tipo di
i modelli di accesso rallentano man mano che si ottiene
più vicino ai dati in modo da sembrare gentile
a come questi dati si muovono attraverso il
sistema che cosa abbiamo iniziato a fare nel
in natura la versione iniziale di questo
la cosa era fondamentalmente farlo molto
simile a Ruby e alla ragione del fare
quello era fondamentalmente performance e io
quando questo è un po ‘ circa il tempo
quando mi sono unito non avevo mai visto nulla
abbastanza simile e sono ancora un po ‘
un po ‘scioccato, è stato il massimo
Java low-tech che abbia mai visto
dal tipo di una molla e un esperto e un
più background di enterprise-e e questo
era puro JDBC e come il più semplice
piccola biblioteca che potrebbe trasformare il risultato
imposta in mappe hash e poi tutto questo
oh questo funzionava su queste mappe di hash
e quindi utilizzando una versione precedente di
Jackson per trasformarlo in JSON e poi
da json torna in mappe di cenere ed era
veloce è la cosa più bella che posso dire
Intendo dire che era come Ruby in a
modo solo molto più orribile intendo
non c’è solo sicurezza di tipo ovunque
il sistema veramente e e il fatto è
come i programmatori Java si aspettano un certo grado
di tipo sicurezza e quindi c’è stato un
tipo di disadattamento di impedenza su come
il sistema è stato architettato e come
le persone potrebbero affrontarlo e tipo di
quello che succede è che ottieni qualcosa
Penso che sia come progettato per accrescimento
dove non si può effettivamente mai prendere
niente via e così la gente continua a mantenere
aggiungendo questi non possiamo è impossibile
rintraccia chi sta usando ciò che puoi provare
e cerca il codice e intendo che puoi farlo
tipo di arrivare ma è costoso e
errore incline a capire da chi dipende
questi diversi valori in particolare se
sono nominati come un nome stupido
che appare ovunque, quindi non puoi mai
rimuovi cose e cose solo in un certo modo
crescere e fondamentalmente qui dentro il caos
sfugge sorprendentemente rapidamente
e quindi è stato un po ‘non eccezionale e
poi intendo che siamo un po ‘in scala
tutta questa cosa attraverso un mucchio di
servizi e c’era solo questo
incredibile sorta di divergenza di significato
ed è solo peggiorato e poi noi
voleva provare e aggiungere persone nel
sistema e in fondo non c’è da meravigliarsi
potrebbe davvero capire come funziona il sistema
ha funzionato non era un felice onboarding
esperienza penso per molte persone
e quindi c’era sicuramente un problema
ci sono alcune cose che davvero
sentivo che stavano andando decisamente bene
il sistema era davvero molto veloce e
la decomposizione del servizio non era no
orribile e c’era un nucleo implicito
modello che avremmo davvero visto al lavoro e al
questo senso di colpa stava vendendo molto
cose diverse tra cui vino e tutto
queste cose erano molto gentili
complicati modelli di vendita e tutto il resto
Sono stato capito e tutto il resto
stava lavorando e quindi c’era qualcosa
sicuramente davvero bravo lì ma ci siamo
non riuscendo abbastanza sull’org
ridimensionamento della parte e lì
nessuna vera api discernibile da nessuna parte
chiunque potrebbe vedere e, fondamentalmente, il
il modello di base implicito che era buono era
anche perché era implicito
incredibilmente difficile ragionare e molto
di bug sono stati fatti su ipotesi sbagliate
e sapevi che era un casino
e quindi eravamo abbastanza sicuri di sapere cosa
volevamo che fosse un modello di dati di base
e un’API è ovunque e non lo è
scienza missilistica o almeno lo si spera
non è scienza missilistica penso che sia
interessante per me è tutti parlano
di volere questa roba ma in realtà
non sembra mai accadere o meno raramente
di quanto dovrebbe, quindi ero davvero carina
felice di essere coinvolto in questo um
ma c’è una cosa che mi preoccupa a
po ‘e cioè che si inizia a
sentirsi un po ‘come il nostro PC e legare
a Steve ho letto Steve
lavoro per molto tempo e non ne sono sicuro
quanto sei familiare con il lavoro di Steve
ma era un serio sostenitore del korbo
che è un modello di oggetto distribuito e
tutto sul nostro PC e ha oscillato abbastanza lontano
la direzione opposta e ha scritto piuttosto a
molto su di esso e se non ti è familiare
con i suoi scritti dovresti assolutamente
dai un’occhiata a um ma nonostante questo poco
preoccupazione inquietante nella parte posteriore della mia mente
abbiamo deciso di andare avanti e così abbiamo avuto
fondamentalmente tutti questi servizi di base che
erano il tipo di eredità e lo erano
tutto costruito in modo completamente diverso e
in realtà internamente erano una specie di
esponendo gli endpoint json-rpc e tutto
i problemi che ho evidenziato
intorno al tipo di sicurezza ma stavano lavorando
e non volevamo davvero toccarli
ma eravamo davvero bloccati, era molto
difficile aggiornare il sistema in a
modo significativo soprattutto a causa del
ragioni ho evidenziato in precedenza così così il
l’approccio che abbiamo preso è stato un po ‘
in realtà sembrava sbagliato ma abbiamo deciso di farlo
provalo e così abbiamo avuto tutte queste cose
repos e il mio istinto mio tipo
mi ha detto che dovremmo provare e
grandi clienti per i singoli servizi
con i servizi e avevamo una specie di a
il gruppo pensa a questo e decide
che avremmo iniziato a non farlo
nonostante ne fossi abbastanza sicuro
era sbagliato ma ho pensato che potevamo sistemarlo
più tardi e così abbiamo fatto solo questo singolo
repo che era fondamentalmente l’intero core
modello di dati e client per tutto il core
servizi e questo un client di sincronizzazione
quadro che si spera renderà
relativamente semplice da creare
i clienti così dal cliente sono davvero solo
parlando come un’interfaccia Java quella
definisce i punti finali su un servizio e
chiami in questa cosa e fa a
chiama al servizio e ottieni
qualcosa di nuovo noto anche come il nostro PC ma
c’erano un paio di cose che siamo
facendo un po ‘diversamente allora
almeno era stato fatto in passato noi
stavano costruendo tutto intorno ai futures
come ho già detto e che era uno dei
cose che mi hanno fatto sentire forse questo
non sarebbe stato un disastro il nucleo
modellare anche il modello di dati che abbiamo costruito
quindi tutto quel tipo di bisogno era necessario
attraverso il sito che fino a quel punto
era stato davvero un giro dolce con l’hashmap
inchiodare quello che è stato abbiamo trovato bug e
abbiamo esaminato e sistemato molti bug
e molti servizi ed è arrivato
insieme in realtà abbastanza rapidamente e così
sembrava un po ‘ ok ma quello che non funzionava
davvero una buona soluzione per
come avremmo continuato ad aggiungere
servizi e servizi con i clienti in corso
avanti e in realtà una specie di
caso interessante in cui la forma dello strumento
il nostro pensiero stavamo usando zia a questo
il punto e la zia sono molto difficili da usare
in particolare per fare qualcosa come un
build multi-modulo dove puoi pensare
di un singolo tipo logico di progetto
può pubblicare più vasi che è stato
può essere fatto ma non lo stavamo facendo e
che questo è stato un punto in cui una sorta di
capito che in realtà la decisione
per mettere tutto in uno stato jarred stato
parzialmente motivato dal fatto che esso
era difficile fare qualsiasi altra cosa così com’è
spesso è così che abbiamo risolto il problema e
e così abbiamo iniziato a pensare a a
singolo get repo che ha avuto come un servizio
e un client e un tipo di core che
Parlerò tra un minuto e noi
voluto fare il ristoratore i servizi
per quanto abbiamo potuto e abbiamo deciso di farlo
scrivi i clienti in Scala che
ci piacciono molto per un sacco di
ragioni per cui non entrerò troppo e come
Ho detto che tutto sarebbe stato
basato sul futuro e poi abbiamo fatto il genere
di controversa decisione al momento
che in realtà stavamo andando a coprire il nostro
scommette in termini di tipo di protocollo o
il tipo di codifica dei dati
tra il client e le persone del server
parliamo prima dello schema o parlano
sul codice prima e ci sono un sacco di
strumenti per la generazione di codice e sapone e tutto
questa merda, quindi non abbiamo fatto niente di questo
fondamentalmente ha esaminato le classi di casi in
Scala che sono incredibilmente compatti
rappresentazione di una classe semplice con
praticamente senza comportamento e ci sono
tipo di strumenti che possono trasformare un’istanza
di una case case in JSON o costruisci quella
istanza da json o database o
qualunque sia, è davvero una specie di
modo elegante e semplice per rappresentare il
tipo di cosa che potresti rappresentare
in uno schema e di nuovo era abbastanza tranquillo
una mossa controversa che è finita
lavorando abbastanza bene, così ci mettiamo
quella roba in quello che abbiamo iniziato a chiamare
il nucleo e il nucleo erano essenzialmente
come un firewall per evitare di averne
il codice cliente dipende direttamente dal servizio
codice e viceversa um tipo di alcuni
precedenti tentativi di doratura da creare
clienti che il cliente aveva in realtà solo
stato parte del barattolo del server e così via
se volevi parlare con il server tu
doveva effettivamente collegarsi al server
stesso che ha portato a orrori indicibili
in termini di dipendenze che questo è una specie di
solo una cosa semplice come un modello semplice
per quanto
le persone potrebbero iniziare a imparare come fare
questo in un modo che noi nonostante il fatto
che è sembrato un po ‘terribile come la scena RPC
potrebbe andare bene e quindi a cosa serve
un po ‘ come in runtime sei tu
qualche consumatore di un servizio ed è it’s
fondamentalmente dipende da questo barattolo del cliente
e il jar del client dipende da questo
core jar e il client sa come
chiama questo servizio ma i clienti lo farebbero
in un certo senso è come un’ambasciata per
il servizio è davvero non molto
di proprietà del consumatore in qualsiasi modo e noi
provato davvero molto difficile da mantenere il
dettagli della sua attuazione da
fuoriuscita nel consumatore che è
in realtà è piuttosto difficile su JVM e si ferma
la JVM non è buona a questo jsr 291
è un po ‘come guardare questo tipo di
cosa in osgi ma in pratica lo è
finì per non essere un grande affare anche se
il fatto che non stavamo rilasciando questo
probabilmente il mondo ridurrà la quantità
di cose folli le persone hanno fatto con il codice
e così abbiamo costruito questo tipo di ecosistema
intorno a questa roba che sembrava tipo di
bello lo abbiamo reso davvero facile da scrivere
test funzionali per i servizi di
scrivendo quello che siamo essenzialmente come unità
test dell’API del cliente e poi noi
ha scritto un modo per catturare le risposte del servizio
e tipo di violino con numero casuale
generatore di semi ed essere in grado di
ripeti la conversazione in modo relativamente
modo semplice e che in realtà ci ha dato un
tonnellata di leva in termini di qualità e
anche essere in grado di schierarsi molto velocemente
senza preoccuparsi troppo e come parte di
questo ci è venuto in un modo molto semplice
per esprimere essenzialmente quello
in particolare ottenere il repo dipende dai test
che sono in un altro repository git di quel tipo
di cadde da questo lavoro e ne abbiamo fatto un po ‘
lavorare intorno a rendere le cose tipo di
aggiornabile su un sistema live e e
anche una delle cose che abbiamo
davvero faticato
Non so con quante persone lavora
cliente come siti web pubblici
ma i test di regressione sono un po ‘grandi
trattare in particolare nel nostro caso perché noi
ho una finestra così stretta ogni giorno
pensa se qualcosa va storto durante
quella volta non va bene e cose simili
tipo di lavoro al selenio, ma noi abbiamo
davvero faticato con come evitare
pagando solo gruppi di persone per testare il
sito manualmente e una cosa che è venuta
fuori di questo è stato lo stesso test funzionale
che potrebbe essere scritto semplicemente
annotandoli in una convenzione
puoi davvero emergere da tutto il
codifica l’insieme di test che fa una bella
lavoro dignitoso di tipo rapido test
questo è due uomini alla fine ed è stato gentile
di eccitante abbiamo anche finito per fare un
un sacco di lavoro in giro solo per automatizzare il
processo di aggiornamento al più recente
versione di tutte le librerie condivise e
abbiamo davvero iniziato a diventare
tipo di agricoltori compilatori che non ero
abbastanza in attesa e mi piacerebbe
potrebbe andare più nel dettaglio su questo
roba perché questa è la parte difficile di
scrivere codice libreria in Java quale I
non ho sentito nessuno parlare di a
molto tempo ma ci sono cose come
fragili classi base e in realtà io
penso che sia Scala e Scala è pari
peggio e ho ho sentito una sorta di
occasionalmente nel corso degli anni su come
Google sta spendendo moltissimo
risorse che compilano tutto il codice tutto il
tempo e ora ho un’idea molto migliore
di un certo motivo per cui lo fanno
non intuitivo e fragile in un modo
si potrebbe pensare che non sarebbero
ed è un po ‘il lato oscuro di
la JVM a mio avviso e cose simili
C ++ e c’era una specie di altro
componente a questo che si è rivelato essere
piuttosto importante che sta usando
Zookeeper e Zookeeper Ho sentito
vieni un paio di volte già oggi
guardiano dello zoo se non lo fai se non l’ hai fatto
usato è doloroso usarlo prima ma
deve essere assolutamente il massimo
contributo significativo alla distribuzione
calcolo per
mortali certamente per un po ‘è un
tipo di questa directory distribuita
sistema che ha tipo i trigger e
garanzie e sì io non sono un guardiano dello zoo
esperto ma ciò che amo di Zookeeper
è che la sua API è essenzialmente molto
ben costruito per impedirti di farlo
facendo qualcosa di stupido e tutti io
conoscere il cui approccio è davvero infastidito da
l’API fino a quando non si rendono conto che è
in realtà ogni cosa è
esattamente come è per una ragione che
è una specie di buona funzionalità di un’API ma
prendendo la decisione di tipo di avere
guardiano dello zoo ovunque quello che è diventato
possibile è improvvisamente questa coordinazione
tra i nostri servizi e i nostri clienti
in modo che potessero essenzialmente configurare
stessi automaticamente avviando
semplicemente sapendo come trovare
guardiano dello zoo in qualsiasi ambiente, sia
è il tuo computer portatile di sviluppo o alcuni
macchina scenica o produzione funziona tutto
lo stesso la convenzione è completamente
standard e quindi le cose funzionano da sole
quindi ad esempio quale URL fa il servizio
vivere alla fine non è in realtà
qualcosa che deve riguardare l’utente
delle API possono avere bisogno di sapere che
e deve essere facile da impostare, ma
in termini di essere in grado di rapidamente
fare qualcosa e anche farlo essere una specie di
prevedibilmente lavorando allo stesso modo su tutti
questi diversi ambienti è stato
abbastanza sorprendente e perché è possibile ordinare
di iscriversi per le modifiche a Zookeeper
diventa semplice se è necessario
fare una sorta di cambiamento di configurazione globale
a tutto se conosci per una varietà
di ragioni non succede tutto questo
spesso ma quando ne abbiamo bisogno è un po ‘
fantastico quindi finisce per essere questo
livello di riferimento indiretto che è estremamente
potente rispetto al tipo di più un altro
Approccio primaverile credo che ci permetta anche
fare una sorta di interruttore è un modo
per dire a tutti i clienti di fare
qualcosa senza di loro necessariamente
dovendo
qui per senza il servizio
stanno parlando di essere necessariamente in piedi
e così nel tempo abbiamo trovato questo
davvero abbastanza potente in termini di genere
di partizionare le preoccupazioni attraverso il
persone diverse che hanno una certa importanza
e alla fine provando a farlo è
tipo di facile da fare il lavoro
che stanno cercando di fare quale è molto
spesso costruisci un’applicazione che dipende
sui dati quindi ci sentiamo abbastanza bene
su cosa abbiamo costruito questo stadio e
abbastanza felice e nella parte posteriore della mia mente
Ho una visione simile a quella di Steve
dicendo questo ti ha completamente torto
le persone sono pazze e il motivo è questo
Steve si sente in quel modo grazie o almeno
parte della ragione è il suo tipo di
riassume questo ragazzo che Peter Deutsch ha messo
insieme questo piuttosto famoso otto
errori del calcolo distribuito e
i ladri sono in un bel po ‘su come il nostro
PC, uno per uno, viola questi così
Ho provato a farli passare attraverso
questo sistema e cerca di capire come
come questo approccio stava facendo e in realtà
Sento che mi sento come l’affidabilità
è in gran parte risolto attraverso il futuro
mette un po ‘di peso sul programmatore
ed è possibile che mi manchi il punto
anche se il futuro è particolarmente naka
e immagino che ora siano nella Scala
la libreria standard è veramente tranquilla
sofisticato in termini di come è possibile
rappresentare i fallimenti e portare i fallimenti
attraverso il sistema e mi sento abbastanza bene
su come il modo in cui è sfruttato così numero
due è la latenza è di nuovo zero e mi sento
come i futures nascondono quel fatto o lo fanno
non è una preoccupazione quindi ho intenzione di audacemente
affermare che questo è stato risolto ed è stato con
il suo infinito è un altro di questi
cose che è una specie di
e ci arriverò a quel punto
un po ‘più di dettagli sul tipo di
parte
ma alla fine per me questo si sente come
molto più problema di progettazione di servizi di un
Problema RPC e se dovessi creare servizi
ha senso che non è così grande
è evidente che la rete è sicura
sì qualunque cosa significhi nel moderno
a quanto pare l’età non è precaria, ma la rete
quello in effetti è stato aiutato da un guardiano dello zoo
siamo molto fuori, infatti, siamo stati in grado di farlo
usa il custode per fare cose come tenere
tipo di credenziali condivise in un certo modo
modo più sicuro se non assolutamente sicuro
allora poi quello che ho visto in passato
che di solito è in un mondo di testo semplice
file leggibile da qualche parte nel file
sistema quindi mi sento bene su questo
e sicuramente sentirsi bene che ci sono
un sacco di opzioni che abbiamo il
la topologia non cambia in modo che tu lo sappia
questa è l’ idea che presumi
la rete sta andando sempre esattamente
essere il modo in cui è ora e ha lo zoo
ci ha già aiutato un bel po ‘
lì e l’idea di avere questo
configurazione a cui è possibile abbonarsi
quindi mi sento abbastanza bene a riguardo e
c’è un tipo di amministratori
simili ce ne possono essere tanti
gli amministratori di cui hai bisogno, ma non c’è
solo uno zookeeper almeno uno che
conta e quindi mi sento un po ‘ coraggiosamente
va bene così anche il costo del trasferimento
zero è un altro tipo di una sorta di esso è
sicuramente il caso che quando hai un
molte cose tipo sulla tua mente e
stai cercando di muoverti velocemente e ottenere molto
fatto che si dimentica su di esso fondamentalmente
è impossibile per la maggior parte delle persone
tenere a mente quante cose effettivamente
costo in termini di rete e cosa sono
i diversi ordini di grandezza
differenze tra fare qualcosa di gentile
di bordo e fuori bordo quindi ci sono
problemi con questo tuttavia è una specie di
catturato con speranza nel design del servizio
e in pratica non è stato un grande
problema tranne in un caso particolare e
quindi lo chiamerò coraggiosamente risolto
in fretta
probabilmente nessuna sorpresa in realtà penso
l’omogeneità della rete non è un
problema tanto anche se questo
probabilmente ha molto a che fare con il fatto
che stiamo gestendo il nostro centro dati
e noi quando facciamo cose come spostare cose
in ec2 ne abbiamo una discreta quantità
controllo su come ciò accada, così è
vagamente risolto quindi sospetto ancora il
Steve non è convinto da questo e da lui
ha scritto un documento molto interessante chiamato
convenienza sulla correttezza che è
ovviamente l’obiettivo è bene così
in pratica l’arte il suo argomento è che
il nostro PC è davvero molto di più
convenienza e correttezza e penso
quella è la vera correttezza
incredibilmente difficile la maggior parte del tempo e
Mi dispiace di aver preso solo un piccolo sguardo
cosa servirebbe per fare una piccola parte
del problema che stiamo guardando
corretto ed è un po ‘di a
distrazione ma questa è questa cosa che
continua a venire per me e così ho pensato
Lo porterei in pubblico su tutto
i diversi modelli di dati in un sistema
e quanto spesso le persone tagliano gli angoli qui se
pensi solo al molto semplice
tipo di architettura a tre livelli e come
dati in genere del caso estremo se tu
volevo occuparti di ogni possibile caso
sapere che i dati sono modellati in a
database e viene caricato in a
servizio e molto spesso deve essere
trasformato in un leggermente diverso
modello diverso in modo che possa essere
calcolato contro in modo ragionevole e
allora ha bisogno di passare da quello
servizio e c’è una rete un’altra
modello per rappresentarlo sul filo e
quindi viene prelevato da un cliente e
tradotto possibilmente in un dato cliente
modello dove potrebbero esserci di più
calcoli che sono fatti contro di esso
e poi finalmente viene esposto all’esterno
il cliente in ciò che può essere completamente
ancora diversi modelli di dati modello molto
spesso vuoi mantenere i dati del cliente
modello privato in modo da poterlo cambiare e
quindi modello di dati pubblici
vuoi essere molto più cauto
cambiando così sì che intendo giusto
anche se ci sono cinque modi diversi di
che rappresenta gli stessi dati che nel
caso estremo hai bisogno di pensare
su e in cose come la RPC
quadri del passato alcuni di questi
sono stati generati da software da alcuni
descrizione e penso che probabilmente sia giusto
numero di persone nel tempo ha avuto
ho cercato di capire come possiamo usare
ereditarietà e generazione di codice e
schemi diversi per semplificare tutto questo
e una specie di mia mia conclusione è quella
questo è praticamente impossibile
nel caso generale non può essere fatto
in un modo che è effettivamente utilizzabile noi
anche se abbiamo provato così sostanzialmente questo
roba tipo di opere in pratica ma in
la teoria è completamente rotta e lo è
solo che gli affari vanno avanti e così io
sosterrebbe che stiamo ancora facendo un
coppia cose che sono un po ‘
diverso che conta davvero così il
l’assenza di matrici generate a macchina
risulta essere piuttosto importante
gente così tu sai che questo era il
caso nella nostra miniera è stato un caso in RPC
e ricordo che effettivamente stavo guardando Rmi
circa dieci anni fa e avendo appena no
indovina come funzionava questa roba e non come
era un po ‘sorprendente che potesse esistere
essere questo codice che assolutamente tu
dipendeva da esso era sorta di generato e
ha dovuto funzionare perfettamente ed è stato
difficile ottenere qualsiasi tipo di coerenza
descrizione di cosa stava cercando di fare
o e così non abbiamo adottato questo approccio
fondamentalmente stiamo usando un tipo di
eredità a Scala per mescolare in un sacco di
comportamenti diversi e cercando di fare
in modo che tu effettivamente fornisca tutto
il codice che conta ed è tutto
accessibile a te e in ogni punto
tipo nello stack c’è il
opportunità di fare un qualche tipo di
personalizzazione se è necessaria la maggior parte del
tempo non lo è
e quel tipo di legame in ciò che io
stava chiamando la programmazione orientata all’ambasciata
dove piuttosto che avere questi mozziconi
essendo questa cosa davvero stai pensando
del cliente è parte del servizio e
allora noi proteggiamo in giudizio ce ne sono molti
indiretta e come ho menzionato il tipo
il supporto del sistema per i guasti è carino
incredibile e penso che siamo solo solo
iniziando a capire cosa significa
tipo di mondo Scala, ma c’è un
molto che fa schifo sul nostro PC e su di me
pensa che alcune cose siano andate via
in un certo senso e parte di esso è ancora qui
oggetti remoti come quello che ovviamente ero
aveva tolto l’orientamento all’oggetto
nel mondo la maggior parte delle persone qui sono
probabilmente troppo giovane per ricordarlo
ogni singola cosa era orientata agli oggetti
e tutti questi oggetti erano mutabili
e questi incredibilmente complicati
i programmi sono stati creati e parte di quello
il contratto era che potresti non farlo
cura dove erano gli oggetti se fossero
locale se fossero remoti e penso
questo ha ragione nell’essenza del
affermare che il nostro pc lo fa schifo
non funziona, naturalmente, non penso
questo è quello che stiamo facendo e fallimenti
erano piuttosto orribili e oggetti
la potenza è qualcosa per cui ci battiamo
ma è davvero molto difficile e molto
i veri problemi che hanno gli altri
avuto o richiede cose come le transazioni
che di nuovo sono difficili nel caso semplice
e molto rapidamente diventano quasi
insopportabile in un sistema distribuito
per fortuna non è un problema come colpa
molto spesso quindi abbiamo ignorato tutto questo e quello
era abbastanza facile ed è stato sentito come
c’è molto successo, infatti, dietro
in aprile abbiamo misurato quanti servizi
avevamo creato un senso di colpa e ce n’è
circa un centinaio di sviluppatori che creano
servizi a un ottimo prezzo è in realtà
oltre 300 ora e sono tutti un po ‘di
seguendo questo modello e tutto è
funziona piuttosto bene con un tipo di
eccezione clamorosa
e questo è fondamentalmente come se fosse
tutto quello che hai è un martello tutto
inizia a sembrare un chiodo quindi non c’era
un po ‘di angolo del mondo Gil
che non stavo prestando molta attenzione
a come probabilmente dovrei avere intorno a come
i lavori in lotti sono stati fatti e mi piacciono davvero
gran parte del tipo di modello di gilt è
intorno alla personalizzazione e sappiamo molto
su cosa guardano i nostri utenti e cosa
a loro piace e e perché abbiamo
questo tipo di scarsità un modello che è
in realtà davvero importante perché le persone
piace venire al sito web è molto
facile per le persone che probabilmente comprerebbero
qualcosa in realtà non vederlo e
c’è un sacco di lavoro algoritmico
può essere fatto per rendere quella situazione
meglio e molto di questo algoritmo
il lavoro algoritmico avviene in lavori batch
e questo tipo di legame torna nei due
tipo di cose che non ero completamente
confortevole e questa idea del
legge dello strumento che è fondamentalmente il
nome del fenomeno quando quando tutti voi
avere è un martello e quindi cosa fondamentalmente
quello che è successo è che erano questi
i clienti erano così facili da usare e loro
funzionerebbe solo dovunque ed è stato
le persone banali stavano essenzialmente facendo
l’equivalente di un enorme lotto ridotto
lavori che fanno chiamare il servizio e loro
non ha davvero considerato cosa stava succedendo
che in questo caso era come martellare
morte on line produzione rivolta al cliente
servizi e tipo di sfruttare il
potere dei computer per abbattere il
sito e quindi sai davvero com’è
questi clienti si occupano solo di estrarre dati
e questo è il mio significato
quello che è circa come una delle cose
di cui la gente parla è una specie di
gli aspetti negativi del servizio orientato
l’architettura è che tu perdi il
capacità di fare unioni e database molto
se sei davvero una paratia dei tuoi servizi
che le persone tendono a pensare è un bene
idea quindi alla fine devi partecipare
il livello di servizio e questo ha il suo
i problemi non sempre si ridimensionano molto
bene
e quindi se davvero lo desideri
scala su una modalità batch sei piuttosto che
tirando i dati per il codice che si desidera
spingere il codice ai dati così quando
ci sono tonnellate e tonnellate di dati che lo spostano
è costoso, il codice è molto
più piccolo e questo è un po ‘cosa
MapReduce è tutto e griglia
calcolo e in questi giorni scintilla è questo
cosa che funziona su Hadoop è così
tutto su questo ed è carino
interessante, ma non ci siamo bloccati
un punto in cui sembra di calzini
o forse perché è il nostro pc che sono
Non sono sicuro, ma stiamo cercando di pensare
tipo di una prossima generazione di così e cosa
il servizio inizia davvero a guardare
come per noi e penso probabilmente altro
le persone e ci sono molte tendenze
penso che siano piuttosto interessanti e
rilevante e questa idea che il
il modello di base per i database è un male
idea stiamo iniziando ad abbracciare carina
praticamente ovunque possiamo costruire
alcuni strumenti attorno a questo e c’è
cotone non siamo purtroppo in un
posizione a usato atomico anche se lo desidero
che eravamo perché penso che sia gentile
di sorprendente ci siamo anche mossi enormemente
verso i flussi di eventi come fondamentalmente gentili
di sourcing di eventi come modo di rappresentare
il modo in cui il sistema o fondamentalmente il modo in cui i dati
sta cambiando nel tempo e ovviamente
l’elaborazione in batch è diventata enorme
l’architettura lambda è una specie di importante
a noi Nathan Mars tomba e ha dato un
stupendo chiacchierare l’anno scorso qui a riguardo
idea che non entrerò troppo e
c’è una query di comando pattern
separazione delle responsabilità lo penso
sta per cui è fondamentalmente
identificando che in realtà un sacco di volte
importa parecchio separare il
lettura da servizi di scrittura e
la scrittura è abbastanza rara spesso mentre
la lettura potrebbe farti sapere in un lotto
processo per esempio la lettura sarebbe a
evento enorme che accade miliardi
di volte e così sai dove siamo
iniziato in modo gentile da qui il
cosa semplice e ora siamo in realtà
finendo per guardare i servizi che iniziano
sentire qualcosa di simile
che non mi sembra semplice ma è così
così è il tipo di dove siamo in termini di
come puoi davvero creare cose simili?
ridimensionare e fare tutte le cose che ti servono
fatto che sai che i dati devono andare
nel data warehouse e deve essere
disponibile per lavori batch e in tempo reale
i dati devono essere soggetti a complessi
elaborazione dell’evento e fatto molte cose
devono essere pre-elaborati in modo che i servizi
posso cercarli e voglio dire che questo è
fondamentalmente sai cosa è solo un singolo
il servizio inizia a sembrare mentre a
per noi almeno un anno fa era il servizio
come un servlet container in esecuzione su Jersey
e che forse aveva un database dietro
e si spera non così siamo sì è
tipo di un tempo eccitante cosa c’è
interessante su questo modello è che noi
in realtà non devi rompere nessuno dei
i clienti di implementare questa roba che
parte sembra funzionare abbastanza bene ma
comunque è tutto ciò che ho
avere un paio di minuti per le domande corse a
un po ‘sotto il tempo che speravo
a cui va bene, sì, ne ho un po ‘
domande giuste oh vediamo, potresti
hanno ridimensionato il sistema Ruby on Rails di
solo cambiando l’architettura e non
la lingua / tecnologia quindi è difficile
per conoscere la risposta a questa domanda per due
ragioni per cui uno non ero lì, c’è un
molte persone parlano di Twitter
potrebbe essere ridimensionato penso che sia davvero rubino
non è un runtime molto efficiente
non è nemmeno sulla JVM e così sono io
penso che non è una questione di noi
l’abbiamo fatto scalare tanto quanto noi
voglio pagare i soldi per ridimensionarli
sento che ne è valsa la pena
e anche e penso che lo sai anche tu
le prestazioni non erano l’unica cosa come noi
stavano ridimensionando l’organizzazione al
tempo abbiamo trovato Ruby difficile da scalare
attraverso come hai una sorta di più squadre
cercando di lavorare insieme e si erano
so che penso che collettivamente fossero grandi fan
di programmazione typesafe come un modo per aiutare
puoi dire di più sull’emergente
test di regressione sì, in realtà siamo
mettere insieme un discorso su quello che c’è
un po ‘di interesse per questo ha
è stata una specie di lotta in corso per noi
come ho detto abbiamo un processo
internamente quando qualcosa va
sbagliato che è rivolto al cliente, abbiamo un
riunione settimanale che è fondamentalmente
parlare di ciò che era la radice
causa e parlare di cosa è andato storto e
fondamentalmente l’obbligo ora che esce
di questo sei tu se sei un po ‘
sul gancio per uno di questi problemi voi
non solo devi aggiustarlo ma anche tu
devono fornire l’automazione
avrebbe preso l’insetto se non del tutto
possibile come parte del processo di
riparandolo che è una di quelle cose
sembra ovvio ma è così
le persone non tendono a farlo davvero in un
modo impegnato e stiamo provando sinceramente
farlo in modo impegnato e il
l’altra cosa è che ci siamo trasferiti
davvero cercando di allontanarsi dal tipo di
persone QA dedicati e una sorta di
ethos interno attorno al decentramento
il problema è che cose come un globale
i test di regressione dicono che sono questi
cose intrinsecamente centralizzate e noi
ho provato a costruire una squadra che sarebbe sorta di
gestire la biblioteca della regressione globale
test e non ha funzionato molto
bene per una varietà di ragioni e così
fondamentalmente abbiamo deciso piuttosto che provare e
centralizzare una squadra per fare ciò che facciamo
è provare e avere il minimo assoluto
quantità di centralizzazione richiesta quale
era fondamentalmente una sorta di convenzione su
sul tagging e poi alcuni relativamente
macchine semplici che potrebbero
cerca attraverso il codice e Phi
tutti questi tag e assemblare tutto il
prova e li esegue e poi nel tempo
sai come la gente passa attraverso il
tipo di processo di risolvere incidenti che
quella libreria emerge e diventa più grande e
le cose che stanno effettivamente causando
le interruzioni sono le cose che siamo
in realtà scrivere test per e c’è
proprio come una convergenza verso la qualità I
pensa che l’altra cosa è che puoi
solo come un sistema diventa più grande io
pensa che puoi solo arrivare così lontano
test in tempo reale e così siamo anche noi
ora sto iniziando a salire su una specie di aa
molto più ambizioso modo di guardare
il tipo di dati clickstream in tempo reale
e altri dati di registro e centralizzati
registra i dati e cerca di rilevare le cose
che stanno accadendo che sono cattivi come
il più rapidamente possibile invece di provare e
prendere ogni cosa come esempio
lo sai per se stiamo guardando gli accessi
dall’utente agente se ce n’è
versione particolarmente strana di internet
esploratore o qualsiasi altra cosa che non lo è
il modo per vedere quella roba è in realtà
prendilo in tempo reale e poi prova e
risolvilo piuttosto che concentrarti su
testeremo tutti i browser
il tempo quindi facciamo qualche cross browser
test ma non abbastanza esteso a
prendere tutti questi problemi e ora è così
tipo di chiaro che dobbiamo tornare indietro
a un tipo di elaborazione degli eventi da catturare
quella roba va bene um ha fatto la gente Ruby
non portare alcun metodo di prova insieme a
il loro design della mappa hash quindi sì il Ruby
la base di codice esiste ancora a proposito
c’è un enorme codice di base e a
molto di questo è interno ed è
in realtà una base di codice di altissima qualità
ma nel dio santo oh mio dio siamo tutti
andando a morire momento di porting
tutto su Java cosa no
accadeva lo stesso grado di test
quello era successo in Ruby e quello era
deplorevole, penso che sia giusto dirlo a
allo stesso tempo penso che sia
per immaginare la quantità di pressione che
quella squadra era sotto come il business
era letteralmente in fiamme quindi sì, lo eravamo
sento ancora il dolore lì se lo sei
correndo vedi QRS con lo sfiato
cosa usi per la memorizzazione degli eventi, quindi io
non direi che penso sia giusto dire
che non stiamo ancora facendo che siamo
usando Kafka e stiamo usando coniglio e
ora stiamo praticamente prendendo molto
eventi da alcuni sistemi in Kafka e
quindi fondamentalmente facendo un’operazione ETL
in un data warehouse, ma è questo
super primi giorni e penso che ci sia un
molto interesse per quello stile e abbiamo
fatto alcune delle nostre implementazioni
con qualche successo misto ma il
eventi o cose che sono state fatte per acha
che immagino ora si sia trasferito in acha i
penso sia davvero interessante anche se io
non ho ancora un’opinione su come vorremmo
immagazzina quella roba per fare il
pubblico come il fatto che l’oratore
trolled l’ host di pista da quando mi è stato detto
Voglio fare un buon commento, no
pensa che quello che stai facendo va bene perché
il problema di cui stavo scrivendo è
la comodità è che conosci RPC
è stato inventato per nascondere la distribuzione da
lo sviluppatore se torni al molto
primi scritti su RPC il punto di essere
fatto ed è in realtà nel testo di
questi scritti che dice oggi non lo facciamo
hanno sviluppatori di sistemi distribuiti
le persone non capiscono come farlo
quindi abbiamo così questi sviluppatori di librerie
se possiamo rendere la programmazione simile
scrivendo una biblioteca, poi siamo andati e tu
sanno che stanno spazzando tutto sotto il tappeto
quei problemi seri l’otto
errori e ordinamenti e causalità e
tutto quel genere di cose e questo è il
obiezione e chiaramente non stai facendo
quello perché stai pensando al
sistema distribuito e sai scrivere
in particolare come un sistema distribuito
fu con significativa ironia che io
capito che noi
era stato infatti bruciato proprio da quelli
problemi che sul batch ancora in fase di elaborazione
sì sì sì è necessaria la vigilanza e
e sì, ho lungamente concordato con quello
idea di non farlo apparire come locale
codice in modo tale da poter effettivamente annullare il
codice e trova ovunque ciò che stava facendo
una chiamata remota ed è difficile tenerla
tipo di diligenza, sì, sì, c’era
domanda lì sì come lo costruisci
molti servizi se ho capito bene
stai usando le lezioni di bacio skala
e fornire un client-server composto
comunicazione sì, qual è il tuo
l’esperienza è stata nell’impatto di
accoppiando i tuoi sistemi come te
prova e cambia come aggiungi nuovi campi dati
tipi in quei tipi di cose proprio così
la domanda riguarda i doveri
accoppiando come funziona usando il caso
classi per condividere dati tra il
clienti e server, quindi sì, ci sono
Gotchas anche se funziona abbastanza bene se
aggiungi campi e molto spesso quando tu
aggiungi un campo devi renderlo un
campo opzionale e quindi i client
che sono là fuori sono preparati per lo sono
pronti a ignorare i dati che non hanno
capire e in pratica funziona
abbastanza bene anche se molta gente se ne va
attraverso un fallimento cognitivo che
li porta a cancellare qualcosa ma il
prova che è davvero molto veloce
dopo aver detto che è diventato chiaro
che dobbiamo essere davvero veramente
aggressivo sul tentativo di aggiornare
cose il più rapidamente possibile se noi
lasciare le cose intendo che stanno andando bene
non ci sarebbe motivo di aggiornarli
diverso da quello che è solo una sorta di politica di
aggiornando costantemente tutto al
più rapidamente che possiamo prendere in considerazione
passando a tipi di dati primitivi così
che puoi far sì che un server possa iterare e
spingere fuori nuovi dati senza tutto il
i clienti devono strofinare solo per raccogliere un
oggetto tipizzato staticamente um sì, il
la domanda è che pensiamo che io indovino
cosa permetteva solo i dati
cadere senza il più stretto
avvolgendo in modo che non si deve
rivedi tutti i clienti ogni volta, così
sì, era come iniziare
Voglio dire che è fondamentalmente un tipo sicuro e
tipo approccio non sicuro e sì, abbiamo trovato
è difficile mantenere quel codice che fa
lavoro puoi farlo in quel modo ma per tanto tempo
come abbiamo mantenuto la retrocompatibilità
dei dati che non è in realtà non
così difficile in pratica finché tu
non eliminare le cose e quindi aggiungi
le cose con attenzione non è stato
necessario aggiornare quelli remoti
i clienti anche se noi scegliamo di tipo di
per altri motivi ma più correlato a
dipendenze con dire la configurazione
sistema quindi i dati effettivi
compatibilità ok ci sono più domande
Eric ci sarà, ma per favore, facciamolo
grazie al nostro relatore, grazie
Please follow and like us: