Press "Enter" to skip to content

GOTO 2018 • Serverless Architectural Patterns and Best Practices • Sascha Möllering


[Musica]
ciao tutti, quindi prima di iniziare ho appena
voglio dire quanto sono felice di essere qui
oggi e sono molto onorato di avere il
opportunità di parlare al Valen 2018
quindi questa è la prima volta che ho il
opportunità di parlare al volo
conferenza quindi grazie mille per
che così benvenuti a diversi come
modelli architettonici e migliori
Pratica il mio nome è Sascha Mehring e
Sono un architetto AW basato su soluzioni
a Berlino quindi e lavoro per Amazon Web
Servizi ora per circa tre anni
avere 16 anni di software di sviluppo
architettura del sistema di architettura
sfondo e ho scritto tonnellate di Java
codice e recentemente ho iniziato ad adottare
golang e sono davvero entusiasta di questo
quindi il goal è sorprendente
e di solito faccio molti contenitori
roba relativa e relativa al servizio , quindi se
vuoi seguirmi su twitter, lo sono
sasha due per due e puoi lasciarmi un
e-mail a smile su amazon.de quindi nostro
l’agenda di oggi è concentrarsi su tre
diversi modelli di servizio quindi prima di
Naturalmente inizieremo con un breve
introduzione nei micro servizi e
basi di servizio e questo è in realtà
davvero importante per la comprensione
degli schemi di cui parleremo oggi
inizieremo con l’applicazione web
modello che è applicabile anche per
come diciamo i backend mobili micro
servizi e implementazioni API e quindi
Parlerò dei dati come modello
e alcuni sub pattern molto specifici
relativo all’elaborazione analitica e
ultimo ma non meno importante parlerò
elaborazione del flusso, ma prima lo faremo
tuffati in ognuno degli schemi che faremo
dare un’occhiata più da vicino ad alcune delle basi
concetti di applicazioni di servizio così
Partiamo subito con il concetto di
micro servizi e che cosa questo termine
in realtà significa nel contesto del servizio
architetture quali sono i paradigmi
importante
quindi non posso immaginare che molti di voi abbiano
visto qualcosa come questo o qualcosa del genere
simile quindi andremo brevemente sopra
questo solo per dare una piccola introduzione
prima di tutto nel tuo tipico
architettura di micro-servizi che puoi usare
lingue diverse e diverse
piattaforme per diversi microservizi quindi
hai un ambiente poliglotta quindi per
esempio diciamo che inizi con a
Sviluppo di Python e poi ti rendi conto
okay forse questo non è abbastanza veloce o io
avere requisiti molto specifici e quindi
passare a qualcosa come raster golang
o così e così puoi aver mescolato
lingue e piattaforme miste per il tuo
micro servizi e di solito micro
i servizi si concentrano su uno specifico
funzionalità in modo da fare una cosa ma
fai molto bene e il team che
di solito crea quei micro servizi è
anche responsabile della loro esecuzione in
produzione e tipicamente il tuo micro
il servizio è una specie di scatola nera, quindi questo
significa che hai un’interfaccia semplice e
si nascondono i dettagli di implementazione e
Naturalmente è possibile implementare i micro servizi
indipendentemente l’uno dall’altro così tu
dovrebbe evitare situazioni in cui hai
come dove si deve distribuire il servizio essere
perché hai distribuito il servizio a e
non c’è un servizio centrale quelli
i servizi parlano tra loro quindi abbiamo a
servizio decentralizzato paesaggio micro
i servizi ovviamente dovrebbero essere in generale
senza stato e se lo hai detto
dovrebbe essere mantenuto su sistemi esterni
le informazioni di sessione possono essere per esempio
memorizzato e diciamo Redis o memcache D
e i dati dovrebbero essere archiviati in relazione
database o nessun sistema sequel così
a seconda delle tue esigenze specifiche
certo e puoi usare o puoi
implementare l’ accoppiamento libero di quelli
servizi che utilizzano resina a due fasi o
le code diciamo che è possibile usare le chinasi SQL
Kafka Amazon MQ RabbitMQ T per disaccoppiare
quei servizi particolari e condivisi
dovrebbero essere le librerie e condividere gli SDK
evitato perché in generale questo ha un
impatto negativo sul
questo processo cucito da librerie condivise I
biblioteche medie che creano reali
accoppiamento e dipendenze quindi non usare
librerie condivise per la tua logica aziendale
e per i tuoi modelli, quindi accetta
ridondanza e ridurre una sorta di
servizio condiviso a cui è possibile accedere
altri servizi o anche pensare a
realizzare i tuoi micro servizi e mantenere
in mente l’applicazione è molto più economica
rispetto all’astrazione sbagliata e per favore
non fare supposizioni sulle cose
come gli indirizzi IP o le directory, quindi questo
è molto importante perché questo può
avere un impatto enorme se inizi
per esempio, la migrazione dei tuoi servizi
se hai i tuoi servizi in esecuzione
il tuo centro dati o nel tuo
colocation e hai specifici
requisiti e ti affidi a dire
indirizzi IP o file system hard-coded
layout e quindi si inizia la migrazione
lo farai con quei carichi di lavoro a due AWS
sicuramente incappato in problemi perché tu
non avrebbe quei IP specifici
indirizzi più e si dovrebbe sempre
utilizzare meccanismi e servizi per
registrazione
quindi un esempio popolare per questi servizi
cose come console etcd eureka
Zookeeper
è il nome e, in generale, è una buona
idea di utilizzare protocolli leggeri per
comunicazione quindi ad esempio puoi
usa HTTP e resto per asincrono
comunicazione tra servizi e abbiamo
già toccato asincrono
comunicazione un po ‘così puoi
usa implementazioni di messaggistica come
Kinesis SQS e così via per asincrono
comunicazione quindi abbiamo dato un’occhiata più da vicino
a micro servizi e alcuni dei migliori
pratiche e nei prossimi minuti
voglio coprire alcuni dei fondamentali
concetti di applicazioni di servizio che
sono persone che sono applicabili a tutti
i modelli di cui stiamo discutendo oggi e
tutti quei modelli che farò
mostrano oggi sono ben adottati e utilizzati da
i clienti AWS quindi iniziamo
con l’applicazione del servizio idrico in realtà
Sì, così come potresti già sapere su AWS
abbiamo diverse opzioni per distribuire il tuo
le applicazioni quindi certamente certamente voi
può distribuire direttamente le tue applicazioni
in una macchina virtuale che è facile
istanza o è possibile distribuirli e
contenitori docker su ec2 con servizi
come ECS o eks e poi hai questo
classe di servizio che è in genere
medio che è chiamato servizio gestito
e questi servizi dove non puoi
essere veramente responsabile per il reale
server ma questo servizio è ancora lì
così e quelli sono davvero importanti quando
si consuma il servizio perché è necessario
essere in grado di dimensionare correttamente che è
potenzialmente anche scalare quel servizio e
lo definisci raggiungendo il numero
di server e tipi di istanza di ec2
istanze che si adattano al tuo particolare
carico di lavoro così per esempio, se si desidera
esegui il tuo database Postgres su AWS
quindi una scelta è tipicamente impostata
in RDS, quindi RDS è una specie di
struttura gestita attorno a diversi
implementazioni del motore di database e poi
scegli l’ istanza di ec2 più adatta alle tue esigenze
carico di lavoro quindi forse il carico di lavoro è CPU
l’ ID di istanza intensivo e c5 potrebbe essere un
buona scelta per quello e sulla destra
puoi vedere la classe di servizi che
ci concentreremo in su cui oggi il servizio
servizi in cui i server non sono presenti
affatto così questo significa che puoi tipicamente
ridurre il sovraccarico operativo utilizzando
quel particolare tipo di servizi e
recentemente c’è stata una specie di
confusione e discussione su cosa
il servizio in realtà significa cose come se
Dispongo la mia funzione come servizio
quadro o fare classe mangiatori umani è
in realtà server meno così no, non è così
Ecco perchè
Voglio ripetere questo qui e tu hai
fondamentalmente quattro principi comuni di a
applicazione di servizio quindi nessun servizio
disposizione vuole e di gestire e tu
inoltre non pagare mai per inattività con il servizio
applicazioni quindi per esempio se il tuo
l’applicazione è ciclicamente in
la natura forse si hanno un sacco di in
mese di elaborazione in modo da non pagare
per questi tempi in cui non è in uso e
questo è anche molto importante
quelle applicazioni di servizio sono state integrate
elevata disponibilità e il recupero s
capacità e quei servizi e quelli
avere altri servizi di cui stiamo parlando
oggi è a livello regionale su AWS
Non sono sicuro che tu abbia familiarità con il
concetto di regione e disponibilità e in
AWS questi servizi si estendono automaticamente
zone di disponibilità globali e fornire
tu con costruito in alta disponibilità e
funzionalità di disaster recovery e
forse l’aspetto più importante di a
applicazione di servizio con cui è scalabile
l’uso quindi diciamo che ne hai un sacco
le richieste degli utenti che arrivano e quelle sono
crescendo così sarà l’applicazione di servizio
scala anche così questo significa non server
sono più l’unità di scala, ma la lamina
funziona così e al SRI min 2016 due di
i miei colleghi hanno introdotto il servizio
compute manifesto quindi se vuoi immergerti
più profondo qui si può si può google che
e che è molto simile a quei quattro
principi fondamentali quindi diamo un’occhiata più da vicino
a che cosa un’occasione di viaggio in realtà
consiste in così abbiamo tre diversi
parti quindi il primo è un evento
fonte quindi questo significa che questo può essere cambiamenti
nel tuo stato dei dati, quindi diciamo per
esempio hai una tabella DB dinamo e
scrivi costantemente dati in questo
tabella DB dinamo e si può spingere un delta
attraverso dynamo DB stream e
poi consumare quei cambiamenti e forse
costruito un indice di metro
cose come questa richiesta anche due estremità
punti quindi diciamo che forse hai un
Gateway API impostato che esegue il mapping su Lemna
funzioni e anche cose come i cambiamenti
nel tuo stato di risorsa allora hai come
una seconda parte la funzione stessa che
può essere implementato in diversi
lingue che utilizzano piattaforme diverse così
hai il dotnet Java Virtual Machine
Python nodejs e Golding e poi
c’è una terza parte che hai il
servizi che possono essere qualsiasi cosa, naturalmente
può essere un servizio AWS, quindi puoi
comunicare con DynamoDB e oppure con R ES
database o scrivere cose in Kinesis
stream ma questo può essere anche di terze parti
l’annuncio è così abbiamo già parlato del
concetto generale di apolide
architetture così ma ora la domanda è
cosa vuol dire essere apolidi e il
contesto di un do alias lambda so state
come le sessioni utente dovrebbero essere memorizzate in
un servizio esterno come diciamo dinam
sarà s3 e un lambda Tavares
funzioni eseguite in un contenitore così da te
avere un qualche tipo di ambiente sandbox
che li isola da altre funzioni
e fornisce risorse come la memoria
e quindi CPU e questo è specificato in
la configurazione delle funzioni e questo
contenitore esiste per una certa quantità di
tempo quindi per favore non assumere alcuna affinità
con il computer sottostante
infrastruttura perché diciamo se tu
memorizza i file nella directory temp della barra
nella tua funzione lambda i file potrebbero essere
andato nella prossima chiamata del tuo lambda
funzione quindi significa che devi forse
controlla davvero la tua domanda di lambda
ed è davvero importante parlare
su come funzioni realmente Lambda
comportarsi così quando invochi prima un lambda
Funziona attraverso un processo che
chiamiamo un processo di avviamento a freddo, quindi non lo sono
certo quanti di voi hanno già sentito
su questo scatto così freddo lambda
va bene e questo comporta cose come
scaricare il codice da s3 a lambda AWS
avviarlo in un contenitore su a
host lambda e quindi in esecuzione aggiuntiva
codice di inizializzazione che hai
definito nel codice della tua lambda
funziona così qui in questo esempio è possibile
vedi che sto importando qualcosa di esterno
le librerie sì, quindi questo non è completo
esempio volevo mostrarne solo alcuni
linee di codice e per rendere Fira
quali sono le idee reali dietro a ciò
e sto anche facendo un collegamento con un
Database RDS e cosa è importante qui
è che lo sto facendo al di fuori del
gestore in modo da poter vedere il lambda
evidenziato qui e ciò accade solo
durante il processo di avviamento a freddo, quindi lambda
manterrà il contenitore disponibile per a
periodo di tempo quindi se ne hai successivo
invocazioni della funzione lambda il
la funzione lambda sarà calda e lo è
veramente importante per sfruttare
il riutilizzo del contenitore nel tuo servizio
applicazione perché lo rende molto
più performante e ogni successivo
l’invocazione avverrà quindi su a
gestisci il livello in modo che tu possa vedere qui
evidenziato e se i tempi di avviamento a freddo sono
un problema per la tua applicazione che puoi
anche tenerli al caldo programmando eventi
negli eventi di flood watch , diciamo ogni
30 secondi o giù di lì basta attivare un evento
e mantenere la funzione lambda calda e
ricorda anche che puoi allegare un
interfaccia di rete elastica per il tuo lambda
funzione in modo da poter comunicare con
risorse private nel tuo V PC così uno
esempio molto popolare per questo è se tu
avere un cluster di hash elastico in esecuzione
i tuoi pezzi V di per esempio un raggio
cluster e questo cluster Redis è e
sottoreti private di un PC V e vuoi
per avere accesso ad esso è necessario allegare
un’interfaccia di rete elastica e questo
dovrebbe essere usato solo se necessario perché
aggiungerà al tempo di avvio a freddo e a
poche altre buone pratiche lambda quindi tu
vuoi minimizzare solo la dimensione del pacchetto
due necessità soprattutto se sei tu
usando cose come dotnet e Java e
alcuni SDK AWS come il Java SDK sono
modulare in modo da poter solo portare il
componenti necessari ad esempio i moduli
per dynamo DB e Kinesis quindi prendi a
un’occhiata più da vicino alle tue dipendenze
e buttare fuori tante dipendenze quante
possibile questo riduce l’impostazione della chiamata
tempo e di solito è la migliore pratica per
separare il gestore lambda dal
logica di base della tua funzione perché questo
migliora l’accessibilità del tuo codice così
puoi scrivere i tuoi test unitari per il tuo
la logica aziendale la prova e poi ha un
strato separato di codice di chiamata che
sta chiamando la tua logica aziendale e questo
è anche un ottimo approccio se tu
iniziare con lambda e quindi forse rilevare
in futuro che il lambda è forse
non è lo strumento giusto per questo e per il momento
vuoi migrare a due contenitori
allora è una buona idea avere il
funzione di handler effettiva separata da
la logica aziendale perché puoi prendere
la logica di business inserita in un contenitore
e tu stai bene così e anche la leva
variabili di ambiente tanto quanto
possibile perché questo è molto grande
modo per cambiare il comportamento del codice
senza effettivamente cambiare il tuo codice così
questo è spesso usato se si vuole mantenere
la stessa funzione lambda in diversi
tappe dei tuoi ambienti quindi se tu
avere prova dev in una fase di produzione si
può usare lo stesso pacchetto lambda e solo
dì ok ora sono nella fase di differenza
e poi
la funzione seleziona un diverso set di
configurazioni ed è anche
raccomandato di auto-contenuto
dipendenze nel tuo pacchetto tanto quanto
possibile e tenere presente che la lamina
ha una singola opzione di configurazione per
cambia l’allocazione di memoria del tuo
funzione lambda così cambiando questo
configurazione stai cambiando anche il
quantità di CPU associata a
questa particolare funzione lambda e
ricorda che c’è una metrica del cloud chiamata
la memoria massima usata che puoi
utilizzare per trovare Huhn si configurazione ulema
e un altro modo per ottenere grandi intuizioni
nella tua funzione lambda è di fare leva
Raggi x AWS ed è molto facile
integrare così in realtà è solo un
casella di controllo nella console o una chiamata API
e quindi hai un attivo attivo
tracciamento e questo ti dà informazioni
come impari la funzione nel
contesto del servizio lambda
esibirsi e questo può anche essere usato per
altri carichi di lavoro quindi diciamo forse tu
tenere attivo il cluster delle community
AWS e poi richiesta entrano attraverso il
application load balancer e quindi
a partire dal carico dell’applicazione
bilanciatore si ottiene questo tracciamento
informazioni in modo da poter vedere una mappa di tracciamento
e come le richieste stanno attraversando
la tua architettura quindi è molto molto
utile soprattutto se si desidera eseguire il debug
e poi vedi bene quanto tempo è trascorso
per la comunicazione tra due
alcuni servizi così e c’è anche a
modo per personalizzare le frequenze di campionamento così
ecco un piccolo esempio per mostrare come fare
questo quindi la seconda riga di questo codice
il campione include un campione
file di configurazione per configurare personalizzato
intervallo di campionamento e la terza linea di voi
vediamo che in realtà avvolgiamo il bisogno
dichiarazione dell’SDK AWS al fine di
strumento l’SDK AWS e in questo
caso particolare è s3 ed ecco a
rapido esempio di cosa
prodotto una radiografia per la funzione della lamina così
sulla metà superiore di questa immagine puoi
vedi il servizio laminare stesso e tu
può vedere cose come il tempo di sosta come un
esempio o quanto a lungo una funzione in realtà
aspettato che il servizio lamda fosse
eseguito e puoi anche vedere l’ intero
durata della funzione lambda
in esecuzione dall’inizio alla fine questo è
davvero utile per avere una sensazione migliore
come si comporta effettivamente la tua applicazione
e ora voglio che tu incontri un buon amico
dei miei saluti Sam Sam significa
praticamente un modello di applicazione senza server
e voglio parlare un po ‘di
implementazione e quindi modellazione del tuo
applicazioni di servizio in modo che Sam sia costruito su
cima della formazione di nuvole quindi che significa
puoi riutilizzare qualsiasi strumento che supporti
formazione di nuvole e Sam supporta anche
caratteristiche di formazione di nubi come i parametri
e funzioni intrinseche e tu puoi
combinare alcune risorse con il cloud
risorse di formazione e anche Sam
include alcuni modi per distribuire il tuo
applicazione e fornirà
artefatti per le implementazioni e verrà caricato
fino a S3 e poi si farà leva
cambiamento di formazione di nuvole impostato ed è un
specifica aperta in modo che tu possa trovarla
su github e sì
usalo per la tua implementazione
puoi fare richieste di pull e potresti anche
Ho sentito che AWS ha pubblicato Sam
locale e questo è davvero emozionante
progetto che ti dà modo di fare
test locali per le funzioni di Lema
prima di distribuirli al servizio
quindi puoi fondamentalmente sviluppare test di simulazione
eventi testano le funzioni ulema e dà
anche una copia locale del gateway API
che è davvero fantastico, quindi puoi
spin it up e quindi supporta anche caldo
ricaricando così puoi cambiare il tuo codice
al volo e una volta che hai finito il tuo
test locali
Sam ha anche una implementazione CLI
include tutti gli stessi comandi a
pacchetto e distribuisci la tua applicazione a
il servizio lamda e probabilmente il migliore
in AWS per distribuire il tuo cloud
i modelli di formazione sono una pipeline personalizzata
e che usa un gasdotto e carbone
la pipeline è un’integrazione continua
servizio in modo che la conduttura del carbone sia integrata
supporto per AWS Sam e anche per cloud
formazione ovviamente così e tu puoi
integrare fasi aggiuntive nel tuo
pipeline quindi ad esempio hai costruito
stage per fare build e test potenziali
fasi pure e puoi anche fare leva
gasdotto da dispiegare in diverse fasi
quindi per esempio se vuoi fare un po ‘
testare qualsiasi ambiente di sviluppo e
se quei test passano automaticamente in distribuzione
nel tuo ambiente di staging e
potenzialmente hanno una fase di approvazione manuale
prima di distribuire in produzione e
questo è tutto possibile nel piano di rame o
ciò che è anche veramente grande è che puoi
integrare le funzioni lambda qui così tu
può implementare la logica personalizzata nel tuo
gasdotto e anche di menzionarne uno
capacità con un lambda che fornisce
il capo della capacità di averne uno
lambda alias mappato su più lambda
versioni della funzione suona un po ‘
complicato ma questo è molto importante
per le implementazioni su canary che puoi fare
con il lambda quindi quello che puoi fare è
fondamentalmente da definire nel tuo Centro e
placca versioni a funzioni multiple e
specificare una quantità di traffico e un
intervallo in cui si muoverà il traffico
da una versione a un’altra versione di
la tua funzione lambda e questo è completamente
supportato da una distribuzione e codice biko
distribuire sarà in realtà denaro per un cloud
guarda gli avvisi per i fallimenti se si, se
qualcosa va storto nei tuoi nuovi alunni
funzione e avvierà anche a
rollback per te
sono supportate anche le implementazioni di Canary
un livello di gateway API
quindi devo decidere okay guarda quale
quale implementazione è migliore per me
questa scommessa a livello di API o forse su un
livello di alumna forse posso combinare entrambi
approcci quindi andiamo avanti e iniziamo
parlando di un primo modello che è
il modello di applicazione web così e questo
è un modello comune che abbiamo come statico
contenuto nella parte superiore del
architettura quindi forse ne hai un po ‘
risorse nei tuoi bucket s3, quindi facciamolo
dite pagine Web HTML che avete il vostro
Codici JavaScript hai le tue immagini
e quelli sono consegnati attraverso il nostro
rete di distribuzione dei contenuti Amazon
CloudFront e in fondo potresti
avere le chiamate più dinamiche del tuo web
applicazione perché tipicamente di oggi
applicazioni web abbiamo come una statica
parte e poi hai una parte dinamica
con la tua API s quindi quale potrebbe essere
angularjs reactor s o so accedendo ad alcuni
un po ‘di riposo e il contenuto è qui
passando attraverso un’API ottieni dove api quale
è supportato da funzioni lambda quindi questo
significa che hai la tua logica aziendale
implementato in te una funzione mm-nah
e poi hai ulteriore downstream
servizi come in questo caso particolare
hai rifiuti di DB dinamo o i tuoi dati
sempre il negozio la tua tenuta e lo è
davvero importante non tralasciare
kognito in questo modello perché Cognito
ti fornisce la registrazione e l’ accesso
funzionalità nella tua applicazione
come federazione delle identità in modo da poter utilizzare
cose come diciamo l’ identità di Facebook
Federazione o se hai attivo
Directory in esecuzione nel tuo account o
nel tuo data center puoi sfruttare
kognito per usare queste informazioni
e questo schema è in realtà ben utilizzato
e ben adottato in molti
diversi siti web oggi e, naturalmente
la sicurezza è davvero importante, ne vale la pena
discute anche nella sorveglianza
contesto perché è un po ‘
diverso dalla sicurezza per tradizionale
applicazioni così ciascuno di questi servizi
di cui abbiamo parlato in questo schema
un sacco di diverse caratteristiche di sicurezza e
onestamente non potrò andare oltre
tutti loro ma voglio solo chiamare a
pochi fuori e c’è ad esempio il
entrambe le possibilità di identità di accesso all’origine
cloud front in modo che possa garantire che solo
cloud front può accedere alle risorse
che sono memorizzati nel secchio libero di noi così
questo è molto importante perché
a volte non vuoi che le persone lo facciano
richiedere i dati direttamente dal gratuito così noi
voglio che passino attraverso il cloud front e
Supporta anche CloudFront an api gateway
Certificati TLS e naturalmente lo sono
molto utilizzato per il gateway API in questo modo
significa che il gateway API ha i privilegi di
in realtà chiamano una funzione lambda e una
degli argomenti più importanti quando noi
parlare di sicurezza è fondamentalmente
autorizzazione del tuo gateway API
metodi così e ci sono molti diversi
modi per farlo in realtà vale la pena di API
gateway e probabilmente il più comune
sta usando l’ autorizzazione IM e anche qui
ci sono alcuni modi per sfruttare il kognito per
fornire quelle credenziali di messaggistica immediata e in
Oltre a me ci sono anche i
possibilità di utilizzare l’autorizzazione o
autorizzazione personalizzata con la tua API
gateway così nella documentazione che c’è
una pagina davvero buona su questo
implementazione particolare per custom
autorizzazioni di autorizzazioni personalizzate
e se sei mesi fa
AWS ha avuto annunci davvero grandiosi
attorno agli endpoint regionali per l’API
gateway e questo è fondamentalmente su
disaccoppiare il tuo gateway API da
CloudFront e questa è una grande versione
perché abilita il servizio multi-regione
applicazioni e con questo modello tu
può effettivamente creare endpoint regionali
per il gateway API e come vedi qui in
regioni separate e ognuna di esse può essere
associato allo stesso dominio personalizzato
nome e quindi è possibile utilizzare ponderato
il routing, per esempio , l’abbiamo visto
traffico diretto da una richiesta al
lo stesso per lo stesso nome a diverso
regioni che utilizzano ad esempio ponderato
routing e, infine, per questo particolare
modello voglio citarne alcuni
quadri che sono disponibili per aiutare
viaggiatori web application quindi il primo
uno per gli sviluppatori Python nel
stanza che ha familiarità con il decoratore
l’ api di base è questo calice e Chellis
fondamentalmente ti permette di modellare le API e
percorso API con funzioni Lemna e distribuzione
quelle applicazioni da codice Python in
un ambiente di servizio e se lo hai
per esempio applicazioni nodejs Express
o applicazioni Java aggiuntive
librerie e framework in github a
convertire quelli oltre al servizio alw
piattaforma
quindi ora parliamo dell’anima dell’animale domestico al
server meno dati come pattern ora uno
cosa che è certa quando si pensa
su dati, analisi e elaborazione
tutti i dati sono sicuri per i tuoi dati
bisogni e le tue esigenze stanno cambiando
nel futuro quindi di solito no
rimani coerente perché forse hai bisogno
maggiori informazioni dai tuoi dati che ottieni
un diverso tipo di dati, quindi tutto
cambiamenti ed è per questo che il dato è Lake
davvero molto in forma ed è davvero importante
perché imposta fondamentalmente il
componenti fondamentali per te
più agile e uno degli inquilini comuni
di un lago dati è quello di tutti i dati
dalla tua organizzazione va in quello
corsivo quindi forse non lo sai esattamente
cosa farai i dati ma il
dati Lake dovrebbe implementare un cosiddetto
schema e leggere strategia in modo che significa
si richiede i dati è possibile specificare il
schema di farlo in futuro facciamo
dì quando hai nuovi requisiti
sarai in grado di farlo con il
schema sull’approccio di lettura e i dati
Lake dovrebbe essere fondamentalmente la casa di tutti
i tuoi dati se si tratta di dati strutturati
dati semistrutturati o non strutturati e
ovviamente dovrebbe anche supportare bi e
casi di utilizzo analitico e macchina
apprendimento e ultimo ma non meno importante
dovrebbe implementare un d-cup of compute e
archiviazione e qui è fondamentalmente uno sguardo
i dati di sorveglianza come l’architettura
al centro l’architettura è basata
su s3 che ha un sacco di grandi funzionalità
quindi ovviamente i dati di Lake hanno bisogno di farlo
essere in grado di accettare i dati in un sacco di
diverse forme quindi la parte di ingestione è
davvero importante in modo da ottenere dati da un
molte fonti in grandi volumi
e quindi hai bisogno di capacità da fare
catalogazione e ricerca quindi copriremo
alcuni modelli qui incluso DynamoDB
e elasticsearch e questo è fondamentalmente
tutto sulla scoperta dei tuoi dati e poi
l’analisi e l’elaborazione sono ovviamente
molto importante per la perdita di dati e lì
sono molti diversi servizi qui
che puoi usare per fare analisi e
elaborazione come Athena e e Lamda e
ci sono anche servizi di server no
liste di server che hanno un ruolo importante
qui ad esempio EMR così elastico
MapReduce che è fondamentalmente un gestito
per ingannare l’implementazione in modo da poter sparare
su nel nostro cluster iniziate i vostri lavori scintilla
per accedere ai dati trasformali scrivi
i dati e in un formato diverso scrivono
in diversi servizi di destinazione e così via
e, naturalmente, la sicurezza è importante
a perdita di dati perché vuoi essere in grado
gestire l’accesso ai dati per diversi
utenti e anche per gruppi diversi
quindi vuoi essere in grado di crittografare il tuo
dati che sono anche molto importanti e
ci sono diversi modi per realizzarla
e anche l’ auditing di accesso ai tuoi dati
un aspetto molto importante che puoi
che può essere implementato usando artiglio
sentiero quindi anche questo è un ottimo generale
pratica se hai un account AWS
si prega di attivare Lao Trail perché cloud
dove basterà monitorare e
Sì , fondamentalmente controlleremo tutte le API
chiama e ti fornirà un file di registro di
quelle chiamate API e poi ovviamente voi
bisogno di un qualche tipo di interfaccia utente per a
data lake quindi hai bisogno di un modo per gli utenti di
accedere a un portale e iniziare a scoprire
e cerca quindi parliamo un po ‘
circa tre come base di un dato
rastrella in modo che una delle grandi cose sei tu
avere una quantità virtualmente illimitata di
storage Nestle e
nessun limite di throughput aggregato in s3 voi
avere più classi di archiviazione che io
sono in grado di memorizzare i dati in un molto
modo conveniente a seconda del
hotness dei tuoi dati quindi alcuni dei dati
è forse caldo tu ne hai bisogno in standard
s3 classi di memorizzazione e altre accessibili
in un modo più raro così questo
significa che puoi ottimizzare per i costi
anche qui e naturalmente il controllo delle versioni
e la crittografia è anche completamente supportata
in s3 quindi ora parliamo in modo specifico
su catalogazione e ricerca e
ci sono un paio di motivi qui
mostrare così il primo modello è più di
un evento basato
modello in modo che i dati arrivino in s3 e
a prescindere da come arriva, ho corso a
funzione lambda per memorizzare i dati del contatore
in Amazon DynamoDB quindi la cosa grandiosa è
qui se carico dati in s3 o cancellati
da eventi s3 vengono creati eventi
e posso reagire su quegli eventi usando un
Funzione lambda AWS quindi se ho un
il file è caricato su s3 che posso
avviare una funzione di limone inizia in ETL
elaborare o avviare altri carichi di lavoro e
diciamo in questa funzione di lama che potrei
analizzare questo particolare set di dati e
allora ho un flusso di aggiornamento dei dati
questo è scritto nel DB degli animali e
anche una funzione lambda che reagisce
e invia queste informazioni a
ricerca elastica per la capacità di ricerca di
costruire indice ricercabile così e ho
incluso un link qui per un’intera risposta
articolo facendo esattamente questo quindi non lo sono
certo se già sai che Glu Glu suona a
ruolo molto vitale nello spazio, così la colla può
spedisci i crawler che possono essere su a
programmato o su richiesta
il glucano controlla automaticamente il tuo
file e dedurre uno schema attorno a quelli
catalogo delle abilità di file da questo
informazioni in modo che il catalogo di dati che
la colla si crea automaticamente con noi
i chiamanti sono anche meta store dell’alveare
conforme in modo da poter definire immediatamente
tavoli e crearli usando uno strumento bi
a tua scelta, ad esempio, sito veloce
e da analisi e prospezione
prospetto ci sono molti strumenti qui
che può fornire accesso a s3 e a
i tuoi carichi di lavoro analitici e di elaborazione
ma voglio concentrarmi su Athena oggi e
una tabella è simile per il diverso sottotitolo
schemi quindi prima di tutto cos’è Athena
Athena è un servizio di query di servizio che
fornisce un modo per inviare query sequel
ai dati che hai memorizzato in s3 e
la grande cosa qui è che è davvero
davvero veloce così in questo esempio che abbiamo
elaborato 170 gigabyte di dati in under
45 secondi eseguendo questo particolare
query che è quasi 4 gigabyte per
in secondo luogo e utilizza presto come il motore
per la manipolazione dei dati in modo da poter pensare
di Athena come una specie di gestito
presto servizio e ovviamente ci sono
alcune efficienze e buone pratiche
intorno ad Athena quindi ho un link qui
qui per includere le 10 migliori efficienze
e le migliori pratiche e voglio solo
raccogli alcuni di loro quindi prima di tutto
puoi sfruttare Athena per partizionare
i tuoi dati e la cosa importante qui
il modello di pricing di Athena è basato su
la quantità di dati che digitalizzi così se
puoi ridurre la quantità di dati che
devi scannerizzare puoi risparmiare denaro e
puoi farlo in modo molto efficiente
utilizzando il partizionamento in modo e se i tuoi dati
è memorizzato e un bucket s3 in un percorso
che vedi qui Athena lo farà
partiziona automaticamente i tuoi dati ma
è anche possibile specificare Manuale
schemi di partizionamento
e consiglio vivamente di avvicinarmi di più
guardare ai formati di dati colonnari come Diamo
dire Parque Avro o o RC e
diventa anche l’ ottimizzazione per le dimensioni del file
molto importante perché se ne hai un sacco
di piccoli file ne avrai molti
overhead che interagiscono con f3 e te
voglio davvero evitarlo, ma se lo è
solo un file potrebbe non darti il
parallelismo di ciò che potrebbe essere necessario
quindi a seconda del carico di lavoro che hai
per verificare quale sia la dimensione del file è buona
abbinare per le vostre esigenze particolari
e comprimere le compressioni usando per
esempio pezzo di 2 può aiutare qui come
bene e così l’ultimo modello impostato per
schema 2 Volevo mostrarti di più
approccio fai-da-te per batch
elaborare il modello in modo da avere qui
funzioni lambda che prendono la fonte
dati e dividerli forse, diciamo
linee o dimensioni e lo consegna a un set
di funzioni di mapper che elaborano il tuo
dati e scrivi risultati su Amazon
DynamoDB e quindi abbiamo un riduttore
funzione di raccolta dei dati e memorizzazione
la fine risulta in Amazon s3 su github
c’è anche un po ‘diverso
implementazione di questo particolare
approccio solo usando s3 invece di dinamo
DB funziona anche in questo modo
numero 3 quindi immagina di essere responsabile
per la costruzione e il funzionamento di un altamente
sito di e-commerce di successo e tu
ha avuto un Cyber ​​Monday davvero incredibile
hai raccolto dati clickstream per
tutte le tue azioni sul sito ma
li hai elaborati su base giornaliera
quindi questo significa che hai 24 ore di seguito
evento hai quei particolari dati e
la tua gestione ti dà la sfida
per ridurlo da un giorno a pochi
minuti perché la gestione uno
intraprendere azioni quasi in tempo reale
a seconda di cosa sta realmente accadendo
sul sito web e questo è molto
esempio classico di dover affrontare
dati in streaming quindi sì, abbiamo qui ora
streaming di un flusso di elaborazione
applicazione per costruire e se prendiamo a
uno sguardo più attento alle caratteristiche di a
applicazione di elaborazione del flusso noi
di solito hanno cose come un alto consumo
tasso vicino all’elaborazione in tempo reale così lui
ha bisogno di bassa latenza da ingerire a
elaborazione e in genere hai spiky
traffico quindi diciamo che non hai un
sito di e-commerce ma forse un uso IOT
caso in cui ho avuto un sacco di diverso
dispositivi in ​​modo da avere una flotta di dispositivi
raccolta di punti dati e forse quelli
i dispositivi stanno eseguendo il batching di questi dati localmente
perché non hanno accesso al
rete e cose come questa anche
la durata del messaggio è molto importante per te
non voglio perdere i miei messaggi in
messaggio generale e per alcuni casi d’ uso
anche l’ordine è molto importante, quindi facciamolo
guarda più da vicino un esempio qui
come una tipica ingestione di dati
l’architettura potrebbe sembrare così il nucleo
di questa architettura è Amazon Kinesis
firehose nel mezzo e puoi pensare
del Firehose di Keaney come servizio
ti consente di importare grandi quantità di dati
quindi tamponalo in un micro gruppo e
consegnarli ai servizi di destinazione così
questo è fondamentalmente disaccoppiare un alto
tasso di messaggi provenienti dai servizi
quello può trattare meglio con una patch di
dati in modo da poter percepire i dati e raw
registra direttamente sulla Firehose api o
puoi anche installare un agente Kinesis
quale ad esempio avvicinarsi
guarda i file di registro e come nuovo
i messaggi arrivano a per inviare al
Kinesis sprigiona il flusso di consegna così dentro
questo particolare esempio qui abbiamo
come un carico di produttori a questo
costantemente producendo dati inviandoli a
bel file di dati era il flusso di consegna e
quindi abbiamo come servizi di destinazione come
s3 redshift per data warehousing e
servizio elasticsearch e se un record è
in un flusso di consegna che puoi fare
trasformazione su questo record così tu
può invocare una funzione lambda e avere
logica personalizzata, ad esempio, se lo si desidera
fai semplici cose ETL e una volta il
la trasformazione è fatta quei record sono
inviato di nuovo a file e file Kinesis ora
rende micro lotti e li consegna a
servizi di destinazione e come te
implementare questo modello un po ‘meglio
le pratiche firehose hanno fondamentalmente due
i parametri che devi scegliere sono i
dimensione del buffer e l’altro è il
intervallo di buffer quindi diamo un’occhiata a
un esempio di un’applicazione in tempo reale così
immagina di avere una grande flotta di IOT
sensori che inviano i dati di temperatura che vogliamo
per appianare i dati rumorosi su Let’s
dì un periodo di 60 secondi e confrontalo
ad una soglia e questa è una pipeline
che consente di ottenere questo e partendo dalla
a sinistra abbiamo i dati da cui arriva
il re un flusso e poi abbiamo a
Applicazione di analisi Kinesis e questo
applicazione o e analisi Kinesis
fondamentalmente un servizio che ti permette
esegui la tua analisi in tempo reale del tuo
dati provenienti da un flusso e tu puoi
rappresenta la tua logica come un sequel
affermazione e quelli sono fondamentalmente e
e questa è fondamentalmente l’ applicazione così
le parti in bianco impostano le fonti come
così come le definizioni di destinazione e
un’arancia abbiamo impostato questo minuto
finestra in cui vorrete fare una media
i nostri dati e le parti blu rappresentano
l’aggregazione quindi calcoliamo la somma
delle misurazioni dei centri sensori
contiamo anche il numero di misurazioni
e questo ci dà un custode
calcolare una media quindi lo siamo anche noi
raggruppando l’intera misurazione impostata da
l’ID del dispositivo e una volta che abbiamo quelli
misurazioni aggregate che possiamo fornire
quelli a un flusso di destinazione di nuovo e
eseguire la logica di soglia, quindi prendiamo
uno sguardo più da vicino la parte centrale qui
dove può usare questo membro di trigger e
discutere alcune buone pratiche qui così uno
degli aspetti importanti che devi
ricorda è kinesin scale in termini di
grafici quindi cosa significa?
ogni grafico nello stream di aki-nee ha un
certa capacità è di un megabyte per
secondo in e due megabyte al secondo
così è importante ricordare e
ogni grafico che non hai nessuna chiave
schermo ti dà un parallelo e
invocazione concomitante di lambda e il
l’altra cosa è che hai un parametro
chiamato dimensione del lotto quindi questo è questo
in pratica configura quanti messaggi
Kinesis invierà ad una funzione Lemna
invocazione e qualche volta potresti trovare
che la quantità di elaborazione che tu
voglio fare nelle tue funzioni lambda così
molto di ciò che sostanzialmente non riesci a tenere il passo
con i messaggi che arrivano e in quello
caso c’è un modello chiamato fan
o modello e in questo modello che prendi
impari la logica della funzione e dividi
in due parti, quindi la prima è
il dispatcher e tu leggi da
flusso di aki-nee il più velocemente possibile e
questo dispatcher sta quindi inviando lotti
dei messaggi alle funzioni di elaborazione così
questo significa che puoi ottenere un punteggio più alto
rendimento e bassa latenza ma tu
perdere il severo ordine dei messaggi, quindi questo
significa che devi pensare al tuo
particolare carico di lavoro e se il fan-out
il pattern funziona davvero per te e alcuni
le migliori pratiche ricordano che devi sintonizzarti
la dimensione del lotto è molto importante
perché questo ti consente di invocare meno di
le funzioni in modo da pagare meno perché
ti viene addebitato l’importo di lambda
invocazione
quindi due nuove impostazioni di memoria anche per il tuo
lambda funziona quindi se si sintonizza il tuo
impostazioni di memoria più alte si ottiene più CPU
e questo potrebbe aiutarti a elaborare il
invocazioni più veloci e se ne hai
controllo sul lato client del
elaborazione della pipeline che si potrebbe desiderare
per dare un’occhiata più da vicino a kpl la chiave
libreria dei produttori di nipoti che è un
libreria lato client e patch multiple
messaggi in un record di Kinesis così questo
ti permette di saturare il tuo kinis una stringa
capacità quindi in sintesi ci siamo avvicinati
guarda come il nostro modo di utilizzare lo strumento DevOps
per automatizzare le implementazioni dei servizi e noi
discusso tre diversi modelli, quindi noi
avere i laghi di dati dell’applicazione Web e
elaborazione del flusso e altamente incoraggiare
per portare questi modelli a casa con te
e vedere cosa si adatta in termini di risoluzione
i tuoi problemi di business e qui ce ne sono alcuni
white paper che ti diranno di più
sui modelli di servizio e alcuni dei
considerazioni quindi grazie mille
molto e godetevi il resto del
conferenza

Please follow and like us: