Press "Enter" to skip to content

GOTO 2018 • Cloud Native Java • Kenny Bastani


[Musica]
come va tutto bene, siamo tutti
bene, sì sì, eccitato
entusiasta va bene va bene così sto andando
parlo del cloud nativo Java, il mio nome è
Kenny Bustani Sono uno sviluppatore primaverile
avvocato in un pivotal un po ‘circa
me stessa
Ho passato un paio d’ anni a scrivere un libro
chiamato cloud nativo Java con Josh lungo
chi è un mio collega in fase di registrazione
sono circa 600 pagine di tutto ciò
vuoi sapere sul cloud nativo
architettura costruzione nuvola nativa java
applicazioni quindi la maggior parte delle cose che io
ho parlato di oggi se vuoi un bene
di riferimento per il tatto per controllare
il libro farò acquisti di libri
domani non sono sicuro di che ora penso
all’incirca allo stesso tempo 11 in punto
sarai in grado di ottenere un libro completo okay
quindi saltiamo dentro
stiamo andando parlare di un sacco di cose
Vado tipo di digiuno perché
c’è molto contenuto ma il primo
La cosa di cui dobbiamo parlare è
architettura perché è davvero
importante capire il perché piuttosto
rispetto a quello che penso così spesso oggi
ci possono essere molte parole d’ordine popolari
là fuori ed è davvero difficile
persone a tipo di erba attraverso cosa
ha senso e cosa no
fino a quando non lo implementano e poi esso
di solito non ha senso e quindi lo siamo
andando a parlare di monolite a
microservizi e poi ho intenzione di mostrare
sei un riferimento microservizio
architettura che è un negozio online
lo useremo per tutto questo
parla e poi ci tufferemo nella primavera
boot and spring cloud va bene così
microservizi quindi la domanda che dobbiamo fare
chiedi è come ci siamo arrivati ​​ora noi
iniziato con l’ applicazione monolitica
ora quasi tutti voi siete probabilmente
questo è familiare con questa architettura
un server Apache Tomcat questa applicazione
server sta per ospitare la nostra guerra
spiegamento che sarà il
artefatto che è tutta la nostra organizzazione
andando fondamentalmente a compilare e lavorare
insieme e spingere alla produzione è
andando a sedersi su quel server delle applicazioni
e così la nostra intera organizzazione condivide
questo application server condividono il
database nel back – end e condividono
quella distribuzione
ora questo causa molta cultura
i problemi prima di tutto rallenteranno
la nostra velocità entrando in produzione
giusto così se abbiamo un sacco di gente
lavorando sulla stessa applicazione funzionante
sullo stesso codice sorgente se una persona
cambia una riga di codice che devi
compilare l’intera applicazione e tu
devo spingerlo alla produzione giusto così
non c’è un modo semplice per ridimensionare il numero
di ingegneri che lavorano su questa applicazione
perché ogni volta qualcuno cambia
qualcosa per renderlo operativo
per mettere l’ intera cosa in produzione
ci vuole anche troppo tempo per salire
nuovi ingegneri proprio così ogni volta che tu
fai una modifica di solito che stai aggiungendo
linee di codice e quindi questo monolito può
diventa piuttosto grande e sarà molto
difficile per te solo aggiungere persone a
un progetto per andare più veloce di ciò che finisce
accadendo è che se aggiungi più persone
ad un certo punto perché c’è proprio così
tanto in corso in quel monolite che
le cose tendono a sbagliare, potrebbe esserci un
difetto di produzione ce ne sono molti
rischio e ad un certo punto il codice base
è in realtà solo troppo grande per uno qualsiasi
persona per comprendere appieno ora potresti
avere questi esperti nell’organizzazione
chi ha originariamente progettato l’applicazione
potresti essere uno di loro e oggi cosa
fanno è che trascorrono tutto il loro tempo
in riunioni piuttosto che in realtà a scrivere
codice perché stanno insegnando al
la storia del codice di base giusto e in modo da
aggiungi più ingegneri a questo monolite
per lavorarci avrai queste
esperti che sono andando spendono maggioranza
il loro tempo in riunioni cercando di spiegare
agli ingegneri più giovani cosa sta succedendo
e quindi questo può essere molto
controproducente abbiamo anche questi due
forze nell’organizzazione abbiamo il
forza di cambiamento che è i nostri sviluppatori
li stiamo assumendo per cambiare il
applicazione e quindi abbiamo i nostri DBA noi
avere il nostro team ops e sono un po ‘ di
responsabile di resistere a quel cambiamento
giusto così hai questo hai questo
forza per il cambiamento e poi hai il
forza per resistere a questo cambiamento e questo
causa molta tensione tra questi
due gruppi che i tuoi sviluppatori potrebbero voler
basta lanciare un artefatto di dispiegamento di guerra
oltre il recinto alla nostra squadra di ops e forse
è un venerdì alle 17:30 e loro lo sono
tipo di bloccato con le conseguenze di
che abbiamo anche molto operativo
problemi pure in modo dovremo a
raggruppare insieme tutti i nostri cambiamenti da
diverso
giusto quindi dovremo integrarci
test attraverso quei diversi team a
assicurati che tutti questi cambiamenti siano
andando a lavorare quando arrivano
produzione e quindi c’è molto di più
coordinamento ora quando c’è molto di più
coordinamento prima di ogni rilascio
il ciclo di rilascio finisce per essere più lungo a destra
quindi potresti avere un ciclo di rilascio che è
quattro volte l’anno ed è un po ‘come
prendendo i mezzi pubblici per
produzione ma quel bus viene soltanto quattro
volte all’anno e quindi devi davvero
lavorare con il programma di qualcun altro e
è per questo che può essere molto difficile
lavorare con il tempo ormai le nostre operazioni
il team sta per guidare il runtime
ambiente del significato dell’applicazione
che controlleranno tutto
aspetti di come la nostra infrastruttura in
la produzione sarà gestita è
verrà installato quali versioni di
le librerie saranno su quel server e
questo sarà molto contro
intuitivo per gli sviluppatori che vogliono
usa i nuovi strumenti per gli sviluppatori
voglio usare l’ultimo e il più grande
strumenti che sono disponibili perché forse
il loro amico in una compagnia diversa è
andare molto più veloce è essere di più
produttivo solo perché stanno usando
nuovi strumenti e poi hai le tue ops
squadra che è il collo di bottiglia per
dover aggiornare queste macchine virtuali
ma più di ogni altra cosa è questa
cosa devi distribuire tutto a
una volta o niente del tutto ed è per questo
l’applicazione monolitica è molto
difficile da gestire nel tempo e così via
il modo di microservizio è che abbiamo ottenuto un
un po ‘meglio ci spostiamo verso il
SOA ora invece di avere solo una sporcizia
strada verso la produzione abbiamo tre sporcizia
strade alla produzione ho il
servizio di contabilità qui inventario e
il servizio di spedizione ora SOA era un
buona idea, in pratica, proprio quello che abbiamo fatto
siamo separati da quel ciclo di rilascio
uno due forse tre o quattro o cinque e
quindi ora ne abbiamo tre o quattro o cinque
diversi modi per ottenere il codice in
produzione su un ciclo di rilascio giusto e
quindi il problema con la SOA è finito
il tempo che non abbiamo capito è che noi
stavano condividendo le librerie ora ogni volta che tu
condividere la proprietà su qualsiasi cosa
squadre sta per confondere questi limiti
e queste squadre avranno
difficoltà a negoziare chi cambia cosa
giusto forse una squadra cambia qualcosa
e lo spezza per l’altra squadra
ora in fondo hai questo
lingua principale e questi sono gli oggetti
che questi servizi avranno bisogno di
scambio con l’un l’altro è il loro
linguaggio e ciò che finisce per accadere è
che la proprietà di questi oggetti
diventa sfocato nel tempo, se io
ha voluto fare un cambiamento a dir
record del cliente laggiù quindi posso
basta implementare il servizio di contabilità ma
cosa succede quando applico un cambiamento
indirizzo record perché questo è di proprietà di
o utilizzato da tre servizi separati ora io
avere un rilascio coordinato di
tutti e tre questi servizi invece di
appena schierando uno alla volta e così ora
Ho un monolite distribuito e oltre
il tempo sta per peggiorare
il monolite e così ora siamo arrivati ​​a
microcircuiti e molti di voi sanno cosa
servizi di micro sono oggi così io non sono
andando a saltarci dentro troppo ma
fondamentalmente avrai questi piccoli
team di sviluppatori che stanno per avere
il loro ciclo di rilascio che stanno per fare
integrare con API e stanno andando
avere tutto ciò di cui hanno bisogno per essere
in grado sia di costruire che di eseguire i propri
applicazione in produzione e così in questo
esempio qui ho un film di servizio utente
raccomandazione di rating e analisi
servizio ora noterete anche qui
come hanno la loro propria applicazione
server è che anche loro hanno il loro
database e quindi questo può anche essere un
problema forse questo è il prossimo problema
che abbiamo visto un SOA è che lo abbiamo anche noi
molti database erano tutti diversi
garanzie e abbiamo ancora la chiave estera
relazioni che attraversano questi
confini e così mentre abbiamo ottenuto un
un po ‘meglio abbiamo anche ottenuto un
un po ‘ peggio quindi ora sto andando a piedi
attraverso un negozio online esempio
Ho messo insieme per il libro si chiama
cloud nativi Outfitters e questo è un
negozio online che vende per magliette
il cloud e prima che io possa effettivamente aggiungere
uno di questi al mio carrello Vado
avanti e accedi qui e ci sarà
indirizzami a un URL diverso qui
è il mio fuori da Gateway e firmerò
e mi sta reindirizzando a
l’applicazione ora questo è un micro
architettura di servizio così molto
avanti Ho un’applicazione angularjs
è tutto contenuto statico nel backend I
avere più micro
servizi quindi se sei un front-end
tipo di sviluppatore di pensare a come tu
potrebbe costruire questa applicazione di solito tu
integrare con una sola API, quindi se tu
avere molti più servizi micro qual è il
soluzione per essere in grado di effettivamente
integrarsi con quelle API così ora lo farò
torna a una di queste t-shirt che farò
aggiungerne alcuni al carrello e poi andrò
al mio carrello e checkout e così via
vediamo che l’ordine è stato creato possiamo
vedere lo stato dell’ordine così come
gli articoli che sono stati ordinati per la spedizione
indirizzo e credo una carta di credito e
quindi posso andare alle impostazioni del mio account così
Posso vedere le informazioni sul mio account
e poi finalmente posso andare ai miei ordini
quindi ti chiederò ragazzi quanti micro
i servizi pensi che stiano alimentando questo
l’applicazione ha appena tirato fuori un numero che ho
ho sentito sette tre più di sette venire
su ragazzi
più di sette ipotesi azzeccate
esso
grazie hai un po ‘scomodo lì per
un secondo tutto bene così dieci e questo è
come sembra, quindi ho i miei dieci
applicazioni separate e al molto
sopra abbiamo in viola il negozio online
il web è dove tutto il mio contenuto statico
sta per essere implementato e quindi dovrò
il mio team di front-end che sta lavorando su
contenuti front-end che possono essere distribuiti
indipendentemente da tale applicazione
abbiamo anche interagito con un altro
applicazione ha chiamato il servizio utente
lì nel mezzo e quell’utente
il servizio sta per essere il mio Oh fuori per
Gateway ora in basso che ho tutto
i miei micro servizi ho il catalogo
servizio l’ inventario del servizio account
carrello della spesa e il mio servizio di ordine ora
il modo in cui gli sviluppatori front-end
stanno per comunicare con l’API
le api sono nel back-end e lo faranno
passare attraverso quella domanda di lettura che
servizio di bordo e che sta per essere il mio
Gateway API così nel mezzo tutti
quelle quattro applicazioni che stanno risolvendo
preoccupazioni trasversali che tutti questi
i microservizi dovranno essere
in grado di funzionare
ora quel negozio online se lo vuole
comunicare con diciamo l’ inventario
servizio lo attraverserà
servizio di bordo andando a ford slash
inventario
e sarà reverse proxy a
quel servizio di inventario e quella risposta
sta per tornare su
negozio online web ora che il servizio utente
non v’è abbastanza importante quando accedo
Ho intenzione di essere data una sessione e che
la sessione verrà inoltrata ogni
singola richiesta che vado a valle
diciamo che vado dal web store online
al servizio di inventario per l’ordine
servizio di questa sessione sta per essere
trasmesso con ogni singola richiesta
a valle e così che ogni micro
il servizio avrà quella sessione
possono richiamare il servizio utente
per convalidare quella sessione utente e poi I
ho il mio servizio di scoperta e la mia configurazione
Server stiamo andando andare su quelli più
un po ‘ bene quindi ci sono due popolari
strategie migratorie oggi per le persone
passando dal monolite al microservizio il
il primo è chiamato dividere il
monolite e l’idea qui è quella
stai andando a guardare il tuo monolitico
applicazione e hai intenzione di iniziare
taglia fuori pezzi di esso
a un’applicazione separata e poi
comunicare di nuovo tramite API ora in
questo esempio ho l’inizio di a
dividendo l’esercizio del monolite che è
che il servizio clienti qui è il mio
applicazione monolitica ora la prima
passo il passo più semplice è solo per affettare
di tutto ciò che è apolide, così
tutto ciò che non si collega al
database facile da dividere e
refactoring in un’applicazione separata e
ora devi rilasciare cicli e così via
questo è quello che ho fatto qui con il
app web banking online che sta andando
essere contenuti front-end e poi è
andando a comunicare di nuovo con il
il servizio clienti su HTTP ora il prossimo
parte di questo è molto difficile, quindi ora
deve guardare al backend e ho
per iniziare a dividere lo schema ora
questo è uno schema molto semplice che ho il
account cliente e tabella utente ora in
la realtà è probabilmente un centinaio
tavoli diversi con tutti questi
relazioni chiave estese che si estendono
attraverso ciascuno di questi tavoli ora io
devi scegliere quale di questi tavoli
strappare e migrare verso un altro
o un nuovo database e quindi ho scelto il
tabella utente e quindi dovrò fare a
migrazione di tali dati a quella nuova
database chiamato DB utente e quindi io sono
andando a rifattorizzare tutto il
funzionalità
questo è legato a quei dati nel
servizio clienti e ho intenzione di mettere
che in una nuova applicazione chiamata
servizio utente e quindi ho intenzione di
comunicare di nuovo a quel cliente
servizio tramite una API ora in pratica questo
finisce per fallire per la maggior parte
aziende aziendali perché hanno un
molto di più andando avanti così sulla scissione della carta
il monolite sembra davvero buono ma dentro
pratica diventa molto difficile
a causa della sfida dei dati ora in
Oltre ad avere uno schema complesso tu
potrebbe avere un data warehouse nel
backend e potresti avere ETL
andare avanti e indietro tra terze parti
sistemi e il tuo sistema di registrazione e
iniziare a dividere quelli a parte è molto
difficile e quindi c’è un modo migliore per
fai questo ora era lo schema di Strangler
introdotto per la prima volta da Martin Fowler
nel 2001 o nel 2002 è andato a
l’Australia in vacanza e ha visto questo
affascinante pianta si chiama a
stranezza vite ora ciò che lo strangolatore
la vite lo fa se stesso nella parte superiore
rami di un albero di fico e funziona il suo
lungo il tronco fino al
radici che strangolano le risorse del
albero nel tempo e poi alla fine
uccidendolo ora
il motivo per cui lo fa è questo
non deve competere dalla foresta
piano tutto il tragitto fino a baldacchino esso
può adottare un approccio top-down ora che cosa
martin disse che potevi davvero
prendi questo e applicalo al tuo software
e che potresti creare gradualmente a
nuovo sistema attorno ai bordi del vecchio
lasciandolo crescere lentamente su diversi
anni fino a quando il vecchio sistema non viene strangolato
ora puoi applicarlo al tuo micro
servizi pure, ma la domanda di nuovo
sarà intorno ai tuoi dati e così via
che i dati potrebbero rappresentare l’acqua di
l’albero e la domanda è come possiamo
sfruttare la micro costruzione
servizi che strangolano anche i dati
da un grande sistema di record e a
sistema legacy ora questo sta per
dipende da come appare la tua architettura
come se sembra questo il
connessione point-to-point tra il tuo
servizi web sarà molto
difficile perché si deve andare e
refactoring ciascuna di queste applicazioni
e cambia il modo in cui instrada il
l’idea qui è che vogliamo creare un
coltivare un vantaggio attorno a queste applicazioni
che può iniziare a strangolare lentamente i dati
lontano da quel grande database condiviso
e quindi ecco una soluzione ora in tutto
casi si sta andando a usare qualcosa che
questo assomiglia molto ad un gateway API
adattatore di bordo legacy qui sta andando
essere il mio gateway API tra la mia eredità
servizi che potrebbero essere su Prem e poi
il mio microservizio a sinistra che è
sarà tutto nuovo sviluppo e così
Ho intenzione di provare e congelare tanto quanto me
può tutto il nuovo sviluppo tutte le nuove funzionalità
sviluppo nel livello precedente e io sono
intenzione di iniziare a costruire quelli nuovi
si presenta al limite con questi
micro servizi e sto andando a
comunicare di nuovo in quel sistema tramite
quel gateway API molto simile a quello che io
ti ho mostrato prima ora cosa puoi fare
qui inizia a strangolare i dati da
quel grande database condiviso agendo come
una facciata in cima a questi servizi I
pensa di poter ingrandire qui, quindi questo è un
diagramma molto simile che abbiamo guardato
prima e qui ho un profilo
servizio questo è un nuovo microcircuito e
agirà come una facciata in cima
questo servizio legacy qui chiamato il
servizio clienti ora il vantaggio legacy
ecco questa linea blu e cosa succederà
succede ogni volta che ottengo una richiesta
un profilo, vado a controllare per vedere
se questo profilo esiste o meno
il servizio clienti se esiste
nel mio database personale e se così non fosse
inizierà una migrazione spostandolo
dati lontani dal grande database condiviso
nel mio database di profili e così via
tempo quello che puoi fare è migrare il
sistema di registrazione mentre stai costruendo nuovo
caratteristiche in un modo molto organico invece
di dover spaccare quel modello al
parte e preoccuparsi di tutto il
conseguenze ora ne ho un esempio
questo sul mio blog tutte le cose che io
parlato di questo è nel libro o
puoi andare al mio blog che è cannabis
Donny calmo e ne ho l’esempio completo
da qualche parte qui va bene così ora siamo
andando a tuffarmi in alcune demo che voglio
parlare di avvio primavera primavera boot è a
il nucleo di come stiamo costruendo il cloud
applicazioni java native oggi ma prima
che cos’è l’ avvio a molla, quindi se lo sei
familiarità con la struttura della molla
lo stivale primaverile si basa su questo
tweet indietro dal 2015
Phil web spiega la differenza tra
Quadro di primavera e boo di primavera e cosa
ha detto che lo stivale primaverile è davvero
solo una raccolta di questi diversi
ingredienti che è la squadra di primavera
andando a comporre per te quello che dovevi
fai prima devi sceglierli
ingredienti fuori e dovevi mescolarli
insieme tu dovevi fare tutto questo
sollevamento pesante indifferenziato prima
potresti iniziare con in realtà
cambiare la logica aziendale o aggiungere
logica di business ora che cosa fa boot di primavera
è che ti permette di scegliere questi
ingredienti e configurerà automaticamente
loro per te in un modo che la primavera
gli ingegneri raccomandano per una produzione
ambiente e il modo in cui lo facciamo viene utilizzato
uno strumento chiamato inizializzatore di primavera che
è all’inizio di primavera I oh e sono solo
costruirò una rapida applicazione qui
Costruirò un progetto animato con
Java e selezionerò 2.2.1
e chiamerò questo il servizio utente e
ecco dove avviene la magia ora questo
sono gli ingredienti che stai per
scegli per la tua app ora se sto costruendo
Ho bisogno di un micro servizio molto
ingredienti simili ogni volta che costruisco
una delle prime cose di cui ho bisogno è che ne ho bisogno
essere un’applicazione web, così posso
scegli la web qui e questo si intenderà
Apache Tomcat nel manufatto che io
creare così con la distribuzione della guerra ciò che io
Stavo facendo è che stavo creando una guerra
artefatto e lo stavo spedendo ad un
server delle applicazioni ora cosa farò
ho intenzione di costruire effettivamente un
il server delle applicazioni lo incorpora nel
artefatto che creo come barattolo e così via
Sceglierò web e il prossimo mi servira ‘
un livello dati e la prima cosa che farò
scegli qui i dati primaverili JPA e questo
sta per fornirci l’ORM che
possiamo usare per le nostre entità di dati nostre
oggetti di dominio che saranno tradotti
in tabelle in un database relazionale così
Sceglierò JPA e poi avrò bisogno di un
driver del database ho intenzione di scegliere h2
qui è un database di memoria di fine e
questo è usato per cose come unità
test o test di integrazione dove tu
non è necessario connettersi effettivamente a un
ambiente di integrazione e poi lo farò
scegliere repository di riposo e quindi il
oggetti di dominio che creo
con molla datato JPA sarà anche
creato come API REST in modo che io possa effettivamente
fare operazioni di base su quelle
oggetti e poi finalmente vado a
scegliere attuatore e questo sta per
dammi una serie di punti finali operativi
tramite API REST che posso usare per ispezionare
la mia applicazione
In realtà sto per effettuare il downgrade qui
un punto cinque due e quando genero
il progetto che mi permetterà di farlo
scarica una cartella comprima con il mio
codice sorgente e posso andare avanti ed eseguire
questa applicazione con il comando Maven
avvio di primavera che sta per essere compilato
e avviare il server delle applicazioni
e così vedo che è iniziato in porto
8080 e andrò al mio browser e posso
vedere la risposta che ritorna in questo modo
è una risposta iper media questo è
qualcosa che usiamo in primavera
Quadro oggi con ogni API REST
la risposta che torni darà
una raccolta di link relativi a
quella risposta ora perché ho aggiunto a
perché ho aggiunto un attuatore che puoi vedere
qui ho una collezione di link
schiena che mi dica come posso controllare la mia
applicazione e quindi diamo un’occhiata a pochi
di questi il ​​primo che vedremo è
a ford slash salute e questo sta andando
per darmi lo status di base del mio
applicazione se è su o giù adesso
qualsiasi altra cosa sugli estremi dell’attuatore
Dovrò disabilitare l’autenticazione così
diciamo che vado a quattro slash inv che è
andando a darmi un errore dicendo
non autorizzato e per impostazione predefinita lo faremo
bloccare molti di questi endpoint e così via
Posso effettivamente entrare e cambiarlo e
rimuovi quell’autorizzazione e così farò
aprilo in IntelliJ
e qui c’è il codice sorgente e puoi farlo
vedi qui che ho il mio servizio utente
applicazione ed è annotato con
applicazione di avvio di primavera questo è il
classe di applicazione quando avvio l’app
in alto vedrà questa annotazione
sta per iniziare a cingergli l’altra cosa
che ho bisogno di guardare qui è il mio
proprietà dell’applicazione e in questo file
qui posso ignorare tutti quelli predefiniti
opinioni che la squadra di primavera prevede
ognuno dei componenti ora con
attuatore è bloccato per impostazione predefinita e
quindi possiamo andare avanti e disabilitarlo
impostazione della sicurezza di gestione abilitata a
falso e mentre io sono qui cambiamo
altre cose cambierò la porta
e darò un nome all’applicazione e
poi riavrò
e vedo che è iniziato alle sette –
sette – quindi cambierò solo la porta
qui e possiamo vedere ciò che l’ambiente
l’endpoint sembra per l’ambiente
endpoint abbiamo molto utile
proprietà qui ho il sistema
Proprietà ho l’ambiente di sistema
variabili e quindi ecco tutti i
variabili ambientali che ho sul mio
cose come la mia chiave segreta AWS
che è generalmente un no-no quando tu
presente in pubblico ma di default è
guarderò il nome di quella chiave e
sta andando a vedere che ha una parola
segreto o chiave in esso e sarà oscuro
il valore che ora è un po ‘ più sicuro
in fondo ho la mia domanda
configurazione ora questo è molto importante
perché con un’applicazione cloud nativa
spedirai la tua app a chiunque
ambiente e sarà in grado di
allegare alla configurazione in questo
ambiente ora questo è uno dei
dodici fattori dal fattore 12
metodologie che rendono il tuo
Nube di applicazioni native e puoi vedere
qui che arrivano le configurazioni dell’applicazione
dal classpath che significa che è
non cloud nativo ora quando ti connetti
un server di configurazione che puoi effettivamente
scarica la tua configurazione da lì
invece di cuocerlo nella build così
stiamo andando a spostarsi a destra lungo così
questa è una applicazione un servizio micro
ora vogliamo vedere come queste cose
connettersi insieme vogliamo vedere le cose
come un servizio di scoperta e una configurazione
server ma prima diamo un’occhiata a questi
le cose funzioneranno in contenitori
ora prima di andare a cloud native noi
stavamo eseguendo le nostre applicazioni su un
server delle applicazioni
ora quello che faremo è che lo siamo
andando a cuocere il server delle applicazioni
nel manufatto che creiamo come a
jar e quindi lo impaccheremo in a
Container Linux e spedirlo a chiunque
fornitore di cloud che vogliamo ora in questo
esempio qui ho una macchina virtuale
che ti permette di avere più
contenitori diversi in esecuzione
fianco a fianco ora il vantaggio è qui
che io possa avere la mia runtime
ambiente descritto dai miei sviluppatori
se è docker o se è
Cloud Foundry e quello che posso fare è che posso
speditelo su una macchina virtuale e io
non devi preoccuparti di installare un
server delle applicazioni giusto per poter eseguire a
Applicazione JVM accanto a un’app ruby
accanto a un’applicazione Python ora un cloud
piattaforma sarà in grado di guardare il
metriche per quell’app e determinare
se ha bisogno o meno di scalare e
quindi con un auto scaler puoi definire a
regola dicendo che se la mia domanda è
utilizzato all’80%
quindi voglio aumentare di un altro
esempio e questo è programma andando
un altro contenitore e così con multipli
macchine virtuali qui puoi vederlo
i contenitori tipo di respirare e
espirare a seconda delle esigenze di
queste applicazioni in produzione ora
perché tutte queste applicazioni sono in corso
programmato su richiesta tutti gli indirizzi
tutti gli indirizzi IP stanno per essere
assegnato all’avvio dell’applicazione
ora non vogliamo usare cose come a
nome host perché è molto lento e così
abbiamo bisogno di un modo migliore per questi
micro-servizi per essere in grado di trovare il loro
dipendenze in un ambiente e
questo sarà l’argomento di
servizio di scoperta ora ne abbiamo un altro
set di strumenti chiamato nuvola di primavera che è accesa
parte superiore dello stivale primavera e questo è uno strumento
set progettato per la costruzione distribuita
i sistemi ora tornano a ciò che Phil Webb
ha detto a proposito di avvio di primavera ha pubblicato questo
tweet più tardi quel giorno era un mucchio di
cupcakes ma penso che sia una buona analogia
quello che sta dicendo è che lo farai
fai costruire la tua intera organizzazione
microservizi e ogni squadra avrà
il loro stesso sapore la loro ricetta
hanno usato e ci deve essere un modo
per tutte queste cose da collegare
insieme in un modo semplice in modo che questo
l’ architettura dei micro servizi non cade
sulla sua faccia e così camminerò
attraverso un paio di demo inizieranno con
scoperta di servizi e questo sta per
consentire alle applicazioni di trovarsi reciprocamente
un ambiente e questo è un elemento essenziale
componente quando si utilizza un contenitore dinamico
programmatore quindi se stai usando un cloud
fornitore che sta pianificando questi
contenitori su e giù che stai per
bisogno di qualcosa come la scoperta del servizio
ora per uno sviluppatore ciò che cambia è quello
ogni applicazione sarà in grado di
gestire il proprio routing e quindi gli sviluppatori
solo bisogno di sapere il nome del
applicazione che vogliono comunicare
con e non l’ URL e poi finalmente
avrai un registro di servizio
che funge da rubrica telefonica in cui tutto
le tue applicazioni sono in grado di iscriversi
a quella rubrica fornire informazioni di
dove si trovano sulla rete e
che sarà distribuito a
tutti gli abbonati e così in questo
esempio qui ho una raccomandazione
servizio e un servizio di film quelli sono i miei
due micro servizi e poi ho un
servizio di configurazione e un servizio di scoperta
quindi diciamo che il servizio film
inizia a contattarlo
applicazione blu il servizio di scoperta
sta per dirgli dove si trova
sulla rete e in cambio è
andando a ottenere informazioni su dove il
il servizio di raccomandazione è situato a destra
quindi è in grado di iscriversi e scambiare
informazioni e che ha costruito una mappa a
mappa distribuita di dove tutto è
situato sulla rete e quindi il
Registro di sistema di servizio è solo andare a essere un
piccolo in questo caso un file XML che
contiene applicazioni e
istanze e così in questo esempio che ho
un’applicazione cinematografica e una raccomandazione
e puoi vedere che ho un singolo
istanza di ciascuno e mi dice
esattamente dove si trovano ora sono
andando a fare una demo del carico lato client
bilanciamento che è un vantaggio che voi
ottenere con questo tipo di architettura ora
quando utilizzi il servizio di individuazione
può caricare il rimbalzo dal lato client
invece di doversi preoccupare di
modifica della configurazione del bilanciamento del carico su
il lato server e così in questo esempio
avremo un client utente e un utente
servizio e il servizio utente verrà ridimensionato
fino a due istanze e il client dell’utente
sarà in grado di cambiare il traffico e
avanti tra quei due nodi e così via
la prima cosa di cui ho bisogno è una scoperta
servizio e quindi quello che farò è tornare indietro
per iniziare la primavera fare e posso chiamare questo
servizio di scoperta e sto andando a
scegli il server Eureka e per il tempo che ho
questo su già e quindi camminiamo
attraverso quello che sembra così il
prima cosa che ho intenzione di fare è di Vado
per aggiungere l’abilitazione di annotazione eureka
server e quindi posso avviarlo
posizione e assumerà il ruolo
di Eureka ma ho bisogno di cambiarne un po ‘
configurazioni così come tornare indietro
le proprietà dell’applicazione che sto per
chiama questo servizio di scoperta e io sono
andando a dargli il porto
otto sette sei uno ora per impostazione predefinita tutto
degli abbonati su host locali sono
andando a cercare host locale otto sette
sei uno per comunicare con Eureka e
questo è il motivo per cui ho cambiato il
porto a quello e io vado avanti e inizio
su Eureka posso trovarlo
e che ti avviamento su otto sette sei
uno sì e vai nel browser che possiamo
guarda bene , ecco la primavera
Cruscotto Eureka e questo sta per
dimmi che mi darà informazioni
su tutti i miei abbonati che hanno
contattato Eureka ora dopo circa trenta
secondi
Eureka si registrerà da sola e questo
mi dà solo un esempio da guardare
ma lì va bene e quindi puoi vedere
qui il nome dell’applicazione e tu puoi
vedere lo stato ora sappiamo già dove
si trova quindi questo non ci fa molto
bene ma quello che devo fare ora è farlo
avvia il mio client utente e il servizio utente
ora ho il codice sorgente per ciascuno di
quelli che daremo un’occhiata al
prima il servizio utente ora il servizio utente
fa una cosa semplice che sta per
ritorna indietro la porta che il
l’applicazione è in esecuzione così il primo
cosa che devo fare è aggiungere il
annotazione abilita discovery client e
allora ho qui un controller di riposo che
sta per modificare il resto api di
di default ora ho alcune altre cose
di cui parlerò più avanti
ma la cosa che vogliamo mettere a fuoco
in questo momento è solo questa una richiesta
mappatura al punto finale della radice ed è
andando a tornare al porto e
questo sarà iniettato in questo
il campo qui chiamato porta usando questo valore
annotazione quindi se ricordi prima
quando ho modificato l’applicazione
proprietà ho cambiato il valore del
porta del server chiave e che sta andando a legare
al valore qui al punto finale della radice
e così inizierò due istanze di
quella
Ne inizierò uno con il numero di porta
uno uno uno uno e poi un altro
con uno uno uno due
e tornare ad Eureka se mi rinfresco
puoi vedere quello il primo
registrato così ho un servizio utente
disponibile e se aggiorno vedremo
che anche l’ altro si è registrato
e così ora ho due utenti
istanze e possiamo guardare il servizio
registro andando a ford slash eureka
ford slash apps e che sta per dare
io che manifesto di tutto il mio
applicazioni e loro istanze e così via
puoi vedere qui che ho l’utente
servizio con le due istanze che sono
disponibile e quindi tutto ciò di cui ho bisogno ora è a
client utente ora il client utente
l’applicazione è molto simile sta andando
essere un abbonato a Eureka quindi ho un
cliente di scoperta navale qui e poi sono
avrò bisogno di un cliente di riposo in realtà
comunicare con quel servizio utente e
quindi qui ho definito un bean chiamato riposo
modello e ho specificato che voglio
deve essere bilanciamento del carico
ora il modello di riposo se non lo specifichi
bilanciamento del carico sta per usare DNS
per cercare qualsiasi nome host quando aggiungo
questa annotazione sarà effettivamente guardare al
il registro del servizio e trova il nome
dell’applicazione che voglio
comunicare e scambiare quel nome
per un indirizzo IP
ora nel controller resto qui che ho
andato avanti e mi sono iniettato in questo
modello di riposo tramite il costruttore e io
avere una richiesta di mappatura qui alla radice
punto finale e cosa farò qui
sto andando a chiamare il servizio utente
e restituisco tutto ciò che mi dà dentro
questo caso sarà il porto
il numero e così io uso modello resto ottenere
per entità e qui c’è l’URL che sono
andando a comunicare con il suo utente –
servizio in modo che questo è solo il nome del
servizio che abbiamo appena avviato proprio così
Non ho bisogno di conoscere l’indirizzo IP di
l’applicazione che voglio comunicare
con ho solo bisogno di sapere il nome e
poi torno indietro la risposta
quindi avvierò il client dell’utente
e torno ad Eureka e posso vederlo
il client dell’utente è registrato e così
ora ho intenzione di andare a quel client utente
qui ee così questa è l’informazione
endpoint Voglio andare alla fine della radice
punto e questo è dove chiamerà
a quel servizio utente e tornare indietro a
risposta così la prima volta che lo faccio è
andando a tornare al porto 1 1 1 1
ma se mi rinfresco ancora e ancora
vedrai che cambierà
traffico avanti e indietro tra questi due
istanze ora diciamo che aggiungo a
nodo o se cancello bene un nodo
il registro del servizio verrà aggiornato
ogni volta che succede un evento sta andando
da inviare a Eureka e quel servizio
registro verrà inviato a tutti
gli abbonati ora questo è un bel
esempio banale quindi cerchiamo di zoom in modo
tornare al negozio online
architettura abbiamo il nostro front end qui
il web store online che sta per inviare
traffico verso quel servizio di bordo che lo farà
quindi essere indirizzato ai servizi di back-end
ora dipende da quale sia il loro carico
Che posso fare è che posso scalare fino diciamo
che il servizio di inventario è al 80% di te
risorse quindi posso andare avanti e scalare
un altro esempio di ciò che sarà
contattare il servizio di scoperta e dire
per far sapere a tutti che c’è un
nuovo nodo disponibile e posso scalare automaticamente
senza doversi preoccupare di cambiare
qualsiasi configurazione di bilanciamento del carico tutto
giusto così la prossima demo che farò
è il server di configurazione e il
il server di configurazione sta per consentire
applicazioni per la loro fonte
configurazione da un servizio centrale
la configurazione può anche essere cambiata
senza distribuzione quindi questo è uno dei
I principali vantaggi qui sono che posso cambiare
configurazione notifica a un’applicazione che
la configurazione è stata cambiata e può
aggiornare o riavviare senza dover
ricompilare e distribuire l’app che posso anche
utilizzare diverse configurazioni predefinite
quella cascata quindi diciamo che ho un
opinione dell’organizzazione di come dovresti
configurare le applicazioni che potrei dare
questo a tutti i miei team di micro servizio e
quindi possono ignorare quello con il loro
propria configurazione utilizza un report git
satori è un file system che consente
io per avere un registro di controllo di tutti i miei
cambiamenti e quindi diamo un’occhiata a questo
precedente esempio ho avuto il
servizio di raccomandazione e il film
servizio ora è il servizio di configurazione
sarà molto simile a quello
servizio di scoperta ma avrà
un URL che indica dove trovarlo
configurazioni da e così in questo caso
Ho il mio ambiente di staging che è
uno ottiene l’ URI e la mia produzione
ambiente che è solo un altro
ottieni URI e quindi useremo questo
stesso esempio e ho un server di configurazione
pronto ad andare qui e così aggiungerò il
annotazione abilita semplicemente il server di configurazione
come ho fatto con Eureka e nel
proprietà dell’applicazione cambierò il
porta del server a 4/8 e poi ecco il
URI di cui farò arrivare i miei condannati
e io andrò avanti e iniziare che fino
ora gli esempi che sono già
in esecuzione sono già configurati per
parlare al server di configurazione e quindi se vado
torna alla risposta che ho ricevuto dal
cliente utente se vado al piano barra
messaggio che dà una risposta che non so
quello che sono e questo perché nel
codice sorgente cosa non ti ho mostrato
prima era che ho trovato una chiave chiamata
messaggio con il valore predefinito I no
so cosa sono in questo campo qui ora
il repository git che la config
il server è collegato a I have three
file separati Ho la mia domanda Y
cliente utente amyl e servizio utenti ora
quando si avvia un’applicazione , sta andando
per contattare il server di configurazione sta andando
per fornire il suo nome e sta per
ripristinare la configurazione che si intende
perché così in questo caso il client dell’utente
dovrebbe ricevere questo utente di configurazione
il servizio dovrebbe recuperare questo ora
questa applicazione y amal è predefinita
opinione se vado alla fonte è possibile
vedi qui che il messaggio è che io sono un
applicazione così ora che la configurazione
il server è avviato tutto quello che devo fare è
notificare ai servizi che dovrebbero andare
e prendi la loro configurazione da quella
servizio e quindi ho intenzione di inviare un post
richiesta per 8080 e aggiornamento
e così quando invio questa richiesta a
Ford / aggiornare la sua intenzione di dire che
client utente per ora parlare con la configurazione
server recupera tale configurazione e
quindi aggiornare se stesso senza riavviare
e la risposta che torno è
sta per essere una collezione di chiavi dove
i valori sono stati modificati in questo caso
messaggio così ora quando torno al
browser se aggiorno qui sta per
restituiscimi un messaggio diverso e
dice che sono un’applicazione e basta
perché è predefinito su quella applicazione
sì mol se torno a quella sorgente
codice per il client dell’utente che puoi vedere
che tale valore è stata commentata
e quindi quello che farò qui è una soluzione
che e impegnarsi per ottenere che
e spingerlo
e ora invierò un altro segnale di aggiornamento
e dovrebbe raccogliere il suo nuovo
configurazione e andrò di nuovo alla
browser e aggiornamento e dovrebbe dire
Sono il cliente utente ora questo è un bel
esempio banale quindi ho intenzione di ridurre
ancora e puoi vedere qui dentro
giallo ho il mio server di configurazione
ora ognuna di queste applicazioni in
questa architettura si collegherà
quel context server e prendine il loro
configs e così dalle operazioni
prospettiva, quello che posso fare è che posso
modificare le configurazioni di gate che posso spingere
loro per ottenere e per notificare la configurazione
server per inviare tali aggiornamenti a ciascuno
applicazione che devo concludere in due
minuti, lo spingo
la prossima demo molto semplice è l’ API
gateway in precedenza abbiamo visto il gateway API
nel servizio di bordo in rosso e questo è
andando a consentire alle applicazioni di invertire
proxy nei servizi Micra back-end
ora in questo esempio che ho in esecuzione
abbiamo effettivamente invertito il proxy con il
utente, ma lo abbiamo fatto manualmente e
quindi puoi vedere qui che l’abbiamo chiamato
dal modello del resto andrò
avanti e commentalo e poi lo sono
andando ad aggiungere un’annotazione in cima
che è abilitare il proxy degli strumenti e riavviare
ora tornando al browser che sta per
il punto finale radice del client dell’utente esso
dovrebbe darmi un diritto errore, ma ora
che ho aggiunto quel proxy Zul
annotazione se vado a quattro percorsi di barra
puoi vedere che ho una collezione di
percorsi qui solo molto brutti quindi sistemiamo
e così puoi vedere qui che ho
il servizio utente e il servizio di scoperta
che posso contattare, andrò al
servizio utente e mi darà
indietro quella stessa risposta che abbiamo fatto
manualmente così piuttosto semplice e penso
questo è un minuto ok, ultima cosa
tracciamento distribuito questo è molto
importante per il tuo micro servizio
architettura non ho abbastanza tempo per
mostrarti una demo ma ho intenzione di camminare
attraverso ciò che è nube di primavera
sleuth ti permetterà di aggiungere
Zipkin che è una traccia distribuita
strumento che sta per raccogliere le metriche
da tutti i tuoi micro servizi e
queste metriche stanno per essere ricucite
insieme in qualcosa chiamato span
che ti darà un grafico
visualizzazione di come sono i tuoi servizi
comunicare l’ uno con l’ altro e così tu
può vedere qui il traffico dal negozio online
il web sta andando al servizio di bordo che
viene quindi delegato al mio back-end Micra
servizi ora se ne hai molti di questi
frecce molto pesanti indicavano un servizio
questo significa che c’è un sacco di traffico
essendo stato inviato in questo caso, l’ho trovato
fuori che il servizio utente era in corso
martellato dal traffico perché ogni volta che
andare a valle di una richiesta che chiamerò
torna a quel servizio utente e così via
lo strumento ti consentirà di eseguire il debug di questo
ti dà anche un po ‘come un cromo
vista strumenti di sviluppo che ti mostrerà
la traccia individuale e puoi vedere
qui che sta andando dal limite
servizio al servizio utente al
servizio di carrello della spesa per l’utente
servizio e quindi cosa posso fare qui per
ottimizzare questo è quello di aggiungere in primavera
sessione che metterà un cluster Redis
nella tua architettura di microcircuiti e
Posso andare avanti e posso memorizzare nella cache il
sessione dell’utente lì invece di
dover tornare al servizio utente
ogni volta e prima che mi cacciato
grazie mille
Non penso che abbiamo tempo per le domande
Penso che siamo fuori tempo per le domande
ma c’è una pausa pranzo quindi forse
ne prenderemo uno dalle domande
sono stati inseriti nell’app e per il resto io
voglio ricordare alla gente le donne in
evento di networking tech che sta per essere
prendendo atto di quanto l’intelligenza sia il basso
quanto può essere intelligente il bilanciamento del carico
Configuro diverse modalità diverse da
round-robin ecc sì sì di default
verrai a ruba, non è così
non è banale e non è troppo
difficile cambiarlo ce ne sono alcuni
esempi là fuori ma non è così
semplice come quello che ti ho mostrato nella demo
dovrai aggiungere effettivamente un
filtro e quel filtro dovrai
descrivi per ognuno dei tuoi
applicazioni come dovrebbe bilanciare il carico
dalla diapositiva del cliente è così
spremere un altro qui un sacco di
proprietà che inseriamo nel file di configurazione se
cambiato richiedono un riavvio dura del
applicazione quindi come fa avere un
servizio di configurazione separato, aiutalo a dirlo
ancora molte proprietà che inseriamo
config in un file di configurazione se cambia
richiede un duro riavvio sull’applicazione
quindi come avere una configurazione separata
il servizio aiuta così com’è la primavera
collegato insieme o almeno primavera
cloud con il servizio di configurazione qui sono
collegato al mio URI che va bene lo sono
dovrò attraversare questo sì così io
indovina la risposta breve a questo siamo noi
fornire l’impianto idraulico che sarà effettivamente
invia segnali alle tue applicazioni
dicendo loro di rinfrescare loro
configurazione e puoi impostare i limiti
all’interno della tua applicazione che dice questo è
un confine dove va bene solo
Aggiorna questa parte del contesto e a
non aggiorna altro e che cosa
ti dà un modo per aggiornarne uno
parte del tuo contesto primaverile non lo fai
hanno a che fare un riavvio duro al
application server stesso quindi grazie
molto Kenny siamo davvero a corto di
tempo qui Grazie Jonathan
[Applausi]

Please follow and like us: