
[Musica]
grazie mille
e quindi di nuovo ciao a tutti, sono Dustin
Whittle e io sono uno sviluppatore avvocato che
lavora sulla piattaforma di sviluppatori di ubers dove
Aiuto gli sviluppatori di terze parti e i nostri
i partner costruiscono esperienze commoventi e così via
Volevo parlare un po ‘di
un paio di modi in cui usiamo JavaScript
le loro opere di ingegneria penso in ordine
per raccontare correttamente la storia è necessario
capisci un po ‘ della scala
sull’ambiente in cui siamo cresciuti e
poi parlerò di come costruiamo
micro-servizi back-end con JavaScript
come costruiamo il nostro web front-end
Proprietà su come visualizziamo i dati
capire meglio le città e poi come noi
esporre un’API esterna per lo sviluppatore
piattaforma e così ancora una volta come una questione di
le pulizie si prega di fare domande
attraverso l’ app sto risparmiando un po ‘di tempo a
la fine di passare attraverso tutti così
per favore sentiti libero e il tuo feedback è
molto apprezzato quindi per favore sii
inesorabile e dare tanto feedback quanto
possibile e quindi probabilmente sai uber
ormai spingo un pulsante per fare un giro e così
la missione delle bave è davvero da fare
trasporti affidabili come in esecuzione
acqua ovunque e per tutti e dentro
solo otto anni ci siamo riusciti
in realtà uno dei più rapida crescita
aziende che sono mai esistite e che siamo
in sei continenti in 73 paesi e in
più di 470 città e abbiamo fatto che
collaborando con più di un milione
e mezzo partner di guida attivi che su
consegna giornaliera di oltre cinque milioni
viaggi e lo abbiamo fatto in meno di otto anni
anni e lo scorso luglio abbiamo completato i nostri due
viaggio di miliardi e quindi se ti concederti
per un secondo, possiamo prendere un
un po ‘di un’occhiata all’evoluzione di
l’ app uber perché davvero questo ha
stato alimentato da JavaScript sotto così
se viaggi fino al 2009 questo è
praticamente con l’aspetto di Uber
Hai avuto una mappa e si aveva un pulsante che
detto prendimi piuttosto semplice
piuttosto scheletrico
e poi nel 2012 ne abbiamo pubblicato un altro
versione dell’app che ha aggiunto di più
caratteristiche come ricerca di posizione e A’s
stime e la possibilità di selezionare
diversi prodotti come piscina uber
uberx uberx et cetera in fondo e
poi l’anno scorso abbiamo rilasciato una nuova versione
e lo abbiamo davvero aggiornato per aggiungerlo
acceleratori di giri programmati per noti
posizione in modo da poter avere una corsa in cima
e poi un feed interattivo solo per
citarne alcuni ma come puoi vedere l’Ebor
l’app si è evoluta nel tempo proprio come il
società nell’organizzazione di ingegneria
si è evoluto e così oggi puoi farlo
effettivamente prendere un’esperienza giro uber
lungo la strada puoi suonare la tua musica
con
e Dora puoi vedere locale
raccomandazioni con Foursquare e tu
può anche ordinare cibo con ubereats
e molto più direttamente da Google
app ma non è solo in auto
sono stati anche choppers e barche dal gattino
siti crema anche per alberi di Natale
non stiamo solo spostando le persone, ma lo siamo
spostare anche le cose e l’uber
esperienze ripetute in molti modi e
questa è davvero una storia di formazione
su JavaScript quindi parlerò un po ‘
un po ‘ di come siamo arrivati e così questo
è una visualizzazione di Capodanno
dal 2013 al 2017 e quindi se proprio
guarda questo è Singapore e da
a Capodanno tra il 2013 e il 2017
ogni anno e così puoi vedere la scala
la crescita anno su anno e giugno
Nel 2010 abbiamo lanciato la nostra prima corsa a San
Francisco e entro maggio 2012 abbiamo colpito a
milioni di corse in tutto il mondo e abbiamo colpito a
miliardi di corse entro febbraio 2015 e oggi
esistiamo in più di 73 paesi e
quindi solo se guardi la scala sul
cronologia di questo è davvero abbastanza veloce
e per capire perché utilizziamo JavaScript
in certi modi e come abbiamo iterato
su di esso devi capire la scala
la crescita e così abbiamo assunto molto
ingegneri hanno scritto un sacco di software
e la realtà è quando lavori
in un’azienda di ingegneria iper-crescita
come uber sembra quasi questo
l’immagine che stai muovendo super veloce ogni
settimana stiamo lanciando nuove città milioni
di persone stanno usando i nostri sistemi in realtà
tempo e non possiamo semplicemente fermare il nostro
sistemi anche per un minuto a significare per
un minuto di manutenzione è un pò
come cambiare le ruote della macchina
guidando 80 miglia all’ora
e quindi siamo organizzati con programmi
e gruppi di piattaforme e così sotto il
il modo più semplice per pensare a questo è
i team del programma sono costruiti sopra
piattaforme tecnologiche i nostri team di piattaforme
costruire la base tecnologica su cui
i team del programma possono costruire il cliente
prodotti ma siamo tutti team di prodotto
è solo se il cliente è
sviluppatori esterni o interni e così via
investiamo molto nella costruzione di questi
piattaforme che consentono agli sviluppatori di
itera velocemente e quindi costruisci a
piattaforma che interagisce con il reale
mondo come un altro livello di
complessità e opportunità pure
perché non puoi controllare veramente cosa
succede nel mondo reale il fisico
la complessità dei mondi è infinita ma noi
ha solo 64 bit e 500 millisecondi
SLA e quindi ci sono spesso cose che noi
non posso davvero vedere e questo entrare nel
la tecnologia sotto le persone usa il nostro
tecnologia per fare soldi per andare dove
hanno bisogno di andare e quindi non c’è spazio
tempo di pausa, ecco perché noi
sospira disponibilità e scalabilità finita
tutto il resto e così per fare questo noi
in realtà ha 15.000 repository che
la potenza oltre i 3400 microservices
che abbiamo pubblicato più di 260 di
tornano alla comunità open source
e probabilmente conosci l’Hoover
cavalca dopo che l’abbiamo letto, ma noi
in realtà hanno più di 10 cellulari
applicazioni e oltre 250 web
applicazioni e un grande pezzo di questo
tecnologia di base dietro questo è
JavaScript e quindi capacità di scalare le orecchie
è venuto dall’alta velocità difficile
ingegneria insieme a team autonomi
e domini e così abbiamo progettato
servizi di base progettati
per alta scala e durata e noi
concentrarsi sulle astrazioni sviluppatore che
consentire agli sviluppatori di essere produttivi e così
siamo un ingegnere poliglotta
organizzazione e usiamo alcune lingue
in produzione e così oggi ci stiamo muovendo
verso andare e Java, ma ancora una volta questo è
stiamo arrivando all’età della storia di JavaScript
quindi parlerò di come noi
evoluto e raggiunto la scala con
JavaScript e alcuni dei motivi per cui
stiamo migrando in altre direzioni e
quindi usiamo Go Java nodejs e Python in
produzione oggi e questo è davvero un
ordine di preferenza ma parliamo di
come è iniziato veramente con
la libertà di scelta quando sei
crescendo super veloce stai assumendo molti
ingegneri che vuoi che siano come
produttivo il più velocemente possibile
Possibilmente tendono ad assumere i loro amici
una volta diventato popolare nell’open source
mondo in cui inizi a costruire una comunità
intorno ai tuoi progetti e così diventa
più facile assumere persone che lo sono
con la stessa mentalità che vengono dal tuo
cultura e così originariamente quando noi
abbiamo deciso di usare JavaScript che abbiamo realizzato
che era una pila singola per il fronte
fine del backend e lo ha fatto molto
facile da ripetere e quindi di nuovo ha un
semplice interfaccia di approfondita
documentazione che lo rende veloce
iterare e prototipizzare è asincrono
agile e flessibile, quindi ci ha permesso di
evitare le sfide di concorrenza nelle prime fasi
e aveva anche una maturità sempre maggiore
ecosistema di moduli ma oggi lo usiamo solo
node.js per le nostre applicazioni web e così via
perché non è così presto come se fosse fantastico
le aziende web uber sono nate come PHP in
il mio gabbiano era in realtà
contratto con un mucchio di commenti
in spagnolo e poi all’epoca no js ‘
siamo venuti molto presto adottatori
e GU
infatti prototipiamo la prima versione
sul nodo 0.2 e stavamo eseguendo il nodo in
produzione a 0.4 e quindi è iterata
lungo è venuto un lungo cammino da allora a
un punto in più i soldi si muovono attraverso il
ubers app e il nostro nuovo JSF e qualsiasi altro
nuova app JavaScript per porte nel mondo
fino a poco tempo fa PayPal migrava al nodo
quindi ci hanno sorpassato, ma perché
nodo nodo ha alcuni punti di forza di base che
prestarsi bene per il nostro caso d’uso prima
gestisce l’ I / O asincrono con a
ciclo di eventi a thread singolo non bloccante
è particolarmente adatto per
costruire servizi distribuiti che fanno
molte chiamate di rete sottostanti e nodejs
e più javascript in generale è
eccellente per una rapida iterazione di nuovo facile
per prototipare qualcosa e poi a
iterare su di esso con una grande squadra e poi
tre ha un grande ecosistema di moduli
non devi costruire tutto il
componenti te stesso c’è già un
grande comunità lì che puoi costruire
in cima a un pool di talenti da assumere da
bene come moduli esistenti per uso comune
casi e così in tutto questo discorso lo faremo
parliamo di quattro modi in cui siamo
usando JavaScript oggi sul nostro
piattaforma di mercato per fornire il nucleo
servizi sotto di nuovo abbiamo un
architettura che consiste di più di
3400 microservizi un centinaio di quelli
si riferiscono al flusso principale del viaggio così giusto
premendo un pulsante e ottenendo un passaggio da
A a B è un centinaio di servizi in cima
sotto e poi parleremo un po ‘
un po ‘ sulla nostra piattaforma web e su come
costruire proprietà front-end con reagire
ed esprimi e poi come stiamo meglio
capire le città visualizzando i dati
e poi finalmente parlando di come
chiunque può creare applicazioni attraverso
la nostra piattaforma di sviluppo ma stiamo investendo
fortemente nella produttività degli sviluppatori e così via
abbiamo investito in un sacco di diversi
cose e un mucchio di piattaforme diverse
team che rendono facile per gli sviluppatori
avere successo dal primo giorno a
Hoover e quindi è veramente inizia con la
infrastruttura di base questo è il nostro calcolo
archiviazione di rete i nostri ambienti cloud
o ambienti on-prem e si sottrae
questo via in modo che gli sviluppatori possano concentrarsi
a fare magie e poi abbiamo le nostre
team di esperienza degli sviluppatori che questo è
davvero concentrato sullo strumento di sviluppo
catena quindi come è facile costruire un app
e distribuire la produzione e poi come te
necessario quando aggiungi dipendenze come te
bisogno di capire interagire con gli altri
servizi abbiamo il nostro mercato
piattaforma questo è l’unico gateway per
tutti i 3.400 micro servizi sottostanti
e poi in cima a quello abbiamo il nostro
componenti esterni abbiamo una rete
team di piattaforme che mantiene a
performante sito sicuro e affidabile
fondazione abbiamo la nostra piattaforma mobile
squadra focalizzata sull’abilitazione
migliaia di sviluppatori mobili da costruire
applicazioni performanti di livello mondiale e
allora abbiamo il nostro team di piattaforme di sviluppo
che si concentra su di esporre tutto questo
funzionalità al mondo esterno e
quindi abbiamo questo valore culturale da lasciare
costruttori costruiscono e questo significa veramente
non bloccare le persone a dare loro gli strumenti
devono avere successo e così quando
si vuole lanciare un nuovo servizio in questo
caso un servizio micro javascript su uber
si invia una proposta con una richiesta di
commenta l’intero lavoro di ingegneria
ti fornisce una descrizione di base di ciò che tu
vuoi costruire la timeline associata
con esso eventuali problemi di sicurezza e nessuno
preoccupazioni operative e quindi si inizia
con impalcature con questo scopo costruito
intorno al nostro staff quindi risolviamo un sacco di
problemi per te e se usi la nostra arte
vogliamo rendere i nostri strumenti così buoni
saresti sciocco a usare qualsiasi altro strumento
e così costruendo il meglio possibile
strumenti si ottiene l’opzione più ampia perché
è il più facile che ti permette di essere
il più produttivo e poi lo schierate
con un’infrastruttura standardizzata e così via
usiamo i playbook per operare
rendere operative le nostre squadre su vasta scala e
Parlerò un po ‘ di questo più tardi
ma se si pensa a quello che serve per
costruire un’applicazione web che è utente
di fronte oggi molto di questo è più di
solo l’ interfaccia JavaScript è come
gestisci risorse e guadagni in contanti
come gestisci le comunicazioni
internamente sia tramite HTTP
o canale parsimonioso come fai tu
gestire l’internazionalizzazione delle traduzioni
la rete dati calcola la lista
va avanti e avanti e quindi non ho intenzione di
parliamo di tutto ciò oggi vado
per parlare di come si costruisce su di esso
e così la nostra piattaforma di mercato al suo
il core è abbastanza semplice abbiamo a
Applicazione iOS e Android che parla
su un endpoint HTTP o una serie di HTTP
endpoint che parlano di sottostanti
servizi e ad un livello veramente alto
i servizi sembrano così forniti
hai bisogno di avere l’autenticazione
la capacità di abbinare l’ offerta e la domanda
prezzi ecc. ma realisticamente sembra a
molto come questo abbiamo di più
3.400 micro servizi che costruiscono il
ingegneria di ubers
è giusto e quindi questo è uno dei
cose di cui parlerò tra breve quale è
come fai a capire quale servizio fa
cosa succede quando è complicato come si fa?
ottenere visibilità sui problemi di prestazioni
e distribuito applicazioni e così via
ancora una volta la nostra API sul mercato è davvero la
singola API che applicazioni esterne
parlare con e questo è come il gateway per il
oltre 3400 sottostanti micro servizi
e così esponiamo oltre un migliaio di HD
endpoint che lo rendono facile per il terzo
le parti si scusano per i nostri team del programma
costruire in cima, ma anche è un singolo
posto a per il monitoraggio e
documentazione per renderlo facile
scopri i servizi e capisci come
usali e così alla fine il
gateway di mercato è davvero solo con
avanzato problema del commesso viaggiatore con
problema logistico come si mappa la fornitura
e richiedete come si fa a renderlo un
mercato efficiente come fai tu
massimizzare il numero di viaggi ma anche
minimizzare i tempi di attesa per i ciclisti e
per i conducenti e quindi se ci pensi
sul pool in esecuzione in un complesso di città
problema commesso viaggiatore e quindi guarda
a tuffarsi in alcuni dettagli su come noi
ridimensionato con nodo in appena un secondo ma a
capisci questo dai un’occhiata al nostro
cronologia nel 2009 abbiamo iniziato con PHP my
sequel in questo periodo
Il 2010 è quando il nodo è uscito e ha iniziato
per ottenere l’ adozione popolare abbiamo iniziato a
muoviti verso il nodo J che la mamma sta per essere
al momento è scala web e risulta
non è proprio vero
e così siamo migrati ad esso e lontano da
abbiamo iniziato a sostituirlo con le cose
come Redis abbiamo iniziato a migrare al mio
sequel perché siamo originariamente su
Postgres e abbiamo un po ‘superato il nostro
abilità o il giusto throughput su Postgres
al momento e poi abbiamo iniziato a scrivere
il nostro archivio dati che è la lista degli schemi
costruito in cima al mio sequel e poi da
recentemente c’è stata una grande spinta a
tipo di standardizzazione su go in Java ma
parliamo di come siamo arrivati qui
JavaScript quindi i monoliti no
necessariamente un male ben non sono che al
prima, ma si trasformano rapidamente in una palla
di fango e così monoliti davvero ottimizzati
per la velocità di sviluppo del primo stadio
progetti quando un singolo team lo possiede e
consolida tutto il tuo operato
in alto in un posto unico c’è
solo un’applicazione per distribuirne una
codebase da mantenere e il
i microservizi sono una cosa ma
i micro-servizi sono davvero la cosa giusta
questo è focalizzato su una sola cosa
una cosa non significa che una API significhi una
dominio aziendale e così come abbiamo iniziato
rompere a parte separare il nostro monolite e
creare molti micro-servizi che abbiamo imparato a
poche cose lungo la strada
uno dà chiari confini di proprietà
se c’è una singola squadra che possiede un
singolo dominio aziendale è possibile mappare che
ai singoli servizi c’è una squadra
determina l’autenticazione e l’identità
quindi possiedono l’identità di autenticazione
servizi la maggior parte del tempo ha anche dato
noi di nuovo velocità specifica del prodotto quando
stai crescendo super veloce che stai assumendo
tutti questi nuovi ingegneri in cui il
ingegneri medi meno di sei mesi
in compagnia e tu lo vuoi davvero
rendere molto facile il loro spostamento
il loro ritmo
non vuoi un fondamento ereditario
servizi che bloccano il prodotto
sviluppo di un nuovo prodotto e così via
permette la mossa ci permette di spostare il
business più veloce e dà squadre
velocità indipendente anche quelli che risolvono
problemi di ridimensionamento non solo dei sistemi interni
ma anche la compagnia come si raggruppa
le persone insieme e poi ci dà il
capacità di consolidare la formazione
documentazione e le nostre attrezzature sotto
ma alla fine ha dato il linguaggio della squadra
lingua e indipendenza della piattaforma e
questa è una parte importante di come noi
ha iniziato ad adottare il nodo non era un po ‘
mandato che è venuto giù da alcuni
squadra esecutiva è stato letteralmente
ingegneri come la firma del nodo JavaScript
abbastanza per risolvere il problema al momento
avevamo un sacco di talento che era
familiarità con javascript nel nodo
ecosistema e quindi la squadra è appena sorta
è cresciuto organicamente da lì
ma come la squadra va da centinaia a
migliaia a migliaia di te
davvero bisogno di iniziare a standardizzare e
è proprio quello che abbiamo iniziato a fare
è okay abbiamo un set preferito di
lingue ma puoi usare qualsiasi strumento tu
voglio per il lavoro, ma ci ha anche dato
affidabilità del sistema nel suo insieme
ogni servizio è indipendente per ogni servizio
è scalabile e ogni servizio è
indipendentemente testabile quindi ce ne sono alcuni
cattivo che viene con quello buono è
maggiore complessità al tuo punto in cui
stai guardando una versione di alto livello
ne sembra uno spaghetto, quindi come?
fai la scoperta di quando hai questo
molti servizi come li chiami presto
su ingegneri sono persone creative loro
tendono a nominare cose interessanti che diamo
cose nomi interessanti e loro no
mai avere qualcosa a che fare con il
servizio quindi il servizio di autenticazione
non è chiamato il servizio di autenticazione
qualcosa di molto diverso e quindi come farlo
la mappi alla roba sotto di te
Devo essere in grado di fare molte scoperte
molto facile
sempre coerentemente in modo coerente
diventa un problema di coerenza finale
alla fine diventa un problema perché
i tuoi dati non vivono più in un singolo
posto è diffuso in molti
database attraverso molti servizi e poi
tracciamento distribuito quando si inizia a
imbattersi in problemi di prestazioni come fai tu
capire la causa principale del
problema di prestazioni e quindi ne abbiamo costruiti alcuni
strumenti per aiutare ad alleviare alcuni di questi
problemi e poi ovviamente c’è il
spese generali operative per ogni servizio
è necessario monitorare è necessario distribuire
hai bisogno di strumentarlo e di cui hai bisogno
per assicurarsi che sia sicuro e così ogni
tempo si aggiunge un nuovo servizio, se lo sei
facendo questo con strumenti indipendenti e
si inizia a dover duplicare tutto questo
sovraccarico operativo e l’ultima cosa
è finito con il codice ripetuto
e sforzi ripetuti e così quando lo hai
tutte le squadre del miele si assicurano che non ci sia
più team e un ordine di ingegneria
di migliaia di persone che costruiscono lo stesso
tipi di servizi e così Martin Fowler
ha questo grande grafico che mostra di meno
sistemi complessi che richiedono uno sforzo extra
necessario per utilizzare un micro servizio
l’architettura supera i suoi benefici ma
una volta che il problema diventa più complesso
e la dimensione della squadra aumenta e il
i benefici superano il rischio
e quindi scegliere un micro servizio
l’architettura dipende in gran parte dal
complessità dell’applicazione del
complessità della tua squadra e non c’è
regola d’oro e quindi uno dei modi in cui
abbiamo finito per ridimensionare il nostro nodo
le applicazioni erano risolvendone alcune
diversi problemi uno come si fa
livello di applicazione di partenza e usiamo
la nostra, almeno abbiamo usato per usare s2 di Google
libreria per dividere il mondo intero così
libreria googles s2 sostanzialmente prende un
sfera e scomposizione in diversi
regioni e così da quelle regioni che possiamo
iniziare a frammentare il nostro database o
applicazioni basate su geografie in giro
il mondo e quindi il problema con questo
è quando si ridimensionano le applicazioni
fare richieste in tempo reale specifiche
a una geolocalizzazione
hai aumenti di richiesta come qualcosa del genere
a New York la domanda di punta non lo è
sarà uguale ad Amsterdam o
a Singapore oa San Francisco, quindi come
fai a pezzi quell’ambiente e così uno
dei primi strumenti che abbiamo scritto nodejs
per aiutarci a scalare le applicazioni era Ring
Pop Ring Pop fornisce il livello di applicazione
tracciare e così ti permette di portare
distribuire il coordinamento della cooperazione a
servizi ma in realtà è una stringa in cima
di un protocollo di appartenenza che ti permette
scegliere o questa nostra istanza
l’applicazione può gestire la richiesta o io
è necessario inoltrarlo all’appropriato
esempio possono e così sembra molto
come questo per ogni istanza di nodo che sei
correndo hai chiamato un client Ring Pop e
questa pianta pop anulare può capire quale
richiede questa istanza può servire così io
in grado di gestire le richieste per questo particolare
posizione o per questo particolare servizio
e così questo ci permette di decidere facilmente
come volevamo tagliare il backend ma
gestiscilo tutto a livello di applicazione
e quindi ring pop è scritto in nodejs
e abbiamo clienti per una varietà di
lingue una delle prossime cose che noi
imparato è che fare richieste HTTP
è stato davvero costruito per un mondo e cosa
ti stai connettendo da un browser a
client su un server ma quando lo sei
fare richieste server a server HTTP è
costoso e quindi c’è di più
modo efficace per comunicare tra
questi micro servizi di back-end e così via
il risparmio di tempo esisteva da Facebook
ma non aveva il supporto linguistico
di cui avevamo bisogno in quel momento e così anche noi
ha scritto il canale T e quindi il canale T era a
Protocollo RPC che ci consente di realizzare un
richiesta molto efficiente per il back-end
servizi e quindi canali T disponibili
più lingue ma questo è come noi
in realtà comunichiamo sotto nel nostro
sottostante l’ architettura dei micro servizi
e poi uno degli strumenti persi che noi
costruito per nodejs
era Jager e quindi Yeager ha davvero costruito
è stato originariamente costruito su Twitter Zipkin
e fornisce una transazione distribuita
tracciamento per applicazioni di distribuzione complesse e
quindi quando stai guardando un complesso
applicazione che vuoi capire dove
il problema delle prestazioni è quello che vuoi
avere visibilità sul sottostante
chiama in modo da poter iniziare a vedere dove il
hotspot nella prestazione alla radice
causa di problemi di prestazioni si trovano e così
gran parte di ciò che abbiamo fatto è stata la figura
come rendere l’osservabilità
i nostri servizi distribuiti e così abbiamo fatto
che attraverso pochi modi diversi di
strumentazione t canale usando Jager
per visualizzare e client Jager a
strumento i servizi sottostanti e
abbiamo ridimensionato le nostre applicazioni di nodo
usando il pop verde e quindi c’è grande
annotazioni di ingegneria sulla nostra ingegneria
blog su ognuno di questi servizi ho
non ho troppo tempo e c’è un
sacco di contenuti, ma io ti seguirò con
le diapositive alla fine e così alla fine
nota è solo un involucro sottile intorno
C ++ è un sottile strato di scripting in giro
C ++ e quindi tutte le prestazioni di Linux
strumenti che sei abituato a lavorare e così via
è stato anche costruito in cima a quelli così
se sta usando il nodo di costruzione del nodo
fiamme di grafici di fiamma della CPU con traccia P
puoi ancora usare tutto il normale
strumenti di performance che ti piacerebbe capire
problemi di prestazioni nel tuo
applicazioni e quindi la ragione per cui mi piace
punta la cella è che dovresti imparare
come profilare le applicazioni su Linux e
allora dovresti capire come ottieni
visibilità su quelli distribuiti
le applicazioni non ci sono proiettili d’argento
e così abbiamo imparato un paio di cose diverse
lezioni e quando abbiamo iniziato con il nodo
le prestazioni non erano così importanti
come è oggi ma da quando siamo migrati
a tutti abbiamo iniziato a migrare tutti
dei nostri servizi di corso ci siamo resi conto che
la latenza è troppo alta per ultra
sistemi di back-end performanti di nuovo noi
adottato versioni precedenti dei nodi quindi a
molto di questo è cambiato nel tempo ma quando
hai una dinamica dinamica di digitazione dinamica
collezione tutto ad un tratto il
le prestazioni non sono prevedibili come
è con altre lingue e quindi il p99
la latenza del formato inizia a diventare a
problema non era circa la media
latenza per la richiesta di cui si trattava
che una richiesta che prende un sacco di
tempo e così presto ha reso molto
veloce per iterare, ma come la dimensione del
team scala la velocità dello sviluppatore
ha iniziato a rallentare e una squadra di cinque
le persone sono molto facili da sviluppare ma come
aggiungi cento o anche cinquecento
impegnarsi con la stessa base di codice
le cose iniziano a rompere di nuovo usando
i micro servizi ci danno flessibilità e
rende tutto indipendente ma anche
mi richiede di avere un’interfaccia stretta
tra la lingua diversa ma noi
bisogno di servizi quindi se si rinomina un campo
in un posto ora tutte le dipendenze
bisogno di adottarlo e quindi di nuovo micro
i servizi richiedono un’interfaccia stretta e
utilizzando le lingue che supportano la staticità
digitando sei in grado di imporre così tanto
prima nel processo e così quando tu
avere grandi team di sviluppo
contributo che inizia ad avere davvero
un impatto su oltre 100 sviluppatori e così via
ci permette di cogliere questioni in Corporatura
tempo piuttosto che in fase di esecuzione e di nuovo
assumere era veloce da imparare, ma lo era
facile scrivere codice di scarsa qualità
ti permette di muoverti velocemente ma anche
ti permette di essere sciatto nel processo
e quindi una delle cose belle è te
può scrivere performant di alta qualità
Codice JavaScript ma che richiede
esperienza e quando assumi persone
Là
molto rapidamente anche quando sono fantastici
persone acute non hanno imparato il nodo e
non conoscono le insidie del comune
modelli di progettazione con nodo sono
incentrato su come fare le cose e così tu
vuole renderlo sicuro per gli sviluppatori di
costruisci le cose velocemente e nodejs
a volte un sacco di persone sono sciatte
quante persone ricordano la biblioteca
che ha preso giù internet perché
qualcuno si è seccato per qualcuno
volevo rinominare il loro pacchetto così
c’è un grande ecosistema di piccole dimensioni
librerie in nodejs ma ce ne sono alcune
problemi che vanno con che molti di loro
erano immaturi rispetto ai loro semi
Java o go controparti un buon esempio
questo è il client HTTP nudo e quindi il
la versione go è 10 volte più veloce ma lo è
puramente l’implementazione se lo fosse
scritto in C ++ sarebbe molto
meglio implementato e così mentre tu hai
questo grande ecosistema di piccola biblioteca
a volte le librerie sono troppo piccole
a volte la catena delle dipendenze non lo è
necessariamente chiaro e quindi hai problemi
dove il pad sinistro può abbattere il
Internet
e alla fine non aver paura di
scrivendo C ++ così anche di nuovo è solo un
piccolo livello di scripting quindi a volte quando
hai bisogno di più prestazioni il giusto
cosa da fare è solo scendere di un livello e
quindi scrivere attacchi che espongono che
funzionalità per la tua lingua e io
pensa spesso che le persone no
pensa necessariamente che dovrebbero farlo
ma non c’è niente di sbagliato
quello e parti dei nostri servizi principali sono
scritto in questo modo e così di nuovo solo a
ricapitolare alcune delle lezioni che apprendiamo
HTH una canzone è stata progettata per i browser
usando RPC con il canale T e il risparmio è
forma molto migliore per un computer
richiesta del computer quando sei solo
microservizi comunicanti tra ciascuno
altro è molto più efficiente parlare
via protocollo binario questo viene
giù al ridimensionamento con grandi squadre dopo
alcuni micro servizi di età dovrebbero diventare
immutabile a un certo punto è più facile
chiedere alle persone di passare a un nuovo servizio e
è chiedere loro di cambiare tutto
interfacce che si connettono a quel servizio
e così abbiamo questa idea che dopo a
periodo di tempo in cui un servizio non può cambiare
che rilascerà un nuovo servizio che
sostituisce quella funzionalità e l’avere
il linguaggio multiplo consente 14 preferenze
ma serve anche come grandi sviluppatori
basato sulla loro cultura e inizia a
eliminare la facilità d’ uso del riutilizzo
codice
persone su squadre che permettono alle squadre di muoversi
in giro per l’azienda e quindi questo è un po ‘
problemi ci limiteremo a regolare che, per
tutti i problemi di prestazioni vanno bene
difficile eseguire il debug quando si dispone di questi
applicazioni distribuite complesse con
migliaia di servizi, quindi abbiamo dovuto
investire pesantemente in standardizzati
cruscotti per darti un significato
strumenti di informazione e osservabilità che
ti permettono di arrivare alla causa principale di
questi problemi di prestazioni come Lethe
ager e lungo e non dovrebbe mai rallentare
produzione se qualcosa di sbagliato dovrebbe essere
rilasciare piuttosto che ritardare la richiesta successiva
ma tutte queste decisioni sono
decisioni di architettura che sono giuste
trade-off è facile quando stai crescendo
molto veloce per andare con il momento di lasciare
l’impulso ti porta ma spesso
devi fare un passo indietro ed essere intenzionale
con queste decisioni e così tante
queste lezioni vengono perché nessuno
fatto un passo indietro e reso intenzionale
decisioni Gli ingegneri costruiscono solo cose
sopravvivere per essere in grado di scalare così le cose
non stavano cadendo e quindi penso che il
punto saliente e così il prossimo modo che usiamo
JavaScript è davvero con il nostro web
la nostra piattaforma web oggi è basata
su reagire ed esprimere la maggior parte di aperto
strumenti di origine che probabilmente hai visto
le varie proprietà se è uber
calmo e controlla per un giro se
ti interessano le auto a guida autonoma
o tecnologie avanzate gruppo uber
paura di prenotare un carico e un libro dei pulsanti
un carico che si iscrive a tutti
stime che ordinano pacchetti di film alimentari
o cose in città e gestisci il tuo
business visualizzando i dati per la città
governi e il mio sito web preferito che
noi manteniamo personalmente è sviluppato sopra
comm dove autorizziamo le terze parti a
costruisci esperienze commoventi ma la ragione
Mostro tutti quelli che abbiamo più di 250
applicazioni web che dobbiamo
mantenere e senza coerenza
fondazione tutte queste applicazioni lo farebbero
hanno costruito interamente costruito
diversi strumenti e diversi
architetture che creano un più alto
verosimiglianza che avranno
problemi in modo che la vulnerabilità della sicurezza
e o semplicemente uno sforzo duplicato
squadre che inizi a realizzare
investire in piattaforma risolve questi problemi
problemi e quindi noterai il tema
è che investiamo in queste tecnologie
piattaforme che consente agli sviluppatori di utilizzare a
personale standardizzato appositamente costruito
per i nostri strumenti e quindi parliamo un po ‘
un po ‘su come lo abbiamo fatto per il nostro web
piattaforma quindi per il nostro web di alto livello
piattaforme
costruito su nodejs e npm come tutto il
Applicazioni JavaScript e noi usiamo
Esprimere in quanto è una struttura leggera
che abbiamo esteso con un mucchio di
middleware
e sul lato client usiamo reagire
read up piuttosto semplice ora questo
è particolarmente all’avanguardia credo
questo è un open source piuttosto standard
impilare questi giorni e quindi usiamo internet
proxy sinha per server Web front-end
e i load balancer utilizzano NPM per gestire il nostro
pacchetti Babel in modo che possiamo usare l’ultima
generazione JavaScript Express così abbiamo
un framework web leggero reagisce per l’interfaccia utente
rendering Redux per la gestione dello stato e
quindi un mucchio di strumenti su cui è costruito
il massimo del sorso che ci permette di avere un
costruire e distribuire coerentemente pipeline e
standardizza le build quando attraversa tutte queste
applicazioni e così per la maggior parte
la maggior parte di queste applicazioni sono costruite
usando lo stesso stack e viene fornito con
qualche altra salsa speciale di cui abbiamo bisogno
aggiungere sopra che è un che lo rende
appositamente costruito per il nostro stack di cui abbiamo bisogno
un registro interno di NPM per privati
gestione dei pacchetti e poi hashing e
sostanzialmente migliore resilienza, quindi non lo facciamo
ottenere bloccato da distribuire i problemi e quando
hai una grande squadra che vuoi fare
è molto facile impiantare nuovi progetti così
abbiamo il nostro equivalente al vo uomo
questo ci permette di fare il boot di nuovo
applicazioni con queste migliori pratiche
built-in non voglio dover spendere un
giorno di configurazione express per utilizzare tutti questi
middleware Voglio solo creare un nuovo
progetto che è pronto per andare e poi noi
personalizzato il nostro espresso medio personalizzato
con un mucchio di middleware che permettono
noi per gestire l’autenticazione standardizzata
gestire i problemi di sicurezza come XSS cross
falsi e contenuti della richiesta cross site
politica di sicurezza sul front end senza
dovendo essere un sacco di lavoro dovrebbe essere
cotto in modo predefinito e quindi gestibile
metriche che registrano l’internazionalizzazione
analisi della strumentazione errori dovrebbe
solo essere qualcosa che si ottiene costruendo
in cima alla nostra struttura e così alla nostra
il framework ora usa solo Express ma noi
estendere Express per essere costruito intorno a tutti
i nostri strumenti interni le librerie che usiamo
per le librerie di traduzioni che usiamo per
la nostra pipeline analitica ecc. e così via
il lato server ma abbiamo lo stesso
cosa da parte del cliente quindi se vuoi
per creare rapidamente le applicazioni che vuoi
Libreria di componenti di interfaccia utente che rende facile
per provare una build trascinare e rilasciare i componenti
e così abbiamo costruito la libreria sopra
jas e poi ancora non usiamo HTTP per
tutto così abbiamo il nostro I RPC
libreria sul lato client che consente
usiamo intelligentemente HTTP o Qi
Canale o in qualsiasi modo il vostro servizio è
in realtà come comunicanti e quindi
finalmente condiviso la build build tooling per
powered by gulp che ci permette di avere
il ricaricamento a caldo usa le ultime versioni di
JavaScript e lo rendono facile
distribuire risorse e distribuire il nostro
applicazioni e farlo in modo coerente
modo con test standardizzati e
stili di codice standardizzati tramite lint
e sì e quindi rendering universale
per il server e il client penso questo
è di nuovo uno dei più grandi motivi per cui noi
continua a usare node.js oggi è così
ci permette di scrivere lo stesso codice a
lato client come lato server e
ci permette di usare il rendering isomorfo a
fornire le stesse viste sia che sia
front-end o back-end ma facciamo un passo avanti
oltre a quello e non solo in
esponendo un client front-end che è
non è stato scritto in risposta e un back-end
servizio e minacciando nuovo JFS noi
in realtà separare i nostri servizi front-end
quelli che servono le pagine web o al
Almeno i gusci delle pagine dal nostro
servizi di back-end quelli che si interfacciano
con i microservizi sottostanti e
fornire dati a coloro che usano e così via
ci sono un paio di motivi diversi
per questo i servizi potrebbero prendere
vantaggio del rendering universale e
strumenti così tutto funziona a dovere
la scatola ma puoi anche utilizzarla meglio
lingue per caso d’uso specifico, quindi se
vuoi implementare determinati servizi
e vai nel back – end puoi farlo
e poi puoi semplicemente parlare con loro via
nodo ed esporre che in JavaScript su
il front-end ti permette anche di farlo
distribuire e scalare i tuoi servizi
separatamente e finalmente puoi riutilizzare
quei servizi di back-end per più cose
come un client mobile o per il nostro esterno
API e quindi se dai un’occhiata a cosa
la nostra architettura sembra che debba
aggiustalo per rendere felici alcune persone
ma ad un alto livello questo è ciò che il
l’architettura sembra nel client
di nuovo lato è un’applicazione di reazione
all’interno di questo abbiamo un set di
componenti di reazione standardizzati e poi
usiamo il redux per le dichiarazioni intese insieme
il modo in cui abbiamo la nostra libreria RPC
sotto si occupa di parlare con questi
servizi di back-end e poi abbiamo i nostri
indietro il nostro server di applicazioni back-end
che è solo il proxy di nginx e
ha proxy e quindi abbiamo il nostro
application server l’applicazione
server ha una pipeline di asset permanenti come
è davvero solo scaricare cose a a
CDN abbiamo un modo per indirizzare le richieste a
i servizi di brevetto di base e poi
abbiamo le pagine effettive che vengono pubblicate
al browser e poi lungo lì
anche avere modi per fare isomorfo
rendering e un modo per avere un
meccanismo di routing condiviso tra il
front end nel back – end e con
reagire router e quindi uno dei
le cose su cui ci concentriamo sono queste che reagiscono
componenti per renderlo facile da avere
interfaccia utente standardizzata senza dover
scrivi tu stesso tutto il codice così tanto
le persone hanno familiarità con i bootstrapper
Fondotinta di erbe questo è il nostro equivalente
costruito in cima a reagire e quindi ci è piaciuto
perché ci permette di vedere tutto
quei siti internet personalmente li penso
sembrano tutti molto bene e non lo sono
perché avevano un designer dedicato su
ogni squadra a cui piace ha reso tutto pixel
perfetto è perché avevano il
utensili standardizzati che ha fatto sembrare
bene fuori dalla scatola e quindi questo è uno dei
i motivi per cui abbiamo questi reagiscono
componenti per cui sono davvero ottimizzati
prestazioni e incapsulano il
stile in modo che sul filo siano come
la luce è possibile ma hanno anche
bacon strumentazione analitica se io
clicca su un elemento del modulo non lo voglio
per tracciare il redux dello stato e quando
digitano alcuni dati e lo passano
lungo Voglio essere in grado di intercettare
quegli eventi e li hanno automaticamente
passato alla nostra pipeline di analisi e così via
avendo tutte le cose incorporate nel
front-end lo rende facile da fare
pronto per l’uso e poi come cambiano le marche
col tempo che alla fine lo fanno
rende facile ottenere aggiornamenti senza interruzioni
alle nuove versioni e quindi crediamo
pesantemente nello scrivere CSS e JavaScript
e questo è per alcuni motivi uno è
perché è ultra performante possibile
serve sempre e solo il CSS che è in realtà
essere usato sulla pagina e tu no
devono gestire con quel runtime e così via
cerchiamo di godere usiamo uno dei
ingegneri sul nostro team di piattaforma web che
in realtà ha scritto tron di stile al di fuori di
uber e poi l’abbiamo adottato nel nostro team
pure e abbiamo iniziato a usarlo
internamente quindi tutto il nostro CSS è alimentato
dallo stile Tron e dall’ultima generazione
della nostra piattaforma web e questo lo rende
facile da gestire tutti gli stili in un unico posto
hai un file uno reagisci componente
una cosa da modificare non è necessario
traccia le librerie attraverso le librerie
figura
come fare qualcosa – come fare
qualcosa sembra diverso e quindi uno di
i miei modi preferiti che usiamo javascript
è in realtà in visualizzazioni di dati e
quindi questo è uno dei modi più potenti
che usiamo JavaScript oggi e quindi questo
è un giorno nella vita di San Francisco
e quindi se dai un’occhiata a questo
visualizzazione questo è in realtà alimentato
by def GL che è un framework WebGL
abbiamo rilasciato e ci permette di
capire come funzionano le città noi uno dei
i nostri valori valori culturali sono
celebrare la città e ciò che si inizia a
capisci è che ogni città è molto
unico, ma al fine di capire come
funziona devi essere in grado di visualizzare
e così abbiamo investito molto questi
quadri di digitalizzazione per permetterci di
fallo e così puoi controllarli a
un po ‘più tardi ma parlerò
loro rapidamente ora abbiamo reagito è questo
è una libreria di grafici che fondamentalmente
mappe per reagire componenti e quindi se
sei abituato a costruire grafici eccellenti
con d3 questa è un’interfaccia reattiva da fare
quello con componenti standardizzati per
vari grafici la maggior parte delle mappe che tu
vedere sul nostro sito Web e nel nostro
applicazioni è alimentato da reagiscono mappa
GL e quindi se conosci gli uffici cartografici GL
libreria questa è solo un’interfaccia reattiva
a quello e poi uno dei miei preferiti
le librerie sono il mazzo GL che ti permette di
utilizzare milioni di punti dati e a
visualizzali in modo iper formale
e così davvero è costruito in cima a WebGL
– ed è un approccio stratificato per
visualizzazione dei dati e poi anche noi
rilasciato luma GL e così luma GL semplice
interfaccia a WebGL in realtà standard
interfaccia usando X script 6 – WebGL –
che si occupa anche di 64 bit
precisione ok quindi reagisci vis di nuovo
grafici molto facili attraverso un’interfaccia reattiva
puoi controllare di più su JavaScript
il nostro web di nodo slash bio uber github e
quindi ti dà un componibile
sistema di visualizzazione ma in realtà lo rende
facile da rendere grafici se si tratta di linea
grafici a barre di area diagrammi di dispersione di mappe di calore
sunburst and tree maps e così via
grafico diverso e visualizzazione voi
può immaginare che sia supportato da reagire è
e così alcuni dei modi in cui lo usiamo
oggi sono di nuovo a capire la salute
le città fluiscono e quindi cosa stai cercando
a è
una mappa interattiva di New York come te
sopra il mouse puoi vedere il ritiro e
abbandonare luoghi da un particolare
punto e quindi se sei un manager di città
cercando di capire dove serve l’offerta
essere in una città nel tempo e dove
le persone vengono lasciate fuori da questo
molto facile da capire quell’informazione
questa è un’altra visualizzazione che mostra
densità a New York e quindi questo lo rende
facile da capire
nel corso del tempo ciò che preleva e drop-off
per assomigliare in certe posizioni e così
ancora una volta tutte queste visualizzazioni sono
alimentato dal debito TL e il debito si sente davvero
progettato per rendere la visualizzazione di grandi dimensioni
set di dati estremamente semplici e così quando
sei facile visualizzare una coppia
migliaia di pezzi di informazione
è molto più complesso da visualizzare
in tempo reale milioni di pezzi di
informazioni e quindi utilizzando la stratificazione e
cosa istantanea siamo in grado di fornire alto
prestazioni come hai visto in precedenza
e poi luma GL luma GL ce la fa proprio
è molto facile interagire con WebGL, quindi è così
un’interfaccia moderna per affrontare
WebGL e la piattaforma di base componente a
gestisce la precisione a 64 bit di cui abbiamo bisogno
per il grado di mappatura che facciamo e
fornisce anche un modo migliore per gestire
errori in WebGL e quindi è possibile effettuare il check out
più GL uno dei migliori esempi che penso
hanno quando si mappano i taxi gialli
per i cappucci dello schermo nel corso del
giorno e così tristemente non ci penso
l’animazione sta giocando, ma quello che puoi
vedi è Manhattan resa in 3d e poi
il traffico scorre attraverso le città reali
tutto fatto in tempo reale utilizzando milioni di
punti dati e quindi questo è in realtà
un’impresa abbastanza impressionante per essere in grado di
fare in JavaScript e averlo
ad alte prestazioni e quindi tutto questo è
disponibile come open source e lo siamo
completamente aperto per tirare richieste nel
la comunità quindi sentitevi liberi di dare un’occhiata
e segui e ancora questo è uno di più
visualizzazione che mostra nel periodo
di 24 ore in cui appaiono i drop-off
San Francisco nella Bay Area e quindi uno
dei più grandi modi in cui usiamo Javas
per oggi è quello di ottenere visualizzare città
in modo che capiamo come la maggior parte
funziona in modo efficiente in una città e la maggior parte di
questo è alimentato tramite JavaScript e tutto
le biblioteche che parlano di oggi sono
tutto open source e disponibile su uber
da oh e così dall’ultimo posto che usiamo
javascript è attraverso il nostro sviluppatore
piattaforma e quindi vogliamo team – vogliamo
terze parti per essere in grado di costruire in movimento
sperimenta se sta offrendo
aumento su richiesta o on-demand
consegna esponiamo tutti questi 3400 micro
servizi come per il dominio aziendale
oggetti e lo rendiamo molto facile
interagire con loro tramite il nostro nodo SDK così
se vuoi essere in grado di offrire
aumento on-demand all’interno del tuo
applicazioni o essere in grado di collegare
direttamente nel viaggio super per creare un
esperienza personalizzata che puoi fare molto facilmente
che attraverso il nostro nodo SDK e così di nuovo
quasi tutto questo è alimentato da open
strumenti di origine e quindi molto pesantemente
contribuire alla comunità e non
solo gli strumenti che usiamo e ci sono
presenza su github ma anche attraverso il nostro
blog di ingegneria e quindi hai ragione
tonnellate di tutorial che vanno molto in profondità e
come utilizzare alcuni di questi strumenti e ordinare
del perché li abbiamo costruiti e quindi se lo siamo
parlare così volevo andare molto veloce
ad alto livello attraverso molti dei
strumenti ma il modo migliore per seguire è
attraverso le profonde immersioni che vivono nel nostro
mondo dell’ingegneria e quindi se lo sei
interessato a parte del back-end nudo
piscine puoi andare su github.com slash
uber nude e quindi questo è veramente concentrato
su tutti gli strumenti di imballaggio open source a
costruire le applicazioni node.js le cose io
parlato di cose precedenti come Ring
Pop e Jager e Qi Channel e poi
puoi andare su github.com / uber web per
alcune delle nostre proprietà web front-end web
strumenti e come la nostra quaresima standardizzata
regole per avere codice coerente e
poi tutti gli altri tipi di
visualizzazioni che hai e poi
di nuovo finalmente è la nostra ingegneria di uber
blog uber inch e super calmo e noi
tuffarsi in tutti questi strumenti e attraverso
approfondita write-up in modo che il posto migliore in cui
pensa per ogni strumento che ho menzionato
abbiamo un muro molto sicuro in loro
quindi penso che sia un ottimo posto per immergersi
e così vogliamo costruire un open
piattaforma per la costruzione di esperienze in movimento
non solo usando i nostri strumenti ma anche voi
sapere fornendo i dati che noi
usiamo per costruire un ottimo servizio e noi
voglio esporlo a terzi
e quindi ciò che futuro si costruire tutti
questi strumenti è tutto questo discorso è costruito
dalla gente molto più intelligente di me
devi solo essere la persona che
lo rappresenta
questo viene da te che conosci migliaia di
ingegneri che lavorano su tutti questi strumenti e
quindi gran parte del merito di questo discorso
va alle molte persone intelligenti di uber
e se vuoi unirti al team che abbiamo
uffici ad Amsterdam e San Francisco
in tutto il mondo, quindi sentitevi liberi di seguire
e ci sono dei bei discorsi che io
anche raccomandare pure e con quello io
vorrei aprirlo per domande
grazie mille
e quindi di nuovo ciao a tutti, sono Dustin
Whittle e io sono uno sviluppatore avvocato che
lavora sulla piattaforma di sviluppatori di ubers dove
Aiuto gli sviluppatori di terze parti e i nostri
i partner costruiscono esperienze commoventi e così via
Volevo parlare un po ‘di
un paio di modi in cui usiamo JavaScript
le loro opere di ingegneria penso in ordine
per raccontare correttamente la storia è necessario
capisci un po ‘ della scala
sull’ambiente in cui siamo cresciuti e
poi parlerò di come costruiamo
micro-servizi back-end con JavaScript
come costruiamo il nostro web front-end
Proprietà su come visualizziamo i dati
capire meglio le città e poi come noi
esporre un’API esterna per lo sviluppatore
piattaforma e così ancora una volta come una questione di
le pulizie si prega di fare domande
attraverso l’ app sto risparmiando un po ‘di tempo a
la fine di passare attraverso tutti così
per favore sentiti libero e il tuo feedback è
molto apprezzato quindi per favore sii
inesorabile e dare tanto feedback quanto
possibile e quindi probabilmente sai uber
ormai spingo un pulsante per fare un giro e così
la missione delle bave è davvero da fare
trasporti affidabili come in esecuzione
acqua ovunque e per tutti e dentro
solo otto anni ci siamo riusciti
in realtà uno dei più rapida crescita
aziende che sono mai esistite e che siamo
in sei continenti in 73 paesi e in
più di 470 città e abbiamo fatto che
collaborando con più di un milione
e mezzo partner di guida attivi che su
consegna giornaliera di oltre cinque milioni
viaggi e lo abbiamo fatto in meno di otto anni
anni e lo scorso luglio abbiamo completato i nostri due
viaggio di miliardi e quindi se ti concederti
per un secondo, possiamo prendere un
un po ‘di un’occhiata all’evoluzione di
l’ app uber perché davvero questo ha
stato alimentato da JavaScript sotto così
se viaggi fino al 2009 questo è
praticamente con l’aspetto di Uber
Hai avuto una mappa e si aveva un pulsante che
detto prendimi piuttosto semplice
piuttosto scheletrico
e poi nel 2012 ne abbiamo pubblicato un altro
versione dell’app che ha aggiunto di più
caratteristiche come ricerca di posizione e A’s
stime e la possibilità di selezionare
diversi prodotti come piscina uber
uberx uberx et cetera in fondo e
poi l’anno scorso abbiamo rilasciato una nuova versione
e lo abbiamo davvero aggiornato per aggiungerlo
acceleratori di giri programmati per noti
posizione in modo da poter avere una corsa in cima
e poi un feed interattivo solo per
citarne alcuni ma come puoi vedere l’Ebor
l’app si è evoluta nel tempo proprio come il
società nell’organizzazione di ingegneria
si è evoluto e così oggi puoi farlo
effettivamente prendere un’esperienza giro uber
lungo la strada puoi suonare la tua musica
con
e Dora puoi vedere locale
raccomandazioni con Foursquare e tu
può anche ordinare cibo con ubereats
e molto più direttamente da Google
app ma non è solo in auto
sono stati anche choppers e barche dal gattino
siti crema anche per alberi di Natale
non stiamo solo spostando le persone, ma lo siamo
spostare anche le cose e l’uber
esperienze ripetute in molti modi e
questa è davvero una storia di formazione
su JavaScript quindi parlerò un po ‘
un po ‘ di come siamo arrivati e così questo
è una visualizzazione di Capodanno
dal 2013 al 2017 e quindi se proprio
guarda questo è Singapore e da
a Capodanno tra il 2013 e il 2017
ogni anno e così puoi vedere la scala
la crescita anno su anno e giugno
Nel 2010 abbiamo lanciato la nostra prima corsa a San
Francisco e entro maggio 2012 abbiamo colpito a
milioni di corse in tutto il mondo e abbiamo colpito a
miliardi di corse entro febbraio 2015 e oggi
esistiamo in più di 73 paesi e
quindi solo se guardi la scala sul
cronologia di questo è davvero abbastanza veloce
e per capire perché utilizziamo JavaScript
in certi modi e come abbiamo iterato
su di esso devi capire la scala
la crescita e così abbiamo assunto molto
ingegneri hanno scritto un sacco di software
e la realtà è quando lavori
in un’azienda di ingegneria iper-crescita
come uber sembra quasi questo
l’immagine che stai muovendo super veloce ogni
settimana stiamo lanciando nuove città milioni
di persone stanno usando i nostri sistemi in realtà
tempo e non possiamo semplicemente fermare il nostro
sistemi anche per un minuto a significare per
un minuto di manutenzione è un pò
come cambiare le ruote della macchina
guidando 80 miglia all’ora
e quindi siamo organizzati con programmi
e gruppi di piattaforme e così sotto il
il modo più semplice per pensare a questo è
i team del programma sono costruiti sopra
piattaforme tecnologiche i nostri team di piattaforme
costruire la base tecnologica su cui
i team del programma possono costruire il cliente
prodotti ma siamo tutti team di prodotto
è solo se il cliente è
sviluppatori esterni o interni e così via
investiamo molto nella costruzione di questi
piattaforme che consentono agli sviluppatori di
itera velocemente e quindi costruisci a
piattaforma che interagisce con il reale
mondo come un altro livello di
complessità e opportunità pure
perché non puoi controllare veramente cosa
succede nel mondo reale il fisico
la complessità dei mondi è infinita ma noi
ha solo 64 bit e 500 millisecondi
SLA e quindi ci sono spesso cose che noi
non posso davvero vedere e questo entrare nel
la tecnologia sotto le persone usa il nostro
tecnologia per fare soldi per andare dove
hanno bisogno di andare e quindi non c’è spazio
tempo di pausa, ecco perché noi
sospira disponibilità e scalabilità finita
tutto il resto e così per fare questo noi
in realtà ha 15.000 repository che
la potenza oltre i 3400 microservices
che abbiamo pubblicato più di 260 di
tornano alla comunità open source
e probabilmente conosci l’Hoover
cavalca dopo che l’abbiamo letto, ma noi
in realtà hanno più di 10 cellulari
applicazioni e oltre 250 web
applicazioni e un grande pezzo di questo
tecnologia di base dietro questo è
JavaScript e quindi capacità di scalare le orecchie
è venuto dall’alta velocità difficile
ingegneria insieme a team autonomi
e domini e così abbiamo progettato
servizi di base progettati
per alta scala e durata e noi
concentrarsi sulle astrazioni sviluppatore che
consentire agli sviluppatori di essere produttivi e così
siamo un ingegnere poliglotta
organizzazione e usiamo alcune lingue
in produzione e così oggi ci stiamo muovendo
verso andare e Java, ma ancora una volta questo è
stiamo arrivando all’età della storia di JavaScript
quindi parlerò di come noi
evoluto e raggiunto la scala con
JavaScript e alcuni dei motivi per cui
stiamo migrando in altre direzioni e
quindi usiamo Go Java nodejs e Python in
produzione oggi e questo è davvero un
ordine di preferenza ma parliamo di
come è iniziato veramente con
la libertà di scelta quando sei
crescendo super veloce stai assumendo molti
ingegneri che vuoi che siano come
produttivo il più velocemente possibile
Possibilmente tendono ad assumere i loro amici
una volta diventato popolare nell’open source
mondo in cui inizi a costruire una comunità
intorno ai tuoi progetti e così diventa
più facile assumere persone che lo sono
con la stessa mentalità che vengono dal tuo
cultura e così originariamente quando noi
abbiamo deciso di usare JavaScript che abbiamo realizzato
che era una pila singola per il fronte
fine del backend e lo ha fatto molto
facile da ripetere e quindi di nuovo ha un
semplice interfaccia di approfondita
documentazione che lo rende veloce
iterare e prototipizzare è asincrono
agile e flessibile, quindi ci ha permesso di
evitare le sfide di concorrenza nelle prime fasi
e aveva anche una maturità sempre maggiore
ecosistema di moduli ma oggi lo usiamo solo
node.js per le nostre applicazioni web e così via
perché non è così presto come se fosse fantastico
le aziende web uber sono nate come PHP in
il mio gabbiano era in realtà
contratto con un mucchio di commenti
in spagnolo e poi all’epoca no js ‘
siamo venuti molto presto adottatori
e GU
infatti prototipiamo la prima versione
sul nodo 0.2 e stavamo eseguendo il nodo in
produzione a 0.4 e quindi è iterata
lungo è venuto un lungo cammino da allora a
un punto in più i soldi si muovono attraverso il
ubers app e il nostro nuovo JSF e qualsiasi altro
nuova app JavaScript per porte nel mondo
fino a poco tempo fa PayPal migrava al nodo
quindi ci hanno sorpassato, ma perché
nodo nodo ha alcuni punti di forza di base che
prestarsi bene per il nostro caso d’uso prima
gestisce l’ I / O asincrono con a
ciclo di eventi a thread singolo non bloccante
è particolarmente adatto per
costruire servizi distribuiti che fanno
molte chiamate di rete sottostanti e nodejs
e più javascript in generale è
eccellente per una rapida iterazione di nuovo facile
per prototipare qualcosa e poi a
iterare su di esso con una grande squadra e poi
tre ha un grande ecosistema di moduli
non devi costruire tutto il
componenti te stesso c’è già un
grande comunità lì che puoi costruire
in cima a un pool di talenti da assumere da
bene come moduli esistenti per uso comune
casi e così in tutto questo discorso lo faremo
parliamo di quattro modi in cui siamo
usando JavaScript oggi sul nostro
piattaforma di mercato per fornire il nucleo
servizi sotto di nuovo abbiamo un
architettura che consiste di più di
3400 microservizi un centinaio di quelli
si riferiscono al flusso principale del viaggio così giusto
premendo un pulsante e ottenendo un passaggio da
A a B è un centinaio di servizi in cima
sotto e poi parleremo un po ‘
un po ‘ sulla nostra piattaforma web e su come
costruire proprietà front-end con reagire
ed esprimi e poi come stiamo meglio
capire le città visualizzando i dati
e poi finalmente parlando di come
chiunque può creare applicazioni attraverso
la nostra piattaforma di sviluppo ma stiamo investendo
fortemente nella produttività degli sviluppatori e così via
abbiamo investito in un sacco di diversi
cose e un mucchio di piattaforme diverse
team che rendono facile per gli sviluppatori
avere successo dal primo giorno a
Hoover e quindi è veramente inizia con la
infrastruttura di base questo è il nostro calcolo
archiviazione di rete i nostri ambienti cloud
o ambienti on-prem e si sottrae
questo via in modo che gli sviluppatori possano concentrarsi
a fare magie e poi abbiamo le nostre
team di esperienza degli sviluppatori che questo è
davvero concentrato sullo strumento di sviluppo
catena quindi come è facile costruire un app
e distribuire la produzione e poi come te
necessario quando aggiungi dipendenze come te
bisogno di capire interagire con gli altri
servizi abbiamo il nostro mercato
piattaforma questo è l’unico gateway per
tutti i 3.400 micro servizi sottostanti
e poi in cima a quello abbiamo il nostro
componenti esterni abbiamo una rete
team di piattaforme che mantiene a
performante sito sicuro e affidabile
fondazione abbiamo la nostra piattaforma mobile
squadra focalizzata sull’abilitazione
migliaia di sviluppatori mobili da costruire
applicazioni performanti di livello mondiale e
allora abbiamo il nostro team di piattaforme di sviluppo
che si concentra su di esporre tutto questo
funzionalità al mondo esterno e
quindi abbiamo questo valore culturale da lasciare
costruttori costruiscono e questo significa veramente
non bloccare le persone a dare loro gli strumenti
devono avere successo e così quando
si vuole lanciare un nuovo servizio in questo
caso un servizio micro javascript su uber
si invia una proposta con una richiesta di
commenta l’intero lavoro di ingegneria
ti fornisce una descrizione di base di ciò che tu
vuoi costruire la timeline associata
con esso eventuali problemi di sicurezza e nessuno
preoccupazioni operative e quindi si inizia
con impalcature con questo scopo costruito
intorno al nostro staff quindi risolviamo un sacco di
problemi per te e se usi la nostra arte
vogliamo rendere i nostri strumenti così buoni
saresti sciocco a usare qualsiasi altro strumento
e così costruendo il meglio possibile
strumenti si ottiene l’opzione più ampia perché
è il più facile che ti permette di essere
il più produttivo e poi lo schierate
con un’infrastruttura standardizzata e così via
usiamo i playbook per operare
rendere operative le nostre squadre su vasta scala e
Parlerò un po ‘ di questo più tardi
ma se si pensa a quello che serve per
costruire un’applicazione web che è utente
di fronte oggi molto di questo è più di
solo l’ interfaccia JavaScript è come
gestisci risorse e guadagni in contanti
come gestisci le comunicazioni
internamente sia tramite HTTP
o canale parsimonioso come fai tu
gestire l’internazionalizzazione delle traduzioni
la rete dati calcola la lista
va avanti e avanti e quindi non ho intenzione di
parliamo di tutto ciò oggi vado
per parlare di come si costruisce su di esso
e così la nostra piattaforma di mercato al suo
il core è abbastanza semplice abbiamo a
Applicazione iOS e Android che parla
su un endpoint HTTP o una serie di HTTP
endpoint che parlano di sottostanti
servizi e ad un livello veramente alto
i servizi sembrano così forniti
hai bisogno di avere l’autenticazione
la capacità di abbinare l’ offerta e la domanda
prezzi ecc. ma realisticamente sembra a
molto come questo abbiamo di più
3.400 micro servizi che costruiscono il
ingegneria di ubers
è giusto e quindi questo è uno dei
cose di cui parlerò tra breve quale è
come fai a capire quale servizio fa
cosa succede quando è complicato come si fa?
ottenere visibilità sui problemi di prestazioni
e distribuito applicazioni e così via
ancora una volta la nostra API sul mercato è davvero la
singola API che applicazioni esterne
parlare con e questo è come il gateway per il
oltre 3400 sottostanti micro servizi
e così esponiamo oltre un migliaio di HD
endpoint che lo rendono facile per il terzo
le parti si scusano per i nostri team del programma
costruire in cima, ma anche è un singolo
posto a per il monitoraggio e
documentazione per renderlo facile
scopri i servizi e capisci come
usali e così alla fine il
gateway di mercato è davvero solo con
avanzato problema del commesso viaggiatore con
problema logistico come si mappa la fornitura
e richiedete come si fa a renderlo un
mercato efficiente come fai tu
massimizzare il numero di viaggi ma anche
minimizzare i tempi di attesa per i ciclisti e
per i conducenti e quindi se ci pensi
sul pool in esecuzione in un complesso di città
problema commesso viaggiatore e quindi guarda
a tuffarsi in alcuni dettagli su come noi
ridimensionato con nodo in appena un secondo ma a
capisci questo dai un’occhiata al nostro
cronologia nel 2009 abbiamo iniziato con PHP my
sequel in questo periodo
Il 2010 è quando il nodo è uscito e ha iniziato
per ottenere l’ adozione popolare abbiamo iniziato a
muoviti verso il nodo J che la mamma sta per essere
al momento è scala web e risulta
non è proprio vero
e così siamo migrati ad esso e lontano da
abbiamo iniziato a sostituirlo con le cose
come Redis abbiamo iniziato a migrare al mio
sequel perché siamo originariamente su
Postgres e abbiamo un po ‘superato il nostro
abilità o il giusto throughput su Postgres
al momento e poi abbiamo iniziato a scrivere
il nostro archivio dati che è la lista degli schemi
costruito in cima al mio sequel e poi da
recentemente c’è stata una grande spinta a
tipo di standardizzazione su go in Java ma
parliamo di come siamo arrivati qui
JavaScript quindi i monoliti no
necessariamente un male ben non sono che al
prima, ma si trasformano rapidamente in una palla
di fango e così monoliti davvero ottimizzati
per la velocità di sviluppo del primo stadio
progetti quando un singolo team lo possiede e
consolida tutto il tuo operato
in alto in un posto unico c’è
solo un’applicazione per distribuirne una
codebase da mantenere e il
i microservizi sono una cosa ma
i micro-servizi sono davvero la cosa giusta
questo è focalizzato su una sola cosa
una cosa non significa che una API significhi una
dominio aziendale e così come abbiamo iniziato
rompere a parte separare il nostro monolite e
creare molti micro-servizi che abbiamo imparato a
poche cose lungo la strada
uno dà chiari confini di proprietà
se c’è una singola squadra che possiede un
singolo dominio aziendale è possibile mappare che
ai singoli servizi c’è una squadra
determina l’autenticazione e l’identità
quindi possiedono l’identità di autenticazione
servizi la maggior parte del tempo ha anche dato
noi di nuovo velocità specifica del prodotto quando
stai crescendo super veloce che stai assumendo
tutti questi nuovi ingegneri in cui il
ingegneri medi meno di sei mesi
in compagnia e tu lo vuoi davvero
rendere molto facile il loro spostamento
il loro ritmo
non vuoi un fondamento ereditario
servizi che bloccano il prodotto
sviluppo di un nuovo prodotto e così via
permette la mossa ci permette di spostare il
business più veloce e dà squadre
velocità indipendente anche quelli che risolvono
problemi di ridimensionamento non solo dei sistemi interni
ma anche la compagnia come si raggruppa
le persone insieme e poi ci dà il
capacità di consolidare la formazione
documentazione e le nostre attrezzature sotto
ma alla fine ha dato il linguaggio della squadra
lingua e indipendenza della piattaforma e
questa è una parte importante di come noi
ha iniziato ad adottare il nodo non era un po ‘
mandato che è venuto giù da alcuni
squadra esecutiva è stato letteralmente
ingegneri come la firma del nodo JavaScript
abbastanza per risolvere il problema al momento
avevamo un sacco di talento che era
familiarità con javascript nel nodo
ecosistema e quindi la squadra è appena sorta
è cresciuto organicamente da lì
ma come la squadra va da centinaia a
migliaia a migliaia di te
davvero bisogno di iniziare a standardizzare e
è proprio quello che abbiamo iniziato a fare
è okay abbiamo un set preferito di
lingue ma puoi usare qualsiasi strumento tu
voglio per il lavoro, ma ci ha anche dato
affidabilità del sistema nel suo insieme
ogni servizio è indipendente per ogni servizio
è scalabile e ogni servizio è
indipendentemente testabile quindi ce ne sono alcuni
cattivo che viene con quello buono è
maggiore complessità al tuo punto in cui
stai guardando una versione di alto livello
ne sembra uno spaghetto, quindi come?
fai la scoperta di quando hai questo
molti servizi come li chiami presto
su ingegneri sono persone creative loro
tendono a nominare cose interessanti che diamo
cose nomi interessanti e loro no
mai avere qualcosa a che fare con il
servizio quindi il servizio di autenticazione
non è chiamato il servizio di autenticazione
qualcosa di molto diverso e quindi come farlo
la mappi alla roba sotto di te
Devo essere in grado di fare molte scoperte
molto facile
sempre coerentemente in modo coerente
diventa un problema di coerenza finale
alla fine diventa un problema perché
i tuoi dati non vivono più in un singolo
posto è diffuso in molti
database attraverso molti servizi e poi
tracciamento distribuito quando si inizia a
imbattersi in problemi di prestazioni come fai tu
capire la causa principale del
problema di prestazioni e quindi ne abbiamo costruiti alcuni
strumenti per aiutare ad alleviare alcuni di questi
problemi e poi ovviamente c’è il
spese generali operative per ogni servizio
è necessario monitorare è necessario distribuire
hai bisogno di strumentarlo e di cui hai bisogno
per assicurarsi che sia sicuro e così ogni
tempo si aggiunge un nuovo servizio, se lo sei
facendo questo con strumenti indipendenti e
si inizia a dover duplicare tutto questo
sovraccarico operativo e l’ultima cosa
è finito con il codice ripetuto
e sforzi ripetuti e così quando lo hai
tutte le squadre del miele si assicurano che non ci sia
più team e un ordine di ingegneria
di migliaia di persone che costruiscono lo stesso
tipi di servizi e così Martin Fowler
ha questo grande grafico che mostra di meno
sistemi complessi che richiedono uno sforzo extra
necessario per utilizzare un micro servizio
l’architettura supera i suoi benefici ma
una volta che il problema diventa più complesso
e la dimensione della squadra aumenta e il
i benefici superano il rischio
e quindi scegliere un micro servizio
l’architettura dipende in gran parte dal
complessità dell’applicazione del
complessità della tua squadra e non c’è
regola d’oro e quindi uno dei modi in cui
abbiamo finito per ridimensionare il nostro nodo
le applicazioni erano risolvendone alcune
diversi problemi uno come si fa
livello di applicazione di partenza e usiamo
la nostra, almeno abbiamo usato per usare s2 di Google
libreria per dividere il mondo intero così
libreria googles s2 sostanzialmente prende un
sfera e scomposizione in diversi
regioni e così da quelle regioni che possiamo
iniziare a frammentare il nostro database o
applicazioni basate su geografie in giro
il mondo e quindi il problema con questo
è quando si ridimensionano le applicazioni
fare richieste in tempo reale specifiche
a una geolocalizzazione
hai aumenti di richiesta come qualcosa del genere
a New York la domanda di punta non lo è
sarà uguale ad Amsterdam o
a Singapore oa San Francisco, quindi come
fai a pezzi quell’ambiente e così uno
dei primi strumenti che abbiamo scritto nodejs
per aiutarci a scalare le applicazioni era Ring
Pop Ring Pop fornisce il livello di applicazione
tracciare e così ti permette di portare
distribuire il coordinamento della cooperazione a
servizi ma in realtà è una stringa in cima
di un protocollo di appartenenza che ti permette
scegliere o questa nostra istanza
l’applicazione può gestire la richiesta o io
è necessario inoltrarlo all’appropriato
esempio possono e così sembra molto
come questo per ogni istanza di nodo che sei
correndo hai chiamato un client Ring Pop e
questa pianta pop anulare può capire quale
richiede questa istanza può servire così io
in grado di gestire le richieste per questo particolare
posizione o per questo particolare servizio
e così questo ci permette di decidere facilmente
come volevamo tagliare il backend ma
gestiscilo tutto a livello di applicazione
e quindi ring pop è scritto in nodejs
e abbiamo clienti per una varietà di
lingue una delle prossime cose che noi
imparato è che fare richieste HTTP
è stato davvero costruito per un mondo e cosa
ti stai connettendo da un browser a
client su un server ma quando lo sei
fare richieste server a server HTTP è
costoso e quindi c’è di più
modo efficace per comunicare tra
questi micro servizi di back-end e così via
il risparmio di tempo esisteva da Facebook
ma non aveva il supporto linguistico
di cui avevamo bisogno in quel momento e così anche noi
ha scritto il canale T e quindi il canale T era a
Protocollo RPC che ci consente di realizzare un
richiesta molto efficiente per il back-end
servizi e quindi canali T disponibili
più lingue ma questo è come noi
in realtà comunichiamo sotto nel nostro
sottostante l’ architettura dei micro servizi
e poi uno degli strumenti persi che noi
costruito per nodejs
era Jager e quindi Yeager ha davvero costruito
è stato originariamente costruito su Twitter Zipkin
e fornisce una transazione distribuita
tracciamento per applicazioni di distribuzione complesse e
quindi quando stai guardando un complesso
applicazione che vuoi capire dove
il problema delle prestazioni è quello che vuoi
avere visibilità sul sottostante
chiama in modo da poter iniziare a vedere dove il
hotspot nella prestazione alla radice
causa di problemi di prestazioni si trovano e così
gran parte di ciò che abbiamo fatto è stata la figura
come rendere l’osservabilità
i nostri servizi distribuiti e così abbiamo fatto
che attraverso pochi modi diversi di
strumentazione t canale usando Jager
per visualizzare e client Jager a
strumento i servizi sottostanti e
abbiamo ridimensionato le nostre applicazioni di nodo
usando il pop verde e quindi c’è grande
annotazioni di ingegneria sulla nostra ingegneria
blog su ognuno di questi servizi ho
non ho troppo tempo e c’è un
sacco di contenuti, ma io ti seguirò con
le diapositive alla fine e così alla fine
nota è solo un involucro sottile intorno
C ++ è un sottile strato di scripting in giro
C ++ e quindi tutte le prestazioni di Linux
strumenti che sei abituato a lavorare e così via
è stato anche costruito in cima a quelli così
se sta usando il nodo di costruzione del nodo
fiamme di grafici di fiamma della CPU con traccia P
puoi ancora usare tutto il normale
strumenti di performance che ti piacerebbe capire
problemi di prestazioni nel tuo
applicazioni e quindi la ragione per cui mi piace
punta la cella è che dovresti imparare
come profilare le applicazioni su Linux e
allora dovresti capire come ottieni
visibilità su quelli distribuiti
le applicazioni non ci sono proiettili d’argento
e così abbiamo imparato un paio di cose diverse
lezioni e quando abbiamo iniziato con il nodo
le prestazioni non erano così importanti
come è oggi ma da quando siamo migrati
a tutti abbiamo iniziato a migrare tutti
dei nostri servizi di corso ci siamo resi conto che
la latenza è troppo alta per ultra
sistemi di back-end performanti di nuovo noi
adottato versioni precedenti dei nodi quindi a
molto di questo è cambiato nel tempo ma quando
hai una dinamica dinamica di digitazione dinamica
collezione tutto ad un tratto il
le prestazioni non sono prevedibili come
è con altre lingue e quindi il p99
la latenza del formato inizia a diventare a
problema non era circa la media
latenza per la richiesta di cui si trattava
che una richiesta che prende un sacco di
tempo e così presto ha reso molto
veloce per iterare, ma come la dimensione del
team scala la velocità dello sviluppatore
ha iniziato a rallentare e una squadra di cinque
le persone sono molto facili da sviluppare ma come
aggiungi cento o anche cinquecento
impegnarsi con la stessa base di codice
le cose iniziano a rompere di nuovo usando
i micro servizi ci danno flessibilità e
rende tutto indipendente ma anche
mi richiede di avere un’interfaccia stretta
tra la lingua diversa ma noi
bisogno di servizi quindi se si rinomina un campo
in un posto ora tutte le dipendenze
bisogno di adottarlo e quindi di nuovo micro
i servizi richiedono un’interfaccia stretta e
utilizzando le lingue che supportano la staticità
digitando sei in grado di imporre così tanto
prima nel processo e così quando tu
avere grandi team di sviluppo
contributo che inizia ad avere davvero
un impatto su oltre 100 sviluppatori e così via
ci permette di cogliere questioni in Corporatura
tempo piuttosto che in fase di esecuzione e di nuovo
assumere era veloce da imparare, ma lo era
facile scrivere codice di scarsa qualità
ti permette di muoverti velocemente ma anche
ti permette di essere sciatto nel processo
e quindi una delle cose belle è te
può scrivere performant di alta qualità
Codice JavaScript ma che richiede
esperienza e quando assumi persone
Là
molto rapidamente anche quando sono fantastici
persone acute non hanno imparato il nodo e
non conoscono le insidie del comune
modelli di progettazione con nodo sono
incentrato su come fare le cose e così tu
vuole renderlo sicuro per gli sviluppatori di
costruisci le cose velocemente e nodejs
a volte un sacco di persone sono sciatte
quante persone ricordano la biblioteca
che ha preso giù internet perché
qualcuno si è seccato per qualcuno
volevo rinominare il loro pacchetto così
c’è un grande ecosistema di piccole dimensioni
librerie in nodejs ma ce ne sono alcune
problemi che vanno con che molti di loro
erano immaturi rispetto ai loro semi
Java o go controparti un buon esempio
questo è il client HTTP nudo e quindi il
la versione go è 10 volte più veloce ma lo è
puramente l’implementazione se lo fosse
scritto in C ++ sarebbe molto
meglio implementato e così mentre tu hai
questo grande ecosistema di piccola biblioteca
a volte le librerie sono troppo piccole
a volte la catena delle dipendenze non lo è
necessariamente chiaro e quindi hai problemi
dove il pad sinistro può abbattere il
Internet
e alla fine non aver paura di
scrivendo C ++ così anche di nuovo è solo un
piccolo livello di scripting quindi a volte quando
hai bisogno di più prestazioni il giusto
cosa da fare è solo scendere di un livello e
quindi scrivere attacchi che espongono che
funzionalità per la tua lingua e io
pensa spesso che le persone no
pensa necessariamente che dovrebbero farlo
ma non c’è niente di sbagliato
quello e parti dei nostri servizi principali sono
scritto in questo modo e così di nuovo solo a
ricapitolare alcune delle lezioni che apprendiamo
HTH una canzone è stata progettata per i browser
usando RPC con il canale T e il risparmio è
forma molto migliore per un computer
richiesta del computer quando sei solo
microservizi comunicanti tra ciascuno
altro è molto più efficiente parlare
via protocollo binario questo viene
giù al ridimensionamento con grandi squadre dopo
alcuni micro servizi di età dovrebbero diventare
immutabile a un certo punto è più facile
chiedere alle persone di passare a un nuovo servizio e
è chiedere loro di cambiare tutto
interfacce che si connettono a quel servizio
e così abbiamo questa idea che dopo a
periodo di tempo in cui un servizio non può cambiare
che rilascerà un nuovo servizio che
sostituisce quella funzionalità e l’avere
il linguaggio multiplo consente 14 preferenze
ma serve anche come grandi sviluppatori
basato sulla loro cultura e inizia a
eliminare la facilità d’ uso del riutilizzo
codice
persone su squadre che permettono alle squadre di muoversi
in giro per l’azienda e quindi questo è un po ‘
problemi ci limiteremo a regolare che, per
tutti i problemi di prestazioni vanno bene
difficile eseguire il debug quando si dispone di questi
applicazioni distribuite complesse con
migliaia di servizi, quindi abbiamo dovuto
investire pesantemente in standardizzati
cruscotti per darti un significato
strumenti di informazione e osservabilità che
ti permettono di arrivare alla causa principale di
questi problemi di prestazioni come Lethe
ager e lungo e non dovrebbe mai rallentare
produzione se qualcosa di sbagliato dovrebbe essere
rilasciare piuttosto che ritardare la richiesta successiva
ma tutte queste decisioni sono
decisioni di architettura che sono giuste
trade-off è facile quando stai crescendo
molto veloce per andare con il momento di lasciare
l’impulso ti porta ma spesso
devi fare un passo indietro ed essere intenzionale
con queste decisioni e così tante
queste lezioni vengono perché nessuno
fatto un passo indietro e reso intenzionale
decisioni Gli ingegneri costruiscono solo cose
sopravvivere per essere in grado di scalare così le cose
non stavano cadendo e quindi penso che il
punto saliente e così il prossimo modo che usiamo
JavaScript è davvero con il nostro web
la nostra piattaforma web oggi è basata
su reagire ed esprimere la maggior parte di aperto
strumenti di origine che probabilmente hai visto
le varie proprietà se è uber
calmo e controlla per un giro se
ti interessano le auto a guida autonoma
o tecnologie avanzate gruppo uber
paura di prenotare un carico e un libro dei pulsanti
un carico che si iscrive a tutti
stime che ordinano pacchetti di film alimentari
o cose in città e gestisci il tuo
business visualizzando i dati per la città
governi e il mio sito web preferito che
noi manteniamo personalmente è sviluppato sopra
comm dove autorizziamo le terze parti a
costruisci esperienze commoventi ma la ragione
Mostro tutti quelli che abbiamo più di 250
applicazioni web che dobbiamo
mantenere e senza coerenza
fondazione tutte queste applicazioni lo farebbero
hanno costruito interamente costruito
diversi strumenti e diversi
architetture che creano un più alto
verosimiglianza che avranno
problemi in modo che la vulnerabilità della sicurezza
e o semplicemente uno sforzo duplicato
squadre che inizi a realizzare
investire in piattaforma risolve questi problemi
problemi e quindi noterai il tema
è che investiamo in queste tecnologie
piattaforme che consente agli sviluppatori di utilizzare a
personale standardizzato appositamente costruito
per i nostri strumenti e quindi parliamo un po ‘
un po ‘su come lo abbiamo fatto per il nostro web
piattaforma quindi per il nostro web di alto livello
piattaforme
costruito su nodejs e npm come tutto il
Applicazioni JavaScript e noi usiamo
Esprimere in quanto è una struttura leggera
che abbiamo esteso con un mucchio di
middleware
e sul lato client usiamo reagire
read up piuttosto semplice ora questo
è particolarmente all’avanguardia credo
questo è un open source piuttosto standard
impilare questi giorni e quindi usiamo internet
proxy sinha per server Web front-end
e i load balancer utilizzano NPM per gestire il nostro
pacchetti Babel in modo che possiamo usare l’ultima
generazione JavaScript Express così abbiamo
un framework web leggero reagisce per l’interfaccia utente
rendering Redux per la gestione dello stato e
quindi un mucchio di strumenti su cui è costruito
il massimo del sorso che ci permette di avere un
costruire e distribuire coerentemente pipeline e
standardizza le build quando attraversa tutte queste
applicazioni e così per la maggior parte
la maggior parte di queste applicazioni sono costruite
usando lo stesso stack e viene fornito con
qualche altra salsa speciale di cui abbiamo bisogno
aggiungere sopra che è un che lo rende
appositamente costruito per il nostro stack di cui abbiamo bisogno
un registro interno di NPM per privati
gestione dei pacchetti e poi hashing e
sostanzialmente migliore resilienza, quindi non lo facciamo
ottenere bloccato da distribuire i problemi e quando
hai una grande squadra che vuoi fare
è molto facile impiantare nuovi progetti così
abbiamo il nostro equivalente al vo uomo
questo ci permette di fare il boot di nuovo
applicazioni con queste migliori pratiche
built-in non voglio dover spendere un
giorno di configurazione express per utilizzare tutti questi
middleware Voglio solo creare un nuovo
progetto che è pronto per andare e poi noi
personalizzato il nostro espresso medio personalizzato
con un mucchio di middleware che permettono
noi per gestire l’autenticazione standardizzata
gestire i problemi di sicurezza come XSS cross
falsi e contenuti della richiesta cross site
politica di sicurezza sul front end senza
dovendo essere un sacco di lavoro dovrebbe essere
cotto in modo predefinito e quindi gestibile
metriche che registrano l’internazionalizzazione
analisi della strumentazione errori dovrebbe
solo essere qualcosa che si ottiene costruendo
in cima alla nostra struttura e così alla nostra
il framework ora usa solo Express ma noi
estendere Express per essere costruito intorno a tutti
i nostri strumenti interni le librerie che usiamo
per le librerie di traduzioni che usiamo per
la nostra pipeline analitica ecc. e così via
il lato server ma abbiamo lo stesso
cosa da parte del cliente quindi se vuoi
per creare rapidamente le applicazioni che vuoi
Libreria di componenti di interfaccia utente che rende facile
per provare una build trascinare e rilasciare i componenti
e così abbiamo costruito la libreria sopra
jas e poi ancora non usiamo HTTP per
tutto così abbiamo il nostro I RPC
libreria sul lato client che consente
usiamo intelligentemente HTTP o Qi
Canale o in qualsiasi modo il vostro servizio è
in realtà come comunicanti e quindi
finalmente condiviso la build build tooling per
powered by gulp che ci permette di avere
il ricaricamento a caldo usa le ultime versioni di
JavaScript e lo rendono facile
distribuire risorse e distribuire il nostro
applicazioni e farlo in modo coerente
modo con test standardizzati e
stili di codice standardizzati tramite lint
e sì e quindi rendering universale
per il server e il client penso questo
è di nuovo uno dei più grandi motivi per cui noi
continua a usare node.js oggi è così
ci permette di scrivere lo stesso codice a
lato client come lato server e
ci permette di usare il rendering isomorfo a
fornire le stesse viste sia che sia
front-end o back-end ma facciamo un passo avanti
oltre a quello e non solo in
esponendo un client front-end che è
non è stato scritto in risposta e un back-end
servizio e minacciando nuovo JFS noi
in realtà separare i nostri servizi front-end
quelli che servono le pagine web o al
Almeno i gusci delle pagine dal nostro
servizi di back-end quelli che si interfacciano
con i microservizi sottostanti e
fornire dati a coloro che usano e così via
ci sono un paio di motivi diversi
per questo i servizi potrebbero prendere
vantaggio del rendering universale e
strumenti così tutto funziona a dovere
la scatola ma puoi anche utilizzarla meglio
lingue per caso d’uso specifico, quindi se
vuoi implementare determinati servizi
e vai nel back – end puoi farlo
e poi puoi semplicemente parlare con loro via
nodo ed esporre che in JavaScript su
il front-end ti permette anche di farlo
distribuire e scalare i tuoi servizi
separatamente e finalmente puoi riutilizzare
quei servizi di back-end per più cose
come un client mobile o per il nostro esterno
API e quindi se dai un’occhiata a cosa
la nostra architettura sembra che debba
aggiustalo per rendere felici alcune persone
ma ad un alto livello questo è ciò che il
l’architettura sembra nel client
di nuovo lato è un’applicazione di reazione
all’interno di questo abbiamo un set di
componenti di reazione standardizzati e poi
usiamo il redux per le dichiarazioni intese insieme
il modo in cui abbiamo la nostra libreria RPC
sotto si occupa di parlare con questi
servizi di back-end e poi abbiamo i nostri
indietro il nostro server di applicazioni back-end
che è solo il proxy di nginx e
ha proxy e quindi abbiamo il nostro
application server l’applicazione
server ha una pipeline di asset permanenti come
è davvero solo scaricare cose a a
CDN abbiamo un modo per indirizzare le richieste a
i servizi di brevetto di base e poi
abbiamo le pagine effettive che vengono pubblicate
al browser e poi lungo lì
anche avere modi per fare isomorfo
rendering e un modo per avere un
meccanismo di routing condiviso tra il
front end nel back – end e con
reagire router e quindi uno dei
le cose su cui ci concentriamo sono queste che reagiscono
componenti per renderlo facile da avere
interfaccia utente standardizzata senza dover
scrivi tu stesso tutto il codice così tanto
le persone hanno familiarità con i bootstrapper
Fondotinta di erbe questo è il nostro equivalente
costruito in cima a reagire e quindi ci è piaciuto
perché ci permette di vedere tutto
quei siti internet personalmente li penso
sembrano tutti molto bene e non lo sono
perché avevano un designer dedicato su
ogni squadra a cui piace ha reso tutto pixel
perfetto è perché avevano il
utensili standardizzati che ha fatto sembrare
bene fuori dalla scatola e quindi questo è uno dei
i motivi per cui abbiamo questi reagiscono
componenti per cui sono davvero ottimizzati
prestazioni e incapsulano il
stile in modo che sul filo siano come
la luce è possibile ma hanno anche
bacon strumentazione analitica se io
clicca su un elemento del modulo non lo voglio
per tracciare il redux dello stato e quando
digitano alcuni dati e lo passano
lungo Voglio essere in grado di intercettare
quegli eventi e li hanno automaticamente
passato alla nostra pipeline di analisi e così via
avendo tutte le cose incorporate nel
front-end lo rende facile da fare
pronto per l’uso e poi come cambiano le marche
col tempo che alla fine lo fanno
rende facile ottenere aggiornamenti senza interruzioni
alle nuove versioni e quindi crediamo
pesantemente nello scrivere CSS e JavaScript
e questo è per alcuni motivi uno è
perché è ultra performante possibile
serve sempre e solo il CSS che è in realtà
essere usato sulla pagina e tu no
devono gestire con quel runtime e così via
cerchiamo di godere usiamo uno dei
ingegneri sul nostro team di piattaforma web che
in realtà ha scritto tron di stile al di fuori di
uber e poi l’abbiamo adottato nel nostro team
pure e abbiamo iniziato a usarlo
internamente quindi tutto il nostro CSS è alimentato
dallo stile Tron e dall’ultima generazione
della nostra piattaforma web e questo lo rende
facile da gestire tutti gli stili in un unico posto
hai un file uno reagisci componente
una cosa da modificare non è necessario
traccia le librerie attraverso le librerie
figura
come fare qualcosa – come fare
qualcosa sembra diverso e quindi uno di
i miei modi preferiti che usiamo javascript
è in realtà in visualizzazioni di dati e
quindi questo è uno dei modi più potenti
che usiamo JavaScript oggi e quindi questo
è un giorno nella vita di San Francisco
e quindi se dai un’occhiata a questo
visualizzazione questo è in realtà alimentato
by def GL che è un framework WebGL
abbiamo rilasciato e ci permette di
capire come funzionano le città noi uno dei
i nostri valori valori culturali sono
celebrare la città e ciò che si inizia a
capisci è che ogni città è molto
unico, ma al fine di capire come
funziona devi essere in grado di visualizzare
e così abbiamo investito molto questi
quadri di digitalizzazione per permetterci di
fallo e così puoi controllarli a
un po ‘più tardi ma parlerò
loro rapidamente ora abbiamo reagito è questo
è una libreria di grafici che fondamentalmente
mappe per reagire componenti e quindi se
sei abituato a costruire grafici eccellenti
con d3 questa è un’interfaccia reattiva da fare
quello con componenti standardizzati per
vari grafici la maggior parte delle mappe che tu
vedere sul nostro sito Web e nel nostro
applicazioni è alimentato da reagiscono mappa
GL e quindi se conosci gli uffici cartografici GL
libreria questa è solo un’interfaccia reattiva
a quello e poi uno dei miei preferiti
le librerie sono il mazzo GL che ti permette di
utilizzare milioni di punti dati e a
visualizzali in modo iper formale
e così davvero è costruito in cima a WebGL
– ed è un approccio stratificato per
visualizzazione dei dati e poi anche noi
rilasciato luma GL e così luma GL semplice
interfaccia a WebGL in realtà standard
interfaccia usando X script 6 – WebGL –
che si occupa anche di 64 bit
precisione ok quindi reagisci vis di nuovo
grafici molto facili attraverso un’interfaccia reattiva
puoi controllare di più su JavaScript
il nostro web di nodo slash bio uber github e
quindi ti dà un componibile
sistema di visualizzazione ma in realtà lo rende
facile da rendere grafici se si tratta di linea
grafici a barre di area diagrammi di dispersione di mappe di calore
sunburst and tree maps e così via
grafico diverso e visualizzazione voi
può immaginare che sia supportato da reagire è
e così alcuni dei modi in cui lo usiamo
oggi sono di nuovo a capire la salute
le città fluiscono e quindi cosa stai cercando
a è
una mappa interattiva di New York come te
sopra il mouse puoi vedere il ritiro e
abbandonare luoghi da un particolare
punto e quindi se sei un manager di città
cercando di capire dove serve l’offerta
essere in una città nel tempo e dove
le persone vengono lasciate fuori da questo
molto facile da capire quell’informazione
questa è un’altra visualizzazione che mostra
densità a New York e quindi questo lo rende
facile da capire
nel corso del tempo ciò che preleva e drop-off
per assomigliare in certe posizioni e così
ancora una volta tutte queste visualizzazioni sono
alimentato dal debito TL e il debito si sente davvero
progettato per rendere la visualizzazione di grandi dimensioni
set di dati estremamente semplici e così quando
sei facile visualizzare una coppia
migliaia di pezzi di informazione
è molto più complesso da visualizzare
in tempo reale milioni di pezzi di
informazioni e quindi utilizzando la stratificazione e
cosa istantanea siamo in grado di fornire alto
prestazioni come hai visto in precedenza
e poi luma GL luma GL ce la fa proprio
è molto facile interagire con WebGL, quindi è così
un’interfaccia moderna per affrontare
WebGL e la piattaforma di base componente a
gestisce la precisione a 64 bit di cui abbiamo bisogno
per il grado di mappatura che facciamo e
fornisce anche un modo migliore per gestire
errori in WebGL e quindi è possibile effettuare il check out
più GL uno dei migliori esempi che penso
hanno quando si mappano i taxi gialli
per i cappucci dello schermo nel corso del
giorno e così tristemente non ci penso
l’animazione sta giocando, ma quello che puoi
vedi è Manhattan resa in 3d e poi
il traffico scorre attraverso le città reali
tutto fatto in tempo reale utilizzando milioni di
punti dati e quindi questo è in realtà
un’impresa abbastanza impressionante per essere in grado di
fare in JavaScript e averlo
ad alte prestazioni e quindi tutto questo è
disponibile come open source e lo siamo
completamente aperto per tirare richieste nel
la comunità quindi sentitevi liberi di dare un’occhiata
e segui e ancora questo è uno di più
visualizzazione che mostra nel periodo
di 24 ore in cui appaiono i drop-off
San Francisco nella Bay Area e quindi uno
dei più grandi modi in cui usiamo Javas
per oggi è quello di ottenere visualizzare città
in modo che capiamo come la maggior parte
funziona in modo efficiente in una città e la maggior parte di
questo è alimentato tramite JavaScript e tutto
le biblioteche che parlano di oggi sono
tutto open source e disponibile su uber
da oh e così dall’ultimo posto che usiamo
javascript è attraverso il nostro sviluppatore
piattaforma e quindi vogliamo team – vogliamo
terze parti per essere in grado di costruire in movimento
sperimenta se sta offrendo
aumento su richiesta o on-demand
consegna esponiamo tutti questi 3400 micro
servizi come per il dominio aziendale
oggetti e lo rendiamo molto facile
interagire con loro tramite il nostro nodo SDK così
se vuoi essere in grado di offrire
aumento on-demand all’interno del tuo
applicazioni o essere in grado di collegare
direttamente nel viaggio super per creare un
esperienza personalizzata che puoi fare molto facilmente
che attraverso il nostro nodo SDK e così di nuovo
quasi tutto questo è alimentato da open
strumenti di origine e quindi molto pesantemente
contribuire alla comunità e non
solo gli strumenti che usiamo e ci sono
presenza su github ma anche attraverso il nostro
blog di ingegneria e quindi hai ragione
tonnellate di tutorial che vanno molto in profondità e
come utilizzare alcuni di questi strumenti e ordinare
del perché li abbiamo costruiti e quindi se lo siamo
parlare così volevo andare molto veloce
ad alto livello attraverso molti dei
strumenti ma il modo migliore per seguire è
attraverso le profonde immersioni che vivono nel nostro
mondo dell’ingegneria e quindi se lo sei
interessato a parte del back-end nudo
piscine puoi andare su github.com slash
uber nude e quindi questo è veramente concentrato
su tutti gli strumenti di imballaggio open source a
costruire le applicazioni node.js le cose io
parlato di cose precedenti come Ring
Pop e Jager e Qi Channel e poi
puoi andare su github.com / uber web per
alcune delle nostre proprietà web front-end web
strumenti e come la nostra quaresima standardizzata
regole per avere codice coerente e
poi tutti gli altri tipi di
visualizzazioni che hai e poi
di nuovo finalmente è la nostra ingegneria di uber
blog uber inch e super calmo e noi
tuffarsi in tutti questi strumenti e attraverso
approfondita write-up in modo che il posto migliore in cui
pensa per ogni strumento che ho menzionato
abbiamo un muro molto sicuro in loro
quindi penso che sia un ottimo posto per immergersi
e così vogliamo costruire un open
piattaforma per la costruzione di esperienze in movimento
non solo usando i nostri strumenti ma anche voi
sapere fornendo i dati che noi
usiamo per costruire un ottimo servizio e noi
voglio esporlo a terzi
e quindi ciò che futuro si costruire tutti
questi strumenti è tutto questo discorso è costruito
dalla gente molto più intelligente di me
devi solo essere la persona che
lo rappresenta
questo viene da te che conosci migliaia di
ingegneri che lavorano su tutti questi strumenti e
quindi gran parte del merito di questo discorso
va alle molte persone intelligenti di uber
e se vuoi unirti al team che abbiamo
uffici ad Amsterdam e San Francisco
in tutto il mondo, quindi sentitevi liberi di seguire
e ci sono dei bei discorsi che io
anche raccomandare pure e con quello io
vorrei aprirlo per domande
Please follow and like us: