
il mio nome è sam newman a cui lavoro
penso che probabilmente dovrei prenderne un po ‘
prima di tutto non lo sono
È Brett dal volo delle conchiglie
sicuramente non io conosco tutto il
testi per zollette di zucchero e molto del
testi anche per lavoro, ma io sì
Prendiamo in prestito un sacco di birra gratis prima di me
condividi entrambe queste cose con te
lavoro per il pensiero funziona come Mike ha menzionato
siamo una società di consegna di software personalizzata
abbiamo uno stand che puoi venire e impiccare
fuori e vinci uno zaino che farà pagare
sul tuo iPhone anche se in Nord
Europeo se potrebbe richiedere un po ‘
un po ‘più lungo delle cinque ore che afferma
facciamo anche alcuni prodotti che abbiamo a
strumento che fa una sorta di caso utente
sistemi di gestione agili di roba di monitoraggio
chiamato mescolare un test di accettazione
strumento di scripting chiamato twist e uno strumento
chiamato andare per l’integrazione continua e
consegna continua non parlerò
questi strumenti sempre di nuovo se lo si desidera
scopri di loro puoi venire lontano da me
dopo sono tutti fantastici ma è così
molto come sto per dire e lo siamo anche noi
assumendo abbiamo tipo anche sempre assumente ma
Sono davvero qui per parlarti oggi
sul perché ah bene in primo luogo perché rapido
rilascio è importante per cui vogliamo
essere in grado di rilasciare le nostre applicazioni
più veloce di quanto abbiamo fatto in passato e nessuno
di questo è una sorta di uscita dal
Lean Startup movement and everything
altro ma è tanto quanto qualsiasi altra cosa
altrimenti si tratta di scrivere software
stiamo scrivendo software per qualcuno a
andare e usare e l’idea è che loro
si spera che sarà qualcosa loro
voglio usare e usare bene e loro sono
andando a darci un feedback su di esso così
vogliamo costantemente ottenere il nostro
software nelle mani dei nostri utenti
più veloce perché poi sappiamo che lo fa
funziona davvero, possiamo ottenere dati del mondo reale
su quanto sia efficace su quanti
macchine di cui abbiamo più bisogno, sospetto
lavorando a qualcosa che è il web di fronte a me
voglio dire che alcune persone qui lavorano
sistemi embedded un paio di persone qui
quella guida di lavoro per i razzi caduta I
sappi ma per la maggior parte di voi hai il
capacità di rilasciare alla vostra base di clienti
Mart molto più spesso lo sei già
soffermarsi troppo sul
punto ma se sei interessato ad alcuni
dei driver aziendali dietro questo
ci sono molte altre sessioni di
consegna continua al momento io sono
davvero qui per parlarti di questo
sebbene quale sia il criterio che
influenza il design tipicamente quando sono
lavorando con un cliente e stiamo parlando
sull’architettura esistente il
sistema e come guidarlo avanti o
stiamo parlando di progettare un nuovo
sistema stiamo pensando ai vincoli
e principi stiamo pensando a cosa
il sistema deve fare e così siamo
pensando a questi criteri e lotti
di questi hanno spesso chiamato il malato
facilità così ma forse il ridimensionamento come facciamo noi
voglio ridimensionare la nostra applicazione magari con
un ultimo zombie farmville pianta Ville
gioco mashup di Zynga e ne abbiamo bisogno
trattare con la mandria tonante da
Facebook in modo che quando le persone iniziano
buttandomi a basso costo sulla mia pagina myface
che posso scalare per gestire il carico così
forse sono preoccupato per il lineare
scalabilità potrei essere più preoccupato
sulla durabilità forse sono il danese
sistema di cartelle cliniche e ho bisogno di fare
sicuro che i miei documenti di prescrizione sono
essere memorizzati in modo sicuro e quindi potrei avere
pensare molto al mio progetto sui dati
replica sulla durata del servizio
potrebbe pensare geografico
I vincoli potrei avere legislativo
requisiti che significano che il mio fisico
l’hardware necessario per il sito
essere nel posto dove sto facendo affari
persone nel settore del gioco d’azzardo hanno queste
tipi di problemi che potresti dover avere
il tuo kit a Gibilterra in Germania da fare
affari lì conformità ovviamente divertente
alcuni di voi potrebbero essere stati sfortunati
abbastanza da funzionare per un livello PCI uno
organizzazione e devono saltare attraverso
molti cerchi di cui potresti preoccuparti
tecnologia che tecnologia stiamo andando
per costruire la nostra applicazione è sta andando
essere un rubino sulla pila di rails sta andando
questi sono dotnet per le prestazioni
le cose standard a cui pensiamo
consapevolmente o inconsciamente quando
pensando di progettare il sistema
abbiamo per il problema di fronte
noi, ma per quanto riguarda rendere più facile
rilascia il nostro software quanto spesso lo è
qualcosa che consideriamo a
problema
il più delle volte sembra essere un
ripensamento per molti dei clienti
lavorare con loro hanno sviluppato un
pezzo di software per uno o due anni
ottengono la prima uscita e poi
trovare ci vogliono altri sei mesi per
ottenere il prossimo rilascio e spesso lo è
perché non avevano considerato il
aspetti della loro architettura o del
design del sistema che lo rende facile
per loro di rilasciare il software stiamo andando
a guardare tre cose veramente siamo
andando a provare e guardare il design
caratteristiche che lo rendono facile
per fare il cambiamento nel primo
posiziona bene poi andando a renderlo facile
per voi per distribuire quel cambiamento e poi
ridurremo il rischio di
rilasciare ai tuoi utenti i tuoi
i tuoi clienti conosci il tuo front end
scrivania se sei in una casa di trading e
queste sono le tre cose che stiamo andando
per guardare oggi immaginiamo un
esempio un secondo esempio qui sono con
un negozio di musica, è un sito fantastico
è uno spettacolo fantastico ma abbiamo trovato un bug
con esso cioè ho messo un album dei Metallica
nel mio carrello della spesa e il
il sistema di raccomandazioni continua a suggerire I
vai a comprare Robbie Williams e Justin
i CD di Bieber ora chiaramente c’è qualcosa
sbagliato fondamentalmente sbagliato con il
sistema di raccomandazione, ma ora c’è
l’ira dei siti sta andando abbastanza bene ma
Ho bisogno di fare un cambiamento ed è un piccolo
il cambiamento forse influisce solo su una parte di
il sistema è un sistema molto piccolo
forse è piccolo come un paio di linee
di codice forse qualche condizione logica che ho
ha sbagliato ma comunque erano grandi
sistema monolitico come questo che piccolo
cambiare per distribuirlo che effettivamente ho
per ridistribuire l’intero sistema che è
una grande scatola quindi potrebbe essere stata veloce
per me fare il cambio assumendo che ho avuto
una buona copertura del test unitario per trovare il
problema implementare un test per risolverlo ma
l’impatto di tale implementazione è abbastanza
grande prendi una situazione diversa , facciamolo
immagina ora che il mio negozio di musica sia effettivamente un
raccolta di servizi componenti quindi I
bisogno di fare lo stesso cambiamento e forse
la dimensione del cambiamento è esattamente la
stesso
ma l’ impatto del dispiegamento di quel cambiamento
è fondamentalmente diverso ora
gli impatti e quindi il rischio
associato a tale implementazione
significativamente ridotto e se si pensa
riguardo al fondamentale è ciò che potremmo
parleremo oggi dello stesso cambiamento
ha impatti molto molto diversi in termini
di cosa succede quando lo rilasci al mio
i clienti è un altro aspetto qui come
beh, non si tratta solo di fare piccolo
cambia e rendendo queste modifiche hanno a
impatto limitato in termini di rilascio
si tratta anche di liberarci per fare
piccoli cambiamenti incrementali se voglio
apportare un grande cambiamento a un sistema cosa io
voglio provare e fare è in realtà fase
quel grande cambiamento per il sistema che lo costruisce
su più versioni la cosa bella
è ognuna di queste versioni
che faccio ogni singolo incrementale
implementazione nel mio sistema è a
punto di rollback è un grande rischio
gestione per ottenere una riduzione del rischio
strategia ora posso rilasciare un piccolo
cambia sapendo se succede qualcosa io
posso rapidamente rotolare indietro ma anch’io
raccogliere un carico di dati forse a metà strada
attraverso questo ciclo decido di no
in realtà ho bisogno della grande cosa che pensavo
necessario e se sto rilasciando queste cose
frequentemente in piccoli pezzi ottengo molto
bravo nel processo di rilascio quindi rilasciando
piccoli pezzi spesso mi aiuta a ridurre
il rischio mi aiuta a imparare informazioni su
impara a conoscere il mio sistema come
si comporta e così davvero vogliamo essere
puntando a piccole versioni incrementali
quindi cosa dobbiamo fare per il nostro design
del nostro sistema per consentire a questo di consentire
questi piccoli cambiamenti incrementali bene
prendiamo il nostro grande negozio di musica come facciamo noi
vai dalla grande scatola alle piccole scatole
Ti ho mostrato prima, immaginiamo
uno scenario qui qui ho il mio grande
negozio di musica e ho iniziato a spezzare il mio
sistema in una serie di Charles può essere
le biblioteche condivise vedono qui ho il mio
libreria di raccomandazioni
questa è la parte del sistema con a
problema perché continua a consigliare Justin
Bieber, per me probabilmente ne ho presi anche io
biblioteca creazione della fattura forse per la
libreria di terze parti che mi permette di fare
Generazione di PDF cose utili come quella
e ovviamente è un programma Java quindi io
deve avere una libreria di utilità di stringa per
fai cose utili due stringhe perché
Java non mi lascia fare cose utili due
stringhe ora ci sono alcuni vantaggi questo
approccio andando da un grande monolitico
codebase ora alle librerie condivise per a
iniziare diventa più facile ragionare
dove la funzionalità potrebbe essere nel mio
sistema quello che sto pensando che ho un
problema con il sistema di raccomandazione
è probabilmente nella libreria chiamata
vaso di raccomandazione puoi comunque sperare
um può anche abilitare in realtà abbastanza
veloce vedo che giro i cicli quindi se io
bisogno di fare un cambiamento della raccomandazione
libreria ho solo bisogno di eseguire il
test delle librerie di raccomandazione e poi
forse i test del sistema globale come
Ho integrato ma non necessariamente
eseguire tutti i test unitari per dire la fattura
creazione della libreria di utilità di stringa
quelle altre cose che mi fanno bene
quindi ora potrei essere più facile fare il
cambiare c’è un problema con questo
approccio così quando si tratta di realtà
distribuendolo così eccomi qui
versione 134 della mia biblioteca di raccomandazioni
in produzione trovo che il bug possa fare
alcuni risolvono alcune prestazioni
miglioramenti e ora voglio rilasciare
la mia biblioteca in produzione ora se sono dentro
un negozio Java per esempio questo è
libreria con collegamento statico efficace a
questo punto a meno che tu non stia solo lanciando
jar file nel tuo servlet container o
stai usando jboss nel qual caso è giusto
raccogliere casualmente un file jar comunque
a un certo punto ho quindi bisogno di andare in libertà
quello cambia in produzione così fuori va
versione 2 Devo ancora rilasciare il
tutta l’ applicazione web di quel negozio di musica
per ottenere la mia nuova condivisione la mia nuova versione mia
biblioteca in produzione e efficace
questo perché è un collegamento statico
biblioteca quindi non ho necessariamente ridotto
gli impatti del rilascio in
produzione pensiamo a un diverso
scenario
pensiamo ora alla raccomandazione
sistema come servizio separato cosa
succede quando voglio rilasciare una modifica
quel nuovo servizio tutto ciò che faccio è distribuirlo
e poi reindirizzo un link ora questo è un
cambio di configurazione del negozio di musica
sì, avrò bisogno di aver fatto un
test di integrazione prima di distribuirlo ma
in termini di impatto sul sistema in esecuzione
il mio negozio di musica potrebbe rimanere sveglio durante questo
transizione se il mio negozio di musica può stare alzato
durante il passaggio alla nuova versione
del servizio di raccomandazione che sono
riducendo il rischio sto riducendo il
impatto per i miei utenti sto riducendo l’impatto
la mia attività, ma possiamo fare altre cose
in questa situazione quando distribuisco il nuovo
versione del servizio di raccomandazione se
Posso gestirli fianco a fianco che posso fare
altre cose che potrei voler eseguire
fuma su di esso prima che io lo faccia davvero
vivo potrei voler eseguire effettivamente un
mostrare il bulbo oculare e io posso farlo
tutte queste cose mentre il resto di
il sistema sta funzionando abbastanza felicemente
lo ha implementato in un sistema di produzione ora
Non potrei farlo se stavo schierando un
nuova versione di un file jar direttamente in
una directory del contenitore servlet o
lasciare un nuovo assieme dotnet a
hot patch della libreria condivisa, quindi ho
dato a me stesso la capacità di effettivamente
gestire il rischio di implementazione e
assicurati di aver fatto il giusto
scelta se ho bisogno di eseguire il backup così
smettere di funzionare rapidamente questo è
efficacemente ciò che spesso chiamiamo Bluegreen
dispiegamenti e quindi una volta che ho finito io
reindirizzare il link e quindi posso girare
fuori dal vecchio servizio che sta per fare jess
parlare di questo più tardi questo è il
credici o no il singolo migliore
foto di jazz che ho trovato su Internet
sembra ancora più orrendo in realtà
persona che ha un libro chiamato continua
consegna parlerà di cose
in seguito sarà davvero molto buono
non so che lo scopriremo più tardi, immagino
senza pressione questo è davvero il migliore
foto di te c’è due verde blu
le implementazioni sono belle, quindi penso al mio
design di servizio Penso al nostro
gestione del rischio di tali implementazioni
in
in questo modo posso schierare il mio servizio
posso testarlo posso passare quando sono
pronto ma ci possono essere sfide è
questo significa forse dei limiti nel mio
ambiente o nello spazio del problema
significa che non posso portare Bluegreen
implementazioni in questo modo facilmente alcuni
vincoli che potresti avere nel tuo
sistemi in questo momento che potrebbero fermarlo
dall’avvenimento eccone uno divertente
i luoghi classici in cui facciamo Bluegreen
le implementazioni sono in realtà con il cliente
di fronte a siti Web, quindi ecco il mio utente che è
usando il negozio di musica in questo momento e di
Certo che sta facendo shopping sta mettendo le cose
nel suo cestino e perché come ogni bene
sviluppatore di impresa ho letto cosa
il venditore mi ha detto su come conservare
cestini piuttosto che guardare l’HTTP
specifica e quindi come risultato io sono
in realtà salvando lo stato del mio carrello
sul server delle applicazioni ovviamente
è sempre la cosa migliore che puoi
forse ora ho una situazione
avvolgitore per distribuire una nuova versione del
negozio di musica ora ho a che fare con il
fatto che una volta ho provato e fumo
testalo e assicurati che sia felice e io
voglio reindirizzare il mio utente / ora devo farlo
spostare quello stato assunto come pure in modo che sia
problematico o devo decidere di uccidere
lo stato che poi diventa un business
decisione non c’è bisogno di fare questo
il più delle volte basta usare i cookie
invece spesso le persone finiscono per usare
cluster di servlet di cluster a questo punto
che ha tutti i tipi di problemi inerenti
in termini di maggiore larghezza di banda della rete
i soldi che vanno ai venditori non è necessario
vai ai venditori quindi direi in generale
evitare i servizi di stato in cui il negozio rimane
il database penso che va bene solo
non è nello stato di memoria dell’applicazione
molto difficile da fare per passare a quello
punta su hardware costoso oh
no, non possiamo permetterci un’altra scatola da gestire
il tuo sistema in parallelo su questo è
diventando meno di una preoccupazione legittima
di quanto non fosse in passato per quelli di voi
utilizzando l’infrastruttura cloud esterna
stai parlando potenzialmente di correre
un sistema di sovrapposizione per un extra
un paio d’ore che potrebbero essere poche
dollari a seconda di quanto è grande il sistema
deve essere può ancora essere un legittimo
problema quindi come posso ridistribuire il mio
servizio di raccomandazione con e mantenere il mio
sistema funzionante limitando così l’ingresso
torna a quella distribuzione senza
richiede più hardware quindi è un’opzione
usare un interruttore manuale qui
il mio sito web in questo momento ho comprato
Le regine come donatrici lo portano in un nuovo cane
e si consiglia di comprare i freni
i freni erano una grande band che vado sempre
nel dire che le persone sono molto cattive
poi qui sto correndo dal vivo ed è tutto
andando bene ma troviamo il bug con il
servizio di raccomandazione e voglio
fare un dispiegamento ma voglio mantenere il
sito in esecuzione mentre io faccio che
spiegamento ma non riesco a tirarne fuori un altro
scatola Non ho una scatola di scorta dispiegata su
forse la dimensione del servizio è troppo grande
forse richiedono l’hardware specializzato bene
quello che possiamo fare è mettere efficacemente a
interruttore automatico attorno alla connessione
tra il negozio di musica e il
servizio di raccomandazione quando voglio
distribuire il servizio Soffio il circuito
breaker ora a questo punto ho bisogno di
degradare la qualità del servizio al
sito web di front end ora questo è qualcosa
devi comunque considerare quando
progettazione di sistemi distribuiti di cui hai bisogno
per capire cosa succede quando a
il servizio non è disponibile dipende
su così in questo esempio particolare della città
semplicemente non mostriamo il
raccomandazioni al momento ora questo
potrebbe accadere durante una normale rete
interruzione qui è una cosa utile che ho
soffiato il collegamento che ora mi consente
per distribuire la nuova versione sullo stesso
hardware come avevo prima di eseguire i miei test
una volta che sono felice, ridistribuisco il servizio
ripristina l’interruttore automatico e torna indietro
la connessione ora in misura il
il negozio di musica deve essere abbastanza consapevole di ciò
Ho interrotto questa connessione così tu hai
per considerarlo, ma se lo hai
connessioni sincrone downstream a
servizi comunque devi capire
cosa succede quando quel servizio non lo è
lì per ragioni accidentali come
qualcuno tira fuori il potere ma qui
Ho dovuto pensare molto concretamente no
solo su come un servizio parla
un altro ma anche su come l’utente
il comportamento deve essere influenzato e
influenzato da quel tipo di spiegamento Mike
cita il modello dell’interruttore in
il suo libro là è parlato di più in
di un modo di gestire a valle
implementazioni che puoi effettivamente prendere
l’interruttore manuale lo rende un
interruttore automatico mettendo
controllo sanitario su di esso così per esempio se
la connessione a valle risponde
pigramente o non ritorna rapidamente
abbastanza puoi dividerlo automaticamente
connessione quindi vale la pena leggerlo
Il libro di Mike su quell’argomento c’è
un altro approccio che è quello di rendere il
collegamento tra il tuo negozio di musica e
il servizio di raccomandazione asincrono
quindi in questa situazione sto sparando dire il
contenuto del paniere fuori raccomandazione
servizio e mi aspetto una richiesta di ritorno
al negozio di musica per dire qui è quello
la raccomandazione dovrebbe essere ora qui le cose
sono un po ‘diversi se prendo il
il servizio di raccomandazione abbassa il
il tipo di negozio di musica non lo sa
ancora buttando fuori quelle richieste
supponendo che io abbia una persistente Q seduta
lì non ha mai bisogno di sapere niente
successo ma lui ha bisogno di sapere che
non ha ancora ricevuto la risposta come
otterranno le richieste di accumulo richieste
più lento e lento e smettere di accadere e
ad un certo punto hai ancora bisogno
degradare il comportamento dell’utente e il
l’esperienza dell’utente dispiace che ci sia un
sottile differenza qui in termini di cosa
succede per l’ utente però nel
precedente iterazione abbiamo conosciuto il
la mano del server di raccomandazione che avevamo dimenticato lo sapevamo
quello era sicuramente uno stato di errore ma
con un servizio asincrono non lo è
sempre immediatamente ovvio
qualcosa non è lì e non sta andando a
capita solo di essere un po ‘lento
questi possono avere impatti piuttosto sottili
comportamento dell’utente quindi non lo farei necessariamente
suggerire di cambiare il servizio o il servizio
comunicazione per essere sincrono
puramente per consentire di rimuovere questi
servizi facilmente ci sono molti
complessità emergenti che si verificano qualsiasi
tipi di situazioni così qui dico
in attesa non so di essere in uno stretto
stato adesso so solo che è preso
più di quanto pensassi dovrebbe normalmente
ma comunque una volta ottenuto il mio nuovo servizio
schierato inizia appena a mangiare di nuovo
attraverso quei messaggi e i miei
la raccomandazione ricomincia a fluire se
hai già un servizio di cui fa parte
natura un sincrono in termini di suo
stile di comunicazione quindi forse giusto
l’uso di code persistenti ti consente di
distribuire tali servizi
abbastanza liberamente ce ne sono molti
schemi interessanti su come lavori
con le comunicazioni di un tinker nel
i modelli di integrazione aziendale prenotano così
vale la pena leggere se lo fai
roba molto ci sono altre cose
da guardare però quando si pensa
il tuo servizio design ho parlato qui
davvero su come prendi un grande sistema
rompilo in pezzi per permetterti di farlo
distribuire quei blocchi indipendentemente da
l’un l’altro ci sono numeri a venire
numero di modelli anti che possono emergere
anche se ti stai avvicinando a questi
sorta di architetture distribuite I
descriverei una coppia al primo
è uno chiamato la sciocchezza che spiegherò
che trofei più tardi Eccomi in musica
negozio web e sono appena andato alle sams
parlare ma mi sono addormentato a questo punto e
pensavo a quello che dovevo fare quando io
tornare a casa è necessario dividere il mio
sistema così la prima cosa che faccio è io
guarda la mia base di codice e vedo una cosa
chiamato il livello di repository e penso
ottimo come un posto perfetto per dividere il mio
codice di base in due servizi è già
lì ho una chiamata API quindi ora vado
il mio livello di persistenza ora è separato
servizio il problema è ora quando a
le modifiche alle funzionalità che troverai in genere
quel cambiamento ora deve essere applicato
a due servizi ricordo quello che eravamo
cercando di ottenere scindendo in
servizi che stiamo cercando di rendere veloce
per fare un cambiamento e veloce da implementare
questo cambia e riduce il rischio di ciò
cambia ora se devo fare un cambiamento
che sei stato un codice base e ora
lo stesso cambiamento deve essere applicato a
due basi di codice e ora ho bisogno di distribuire
due servizi che NON sono migliore di me
peggio e questo è molto semplice
esempio possono peggiorare quando hai
più strati l’altra cosa
succede qui però è quando si taglia
servizi in ordine orizzontale
background tecnico arbitrario
i confini tendono anche a trovarlo
la comunicazione tra questi servizi
diventa molto loquace che stai facendo
più chiamate attraverso il filo
diventa inefficiente e lento da gestire
e spesso troverai anche quello che vuoi
modificare
quelle API sono molto più di quanto vorresti
normalmente e se hai uno stack gigante
di sistemi come questo che possono ottenere
difficile ora ho fatto questo discorso di recente
ad Amburgo e fu indicato a me
che non tutti sanno cosa sia una sciocchezza
è così che è un po ‘lì che hai
strati di sorta di crema pasticcera e cose
è a fucili sono cattivi che è quello che tu
bisogno di sapere a meno che non abbiano
abbastanza brandy in loro, davvero
puntiamo di più e anche in questo caso
sei tedesco questo è come un fri nero
scatto quindi pensa che siano i corvi neri
brevetto gateau se ti è utile
eravamo più per una specie di Battenberg
cosa torta dove c’è questo è come
architettura esagonale mettiamo il tuo
intero set alto di confronto torta a
Modelli di architettura è sì, lo è
la marmellata di marzapane e albicocca è piuttosto gustosa
c’è un altro anti pan là fuori che
Vedo parecchio che è lo spider così
eccoci con il nostro sistema di ordinazione di CD
e sono altri servizi di cui ho bisogno
parlare con te per realizzare i miei compiti I
avere un sistema maschile bianco che non lo è
questi sono gli opposti del ricatto
spesso i sistemi che inviano lettere a
le persone ci permettono ancora di esistere, abbiamo un
sistema per fare il data warehousing
perché hai bisogno di un data warehouse per
memorizza i tuoi dati in altrimenti diventa
perso non ho mai visto i dati venire
fuori da un sistema di data warehouse ma è così
sicuramente devo esserci per averlo
per spedirlo da qualche parte ho bisogno di un terzo
fornitura di partito per mandarmi tutti quelli justin
bieber cds finirò per ordinare
dopo il mio errore di sistema di raccomandazione
e alcuni sistemi finanziari per essere sicuri di noi
tutti vengono pagati e cosa succede a questo
punto è scoprire qualcosa
chiamato modellizzazione del processo aziendale o
gestione del flusso di lavoro e tu pensi bene
quello che sto per fare è creare un bello
diagramma di flusso di come funziona il mio sistema e
metterò quella cisti in quel flusso
tracciare la modellazione del processo di business
da qualche parte e ovviamente lo metto in
mezzo e quindi questo ragazzo ora c’è tutto
l’orchestratore che devo fare, allora sono
andando a fare quello che ho intenzione di fare
quello e quello con cui finisci è per Dom
sistemi e un enorme intoppo nel mezzo
la classe di Dio ci aveva assistito a un suicidio
è il mio lavorato di recente e abbiamo avuto un
classe molto semplice chiamata lo scheduler
e il capanno il suo unico lavoro o due
buoni lavori ad una certa ora del giorno
è andato via tornò sei mesi dopo e
lo hanno ribattezzato il direttore il
il regista ha fatto tutto il problema
di nuovo ora voglio fare un cambiamento
probabilmente dovrò cambiare il CD
sistema di ordinazione proprio nel mezzo
perché sa tutto perché è così
un problema bene perché ora questo è il
sistema più importante in tutto questo
il servizio più importante in tutto il mio
Probabilmente ho bisogno di cambiare sistema a
molto ed è l’unica cosa che è
tutto il resto si basa su non ho
ridotto il rischio che non ce l’abbiamo fatta
più veloce per fare il cambio o uh Ian
Robinson Gli stavo parlando molto presto
sui servizi vicino a Trenton alcuni dei
il servizio era e aveva una buona definizione
ha usato che era che un servizio è un
set di funzionalità su un endpoint e
parlare con lui mi aiuta a capire cosa io
stava facendo male in precedenza quando ero
suddividere questi servizi attraverso questi
confini arbitari o avere un Dio unico
servizi seduti nel mezzo cosa fare
intendiamo per tipo di capacità invece
di capacità a un punto finale quando tu
vedere servizi e componenti che sono
ben preso in considerazione ciò che effettivamente vedi nostro
i servizi sono raggruppati intorno al
capacità che hanno senso per il tuo
dominio del tuo utente aziendale questi sono
funzionalità di messa a fuoco aziendale CD shopper
funzionalità di messa a fuoco che potrei voler aggiungere
cose per una macchina voglio controllare la mia
cestino facendo un ultima versione è
cercando ascoltando queste anteprime
non sono cose intorno a un’entità o a
distinzione tecnica arbitraria questi
sono cose che nessuno in compagnia
lavorando su quel pezzo di software sia
loro un tecnologo o un non tecnologo
dovrebbe capire e quando inizi
identificando queste capacità come loro
esistono nel tuo sistema puoi solo iniziare
raggruppandoli insieme in qualche modo
cosa stai facendo con il principale dato
progetta e crea concorsi limitati e
quando ne hai raccolti abbastanza
insieme iniziano a diventare efficaci
i confini per i tuoi servizi
la ragione è fantastica perché è tua
la comunicazione diventa quindi focalizzata
attorno a ciò che stai cercando di ottenere
con il tuo software
non diventa arbitrario okay
trova per ID no, sto verificando che lo sono
effettuare un ordine rimuovendo qualcosa per
il mio carrello diventa quindi il vantaggio
che bene cosa facciamo quando usciremo
una caratteristica del cambiamento che vogliamo dare
il cliente in questo caso qualche acquisto
CD che cambierà il modo in cui
I CD vengono acquistati e questo è molto
più probabile ora che cambia molto di più
probabilmente ora limitato a uno o due
di questi servizi non si propagano
attraverso l’intero sistema, spesso quando
fare questi esercizi con i clienti lo farà
quasi fai se ti ricordi da
Università quando parliamo
programmazione orientata agli oggetti abbiamo fatto il
esercizio di carte crc dove tutti sono arrivati
fingere di essere un oggetto lo abbiamo fatto molto
con entusiasmo per un tutorial quindi
non l’ho mai più fatto per quello che effettivamente faccio
servizi di ruolo è l’esercizio
okay, quindi voglio raggiungere questo compito così
come farò ad esultare così bene, prima di tutto
vado da te e poi te ne vai
per andare a fare questo e poi stai andando
per andare e fare ciò che si inizia a scoprire
problemi nel tuo design molto molto
rapidamente ho avuto ostacoli e ho ottenuto
le dipendenze circolari sono cose eccessive
confuso e loquace non ti serve
qualcuno molto tecnico per farlo se
hai corretto questi limiti
è un ottimo modo per mantenere il tuo
occhio e sto prendendo in considerazione questi correttamente
quindi pensa davvero a modellare il tuo
servizi basati sul tuo dominio e su I
direi che le tue capacità di dominio così
operazioni operazioni di alto livello piuttosto
di entità un altro problema reale
anche se ti stai distruggendo
servizi è come questi servizi parlano
l’un l’altro pensiamo ancora un po ‘
scenari quindi eccomi con la mia musica
acquista ora con un sistema di raccomandazione
Apporto una modifica interna al
sistema di raccomandazione forse un piccolo
cambio forse aggiungo qualche logging
dichiarazioni internamente l’interfaccia ha
non cambiata radicalmente finché io
non ho cambiato la semantica di quello
interfaccia sto bene al negozio di musica
continua come prima, forse ora
aggiungi alcune nuove chiamate API ma la vecchia API
chiamate che potrei fare attraverso il filo rimanere
lo stesso questo è ora un cambiamento di espansione
ancora
Non è necessario ridistribuire il mio negozio di musica
il negozio di musica continua è molto
felice di cosa abbiamo a che fare sono
rottura dell’interfaccia cambia questi sono
o fondamentalmente diverse API o
comportamento semantico molto molto diverso di
una chiamata esistente che è sempre cattiva
questo è un problema perché di nuovo se io
vuole limitare l’impatto di un cambiamento e
Continuo a rompere le API ai servizi remoti
su improvvisamente iniziando ad aumentare il
dimensione e il rischio delle mie spiegazioni come
possiamo gestire bene il cambiamento dell’API il primo
cosa è se hai intenzione di introdurre un
rompere il cambiamento non è considerato
introducendo il cambiamento di rottura che è
sempre buono ma considera anche di avere due
punti finali quindi immaginiamo che sto rotolando
fuori una nuova applicazione iphone e it
ha bisogno di comunicare in un bel
modo diverso e in realtà abbiamo guardato
alla vecchia versione un endpoint ed è
diventando abbastanza furbo e non lo siamo
sono davvero molto contento , quindi siamo venuti
con un bel fatto molto meglio
più facile per supportare API che noi così cosa
posso fare bene appena stendere il nuovo
endpoint ma li fanno correre di fianco
lato ora posso rilasciare il mio iphone
applicazione sul nuovo endpoint che autorizzo
altri consumatori del vecchio endpoint a
continuare com’erano prima di acquistarli
tempo quindi se ho 2 3 4 5 10 consumatori
non sono influenzati da questo cambiamento così
ora ho tempo per parlare con quelle squadre o
pianifica che cambiano quando fanno il loro
la prossima uscita e poi hanno vinto così tanto
pronti possiamo reindirizzare quel cambiamento così
questa è una cosa che possiamo considerare di fare
per limitare l’impatto delle modifiche all’interfaccia
ci sono altre cose che possono andare molto
male male però quando il tuo tacchino
parlando attraverso un confine di servizio questo
è un classico che ho fatto circa cinque
volte prima ho capito che era una cattiva idea
ai servizi ora naturalmente lo sono
comunicando ne sto prendendo un po ‘in memoria
stato dell’oggetto Sto creando un serializzato
forma di quello stato oggetto e io sono
mandandolo sopra il filo e l’altro
bravo ragazzo, lo deve deserializzare
ora ogni buon sviluppatore che è stato
sollevato su non ripetere te stesso è
immediatamente visto
Re il nostro riutilizzo del codice e quello che fanno è
creano una libreria che creano
libreria che può prendere in memoria
lo stato dell’oggetto lo serializza e lo deserializza
di nuovo nello stesso stato dell’oggetto perché
ciò significa meno codice che poi utilizzano
stessa libreria condivisa su due servizi così
qui sono a servizio degli oggetti le tue bugie
e inviato oltre il filo fantastico e
poi vado a rilasciare una nuova versione di
il codice della libreria condivisa e ho fatto quando ho
distribuire la prossima versione di servizio a possibile
Posso ancora mandare roba sul filo, forse
forse non un sistema che ho visto hanno avuto
un comportamento abbastanza diffuso condiviso
libreria che rappresenta il loro dominio
oggetti che sono stati condivisi su quattro
servizi che non potevano affidabilmente
garantire che possano deserializzare oggetti
quando aveva versioni diverse
libreria condivisa è stato peggio perché
quelli come quegli oggetti erano seduti dentro
caselle di messaggio in tutto il sistema così
quando avevano bisogno di rilasciare un servizio
che aveva bisogno di una nuova versione condivisa
libreria che dovevano sincronizzare
distribuzioni che condividono la libreria
intero sistema deve prendere tutto il
i servizi verso il basso dovevano poi avere un
lavoro che ha riscritto tutti i messaggi
questo sul bus dei messaggi e li metti
di nuovo così veramente condiviso
protocolli di serializzazione quindi cose simili
Il legame saggezza di serializzazione Java può essere
piuttosto brutto in queste cose come lo è Jack
ci sono alcune serializzazioni binarie
protocolli che ti danno un po ‘più di spazio
per manovrare cose come crota buffs e
parsimonia tuttavia non risolvono veramente
tutti i problemi qui e tipicamente te
vedere le persone che non cambiano mai il loro binario
protocolli di serializzazione perché sono
troppo spaventato dall’impatto davvero
la cosa che dobbiamo abbracciare qui è
qualcosa è stato dettagliato in RFC 761 che
è uno dei primi tcp / ip rs ed è
qualcosa che è stato chiamato postelles
la legge è solo prudente in quello che fai
e sii liberale in ciò che ti aspetti bene
cosa vuol dire cosa significa se io
ricevi qualcosa e devo reagire
ad esso non si trova l’intero messaggio
e come ho bisogno di tutto il messaggio ora con
serializzazione binaria
Sono un po ‘forzato in quello che devo
spacchettare tutto e se le cose non lo sono
lì che mi aspetto ma non uso cado
oltre se ho bisogno di tre campi da un molto
il grande carico utile del sapone non si lega al
intero schema perché quello giusto
aumenta la superficie di me
rotto da qualcosa la nostra migliore pratica
consiglio quando si consumano i servizi di sapone
XPath non utilizzare un raccoglitore Wizzle per estrarlo
i piccoli pezzi di cui hai bisogno e poi se
qualcuno cambia parti di quello schema a
al di fuori delle cose che ti interessano
non noteremo nemmeno spesso quando stiamo facendo
servizi condivisi che in realtà non faremo
riutilizzo del codice attraverso quei servizi che può
spesso sono significativamente meglio pochi
copiare e incollare il codice tra i servizi
e riutilizzarli e accidentalmente ottenere
te stesso in una situazione in cui distribuire
una modifica devi ridistribuire il
tutto questo sistema può essere molto
controintuitivo per gli sviluppatori ma
credimi l’alternativa è lontana
peggio ancora un altro modo in cui puoi pensare
Intendo dire che ho parlato di cose
puoi fare per evitare di rompere i cambiamenti
ci sono modi in cui puoi capirlo
prima di entrare in produzione e il
la risposta è sì e guidata dal consumatore
contratti o un ottimo modo di
evitarlo con il consumatore guidato
i contratti qui è un negozio di musica
consumando il servizio di raccomandazione
ha un’aspettativa sulla qualità di
servizio per quel set per quello a valle
servizio che si aspetta quando lo faccio
tipo di richiesta ottengo una risposta
sembra così ora quando sei
progettare questi confini del servizio
stai avendo quella conversazione forse
all’interno della tua squadra potrebbe essere in tutto il team
ma spesso quella banda che diventa un’API
e questa è spesso la fine del
conversazione e se io in realtà
ha codificato le nostre aspettative in merito
servizio come un test vedere il negozio di musica dire
ecco cosa ci aspettiamo che il vostro servizio
fare quando faccio questo test poi ottiene
gestito dal servizio di raccomandazione in
la loro build così ogni volta che
il servizio di raccomandazione apporta un cambiamento
escono bene guardiamo il nostro
i contratti dei consumatori li eseguiamo se noi
rompere loro come abbiamo rotto loro posto grande
beh, potremmo aver cambiato la nostra API di cui abbiamo bisogno
andare a parlare con le persone che sono
consumandoci o dobbiamo cambiare cosa
noi abbiamo
questo è un grande avvertimento che consente
il servizio di raccomandazione da mantenere
cambiando continua a cambiare, continua a cambiare
sapendo di avere quella rete di sicurezza dentro
posto che una volta entrati in produzione
hanno fatto tutto quello che possono fare
verificare che non si rompano a vicenda
cambia puoi essere più coraggioso che in
rilasciando il cambiamento in produzione
purtroppo ho parlato di tutto il
cose facili finora che non ho parlato
molto è il database il vero problema
abbiamo come qualcuno di voi potrebbe sapere chi ha
stato alle grandi piste di dati è quel dato
è davvero fantastico ed è soprattutto
sembra essere un volume come uno
gigabyte è decisamente meglio di uno
mega da un terabyte è migliore del
gigabyte un petabyte è fantastico, lo sono
in realtà non vedo l’ora di
L’archiviazione dei dati di Hadron Collider parla più tardi
sul volume chiaramente è la cosa che noi
mettere da parte le piccole preoccupazioni come come noi
potrebbe usare quei dati o usarli per guidare
decisioni aziendali perché è pazzesco
parlare ma i dati sono molto molto interessanti
il problema è che i database sono intrinsecamente
cose cattive e sono cattive in
contesto di rendere le cose facili da cambiare
ecco un vero questo è probabilmente il
servizio distribuito più comune
anti-pattern vediamo le mani più in basso
comune e anche il più distruttivo in
termini per facilitare l’applicazione delle modifiche
al tuo sistema il mio negozio di musica a parlare
alcuni schemi di database sono rack Oracle
Ho un sacco di soldi dalla vendita
quei cd justin bieber e io tiro fuori
il servizio di raccomandazione perché
questa è la cosa importante, ma io
continuare a parlare allo stesso schema
roba davvero standard perché è il problema
bene se voglio cambiare il negozio di musica
ora e forse voglio cambiare il
progettazione dello schema per supportare un cambiamento
negozio di musica posso fare quel tipo di forza
non so che non so per forza cosa
il servizio di raccomandazione sta facendo il mio
schema Sto andando a rompere la
servizio di raccomandazione
non so allo stesso modo se entrambi questi
i servizi stanno scrivendo sulle stesse tabelle
ma hanno una logica di business che è
diverso come faccio a sapere che ho intenzione di
soddisfare le mie modifiche ai dati in modo coerente
tipo di moda non so a questo punto
hai bisogno di trattare quasi il tuo database
schema come servizio separato con un enorme
API indefinita che è il seguito di quello
punta a iniziare a capire quanto è grave questo
vorrei davvero difendere se lo sei
in questa situazione hai due scelte
o inizi a provare a separarti
lo schema del tuo database o unisci il
servizi indietro perché questo è peggio
significativamente peggio per noi perché cosa
è che stiamo cercando di limitare il
impatto di un cambiamento ed essere in grado di
rilasciare in modo efficace ed efficiente
ora non posso apportare modifiche senza saperlo
a proposito dello strappo influisce su ciò che vogliamo
i nostri schemi separati il negozio di musica
voglio parlare del servizio di raccomandazione
passa dal limite dell’API del servizio
in genere questo non richiederà più
hardware solo uno schema separato
separarli non è sempre facile ma
può essere fatto ed è significativo
meglio così ogni servizio dovrebbe possedere il suo
i propri dati in genere si pensa in termini di
entità di proprietà di servizi e
avere il controllo dell’intero ciclo di vita
di quei servizi perché è così grande o
non faremmo molti cambiamenti interessanti
per rendere i nostri servizi migliori andiamo
immagina ora che ho deciso che il mio
servizio di raccomandazione davvero molto
davvero bisogno di muoversi per reagire perché io
Ho visto Preston parlarne l’anno scorso
e il pensiero di reagire è cool che ho avuto modo di
distribuisci i miei dati in tutto il mondo ma
ora posso liberarmi ora sono libero di fare
questo cambia perché finché la mia API a
non cambia e la semantica di quello
Le API non cambiano Non sono interessato
Crescent in realtà ha delineato un bel
approccio a come gestiscono il
transizione per il sistema di cartelle cliniche
dal mio sequel per reagire come merita
dimorando qui, quindi qui sono necessario
rotta di rilascio per reagire ma non lo so
trasformalo in una grande banca
Non so all’improvviso va bene, lo ero adesso
il mio sequel e ora sto reagendo così invece
la prima uscita che duello giusto scrivo
i miei dati in entrambi i posti che sto ancora leggendo
per la mia gestione del database relazionale
sistema perché sto scrivendo a questo punto
Sto scrivendo gioielli a questo punto perché
Voglio tornare indietro, ricorda che siamo
cercando di fare piccoli incrementi
rilasci con rischio ridotto che voglio
per ripristinare rapidamente questo cambiamento
punto se agiamo collassare in un mucchio il
versione precedente posso tornare indietro e io
può ancora avere tutti i miei dati che ho avuto
prima di assumere reagire regge
operativamente sta ridimensionando tutto
altrimenti posso leggere da adesso
leggere da reagire sto ancora scrivendo però
alla mia gestione del database relazionale
sistema di nuovo ho bisogno di un punto di rollback e
solo quando sono pronto, quindi ho davvero bisogno
per rimuovere quel sistema è una specie di a
variazione su ciò che viene spesso chiamato buio
lanciando infatti te ne ho allevato a
sottosistema senza nessuno davvero
rendendola conto di averlo usato in
sfondo e qualcuno già lo fa
rilasciare efficacemente quella caratteristica al
i clienti la cosa interessante qui è
è che per il punto di vista il
il cliente potrebbe non avere alcun impatto
cambiare ma potrebbe essere abbastanza grande
cambiamento di scala che ho fatto senza nessuno
realizzando davvero cosa sta succedendo
può succedere per i servizi che io esco
con una nuova versione del mio
sistema di raccomandazione questo è scritto
recinzione quindi sarà ovviamente
meglio e più veloce e sicuramente
Non suggerirei mai di prendere i cd justin bieber
ci piacciono cinque linee di codice
rispetto a circa ventimila linee
di studioso nel servizio di raccomandazione
ma qui sono così, faccio il mio cambiamento e
di nuovo potrei farlo con i servizi
le raccomandazioni forse li ho mandati a
entrambi i servizi in produzione ma forse
Sto solo guardando le risposte da
il servizio di raccomandazione che posso fare
certo che non è che non mi sto sballando
tassi di errore che potrei effettivamente avere
qualcuno guarda un log delle risposte
e vedere se queste cose sembrano sensate dentro
un ambiente di produzione e poi quando sono
pronto posso ritirare la raccomandazione
servizio
quindi abbiamo parlato di alcune cose in questo
sessione Sono nel tempo in cui ho parlato
hai digiunato abbiamo parlato di decomposizione
il nostro sistema in piccole unità e così facendo
abbiamo pensato di modellare il dominio
abbiamo parlato di come tu quando lo fai
che come si ottengono le interfacce
il tuo sistema e abbiamo parlato di un numero
di modelli in cui abbiamo separato il
distribuzione di qualcosa dal rilascio
per i nostri clienti bluegreen
distribuzioni distribuite rispetto a quelle rilasciate a
caratteristica abbiamo parlato di lancio scuro
ci sono molte ragioni per cui potresti
voglio andare verso il componente basato
sistemi che vanno da dire guadagno di azioni da
belle strutture del pacchetto al modulo
strutture a servizi distribuiti
questa è una progressione abbastanza ragionevole
rompere il nostro sistema in componenti
diventa più facile ragionare se noi
prendilo alla conclusione logica
diventa facile per noi quindi sostituire
quei sistemi senza influenzare il
salute generale del nostro intero servizio
ci sono molte ragioni per cui potremmo
voglio seguire quella strada che potrei volere
dividere queste cose per motivi di squadra
per le prestazioni per la scalabilità per
tecnologia ma alla fine dobbiamo essere
pensando anche a quanto sia facile
per noi effettivamente rilasciare il nostro sistema I
usato per guardare attraverso il malato a proprio agio
elenca l’ingegneria del software
L’Istituto c’è sempre stato
manutenibilità ero solito pensarlo
la manutenibilità riguardava il codice
la qualità del TDD è forse funzionale
test ma la manutenibilità non ha senso
nel rendere facile per me fare che
cambiare se non penso a come è
che posso fare quel cambiamento in a
impostazione di produzione e tutto ciò che penso
è necessario prendere in considerazione ciò che faccio
ho bisogno di fare come sarebbe se potessi
essere rilasciato questa funzione ora cosa sarebbe
capita anche al mio sistema generale
ha delineato quegli approcci che fanno
senso se è necessario mantenere il tempo
alcuni di voi potrebbero non avere questo tipo
di sfide
ma ciononostante stiamo assistendo a un movimento
lontano da grandi sistemi monolitici a
piccoli servizi che parlano insieme
microservizi questo è molto più fattibile
di quanto non fosse perché abbiamo cloud
fornitori che ci permettono di fornire
scatole abbastanza grandi per i nostri servizi
abbiamo l’ automazione dell’infrastruttura
tecnologia che ci permette di portarli
servizi su e giù e stiamo ottenendo un
molto più esperienza sul perché il nostro PC è
cattivo e perché il riposo è buono e tutti quelli
tipi di cose quindi questo è stato un
tour whistle-stop attraverso alcuni esempi
di come puoi cambiare le tue architetture
i tuoi progetti dei tuoi sistemi al fine di
rendi più facile il rilascio
componenti ma non è esaustivo il
la cosa fondamentale è solo applicare cosciente
il pensiero è la capacità di liberare il tuo
software spesso importante per te e
se ci pensi molto di più quando
tu prendi le tue decisioni, io sono un po ‘
un po ‘in ritardo quindi ho tempo per
domande sicure che la domanda era quando
integrando i servizi insieme potrei
o fai molte chiamate su tutto il
servizi o potrei avere un negozio di musica
servizio che estrae questi servizi
insieme per presentare qualcosa al
utente e la domanda era quale sarebbe il mio
Preferisco essere io penso quando stai andando
a una pagina web come utente di quella pagina web
devono essere ospitati da qualche parte
sarà sempre un punto di integrazione
per un utente semplice che affronta il sito Web
la domanda è davvero su quanto spesso o
sottile che l’esperienza potrebbe essere e
c’è un equilibrio tra la creazione di un
esperienza utente avvincente contro di te
conoscere il comportamento in decomposizione nel
sistemi quindi penserei che il servizio a
la parte superiore deve essere estremamente sottile, forse
tutto ciò che sta facendo e se è possibile che tu lo faccia
servirà di nuovo HTML e javascript
e CSS così potrebbe essere il negozio di musica
responsabile della comune oh the
esperienza utente coerente e quindi il
le chiamate arrivano direttamente dal
client indietro quei sistemi finali che potrebbero
non essere praticabile anche se dipende dal numero
dei servizi che hai coinvolto e tu
potrebbe essere necessario fare un po ‘sul lato server
aggregazione prima di restituirla a
il cliente che ho sperimentato cercando
in realtà servendo interi frammenti di
tu io dalla differenza
servizi e rimontare quelli del
il problema torna appena a come si fa
mantenere un aspetto coerente e sentire se
pensi di limitare l’impatto di a
cambia se rilascio una modifica che ha a
tipo di utente fondamentalmente diverso
sperimentare l’impatto dell’utente è
abbastanza sconvolgente quindi probabilmente per un semplice
sito web o cliente standard
sito web che vuoi qualcosa ma dovrebbe
essere molto penso che siamo abbastanza magri e possibile
solo essere qualcosa che lo prende
prende che si trova su quel dominio e
assemblato sul lato client se tu
servire il contenuto che viene da
i tuoi servizi con intestazioni cache decenti
hai la possibilità di farlo
aggregazione nel client o aggregazione
nel server è possibile utilizzare il proxy inverso
cdns per mitigare i rischi di quelli
le cose quindi il commento è stato che hai
ho un sacco di sapone in corso su un sacco di
schemi per il passaggio dei messaggi
tra i sistemi e si sta cercando di
allontanati da tutto ciò che hai
visto che altrove se intendi muoverti
a schemi più leggeri intendo quando
progettare quello di cui sto parlando è andato bene
un servizio parla con un altro servizio noi
basta modellarlo in un modo molto leggero
sulla base del business stesso in modo che
dovrebbe essere il carico utile che dovresti essere in grado
per mostrare che il carico utile a un utente aziendale
e dovrebbero capire cosa sia
è quasi il protocollo di serializzazione
XML è che Jason non è quasi il tipo di
punto ma la cosa fondamentale è la nostra vera
leggero e certamente devo ancora
vedere ogni beneficio che la saggezza ci ha dato
diverso dalla capacità di molto rapidamente
generare un’API programmatica che quindi
non sarà in grado di parlare con un altro
API programmatica generata dallo stesso
saggezza mi sono divertito molto a farlo con
parlando con British Telecom per esempio
dovevamo scoprire il punto esatto
rilascio dell’asse Apache che dovevano fare
la nostra versione di accesso Apache genera un
API che consentirebbe loro di parlare
l’un l’altro quindi sì stiamo vedendo le persone
allontanandosi da quel tipo vincolante a
una specie di accenditore più informale
la cosa fondamentale è se sono umani
leggibile è probabilmente molto facile per loro
per te scrivere codice che può consumare
loro e se sono basati su come
anche la tua azienda opera
andando a cambiare probabilmente peserà meno di
potrebbero se fossero solo un
messaggio tecnico arbitrario che sei
mandare avanti perché agli sviluppatori piace
shift f6 vedendo cose in IntelliJ per no
motivo apparente diverso da quello che preferiscono
il nome di qualcos’altro che non tendono
per farlo con i concetti di business in modo che il
domanda c’era come lei riuscì
cambiando nel database quindi ne ho due
versioni del servizio e ho
distribuito la nuova versione del servizio
e ha ancora bisogno di parlare con il tuo
database e forse quella versione del
il servizio richiede una modifica al programmatore
come gestirò quelle cose?
a fianco se è necessario mantenere il
sistema per essere in un upstate che potrebbe essere necessario
per eliminare la distribuzione del tuo schema
cambia così ad esempio potresti fare un
espandi il tipo di contratto, quindi forse
la prima cosa che devi fare è applicare
una modifica dello schema che aggiunge il nuovo
colonne di tabelle dei campi del database che ti servono
punto 1 passaggio 2 sarebbe distribuire il
versione dell’applicazione che utilizza
quei nuovi dati e poi una volta che hai fatto
che in seguito potresti applicare il secondo o
terzo cambiamento che rimuove il vecchio
strutture in modo da poterlo espandere
database si finisce per dover smantellare
si inserisce in tre versioni molti dei
organizzazioni che praticano abbastanza
cicli di rilascio frequenti pensando al
Esitano i loro guizzi del mondo loro
potrebbe essere il rilascio di modifiche del servizio a
servizi componenti più volte del giorno
non stanno facendo la stessa cosa per
le modifiche al database quando tali database
sono condivisi la cosa fondamentale è che diventa
significativamente più problematico se
stanno parlando diversi tipi di servizi
allo stesso database se è possibile segmentare
questo e ho dei servizi che possiedo
database almeno si dimagrisce
complessità a quando si ha uno schema
cambia qui ma uno schema cambia qui
non ha bisogno di influenzare un servizio finito
qui ma potrebbe essere necessario smistarlo
Bisogna pensare molto attentamente a come
fai modifiche al database e non c’è
modo intorno a quello soprattutto per quelli
sistemi in cui si trova lo schema
anche il database lo sosterrei
questo problema non va via
i cosiddetti archivi dati di schema lyst data
come Mongo hai uno schema è
solo uno schema implicito nel tuo
codice dell’applicazione che si sta scegliendo
nominare un campo una certa cosa e se
hai due versioni di server
stai chiamando quelli che pensano quei server
quei campi cose diverse che hai
lo stesso tipo di problema in corso siamo a
tempo bene grazie mille io sarò
tutto il giorno, se ne hai
domande e le diapositive e il video lo faranno
essere presto grazie
penso che probabilmente dovrei prenderne un po ‘
prima di tutto non lo sono
È Brett dal volo delle conchiglie
sicuramente non io conosco tutto il
testi per zollette di zucchero e molto del
testi anche per lavoro, ma io sì
Prendiamo in prestito un sacco di birra gratis prima di me
condividi entrambe queste cose con te
lavoro per il pensiero funziona come Mike ha menzionato
siamo una società di consegna di software personalizzata
abbiamo uno stand che puoi venire e impiccare
fuori e vinci uno zaino che farà pagare
sul tuo iPhone anche se in Nord
Europeo se potrebbe richiedere un po ‘
un po ‘più lungo delle cinque ore che afferma
facciamo anche alcuni prodotti che abbiamo a
strumento che fa una sorta di caso utente
sistemi di gestione agili di roba di monitoraggio
chiamato mescolare un test di accettazione
strumento di scripting chiamato twist e uno strumento
chiamato andare per l’integrazione continua e
consegna continua non parlerò
questi strumenti sempre di nuovo se lo si desidera
scopri di loro puoi venire lontano da me
dopo sono tutti fantastici ma è così
molto come sto per dire e lo siamo anche noi
assumendo abbiamo tipo anche sempre assumente ma
Sono davvero qui per parlarti oggi
sul perché ah bene in primo luogo perché rapido
rilascio è importante per cui vogliamo
essere in grado di rilasciare le nostre applicazioni
più veloce di quanto abbiamo fatto in passato e nessuno
di questo è una sorta di uscita dal
Lean Startup movement and everything
altro ma è tanto quanto qualsiasi altra cosa
altrimenti si tratta di scrivere software
stiamo scrivendo software per qualcuno a
andare e usare e l’idea è che loro
si spera che sarà qualcosa loro
voglio usare e usare bene e loro sono
andando a darci un feedback su di esso così
vogliamo costantemente ottenere il nostro
software nelle mani dei nostri utenti
più veloce perché poi sappiamo che lo fa
funziona davvero, possiamo ottenere dati del mondo reale
su quanto sia efficace su quanti
macchine di cui abbiamo più bisogno, sospetto
lavorando a qualcosa che è il web di fronte a me
voglio dire che alcune persone qui lavorano
sistemi embedded un paio di persone qui
quella guida di lavoro per i razzi caduta I
sappi ma per la maggior parte di voi hai il
capacità di rilasciare alla vostra base di clienti
Mart molto più spesso lo sei già
soffermarsi troppo sul
punto ma se sei interessato ad alcuni
dei driver aziendali dietro questo
ci sono molte altre sessioni di
consegna continua al momento io sono
davvero qui per parlarti di questo
sebbene quale sia il criterio che
influenza il design tipicamente quando sono
lavorando con un cliente e stiamo parlando
sull’architettura esistente il
sistema e come guidarlo avanti o
stiamo parlando di progettare un nuovo
sistema stiamo pensando ai vincoli
e principi stiamo pensando a cosa
il sistema deve fare e così siamo
pensando a questi criteri e lotti
di questi hanno spesso chiamato il malato
facilità così ma forse il ridimensionamento come facciamo noi
voglio ridimensionare la nostra applicazione magari con
un ultimo zombie farmville pianta Ville
gioco mashup di Zynga e ne abbiamo bisogno
trattare con la mandria tonante da
Facebook in modo che quando le persone iniziano
buttandomi a basso costo sulla mia pagina myface
che posso scalare per gestire il carico così
forse sono preoccupato per il lineare
scalabilità potrei essere più preoccupato
sulla durabilità forse sono il danese
sistema di cartelle cliniche e ho bisogno di fare
sicuro che i miei documenti di prescrizione sono
essere memorizzati in modo sicuro e quindi potrei avere
pensare molto al mio progetto sui dati
replica sulla durata del servizio
potrebbe pensare geografico
I vincoli potrei avere legislativo
requisiti che significano che il mio fisico
l’hardware necessario per il sito
essere nel posto dove sto facendo affari
persone nel settore del gioco d’azzardo hanno queste
tipi di problemi che potresti dover avere
il tuo kit a Gibilterra in Germania da fare
affari lì conformità ovviamente divertente
alcuni di voi potrebbero essere stati sfortunati
abbastanza da funzionare per un livello PCI uno
organizzazione e devono saltare attraverso
molti cerchi di cui potresti preoccuparti
tecnologia che tecnologia stiamo andando
per costruire la nostra applicazione è sta andando
essere un rubino sulla pila di rails sta andando
questi sono dotnet per le prestazioni
le cose standard a cui pensiamo
consapevolmente o inconsciamente quando
pensando di progettare il sistema
abbiamo per il problema di fronte
noi, ma per quanto riguarda rendere più facile
rilascia il nostro software quanto spesso lo è
qualcosa che consideriamo a
problema
il più delle volte sembra essere un
ripensamento per molti dei clienti
lavorare con loro hanno sviluppato un
pezzo di software per uno o due anni
ottengono la prima uscita e poi
trovare ci vogliono altri sei mesi per
ottenere il prossimo rilascio e spesso lo è
perché non avevano considerato il
aspetti della loro architettura o del
design del sistema che lo rende facile
per loro di rilasciare il software stiamo andando
a guardare tre cose veramente siamo
andando a provare e guardare il design
caratteristiche che lo rendono facile
per fare il cambiamento nel primo
posiziona bene poi andando a renderlo facile
per voi per distribuire quel cambiamento e poi
ridurremo il rischio di
rilasciare ai tuoi utenti i tuoi
i tuoi clienti conosci il tuo front end
scrivania se sei in una casa di trading e
queste sono le tre cose che stiamo andando
per guardare oggi immaginiamo un
esempio un secondo esempio qui sono con
un negozio di musica, è un sito fantastico
è uno spettacolo fantastico ma abbiamo trovato un bug
con esso cioè ho messo un album dei Metallica
nel mio carrello della spesa e il
il sistema di raccomandazioni continua a suggerire I
vai a comprare Robbie Williams e Justin
i CD di Bieber ora chiaramente c’è qualcosa
sbagliato fondamentalmente sbagliato con il
sistema di raccomandazione, ma ora c’è
l’ira dei siti sta andando abbastanza bene ma
Ho bisogno di fare un cambiamento ed è un piccolo
il cambiamento forse influisce solo su una parte di
il sistema è un sistema molto piccolo
forse è piccolo come un paio di linee
di codice forse qualche condizione logica che ho
ha sbagliato ma comunque erano grandi
sistema monolitico come questo che piccolo
cambiare per distribuirlo che effettivamente ho
per ridistribuire l’intero sistema che è
una grande scatola quindi potrebbe essere stata veloce
per me fare il cambio assumendo che ho avuto
una buona copertura del test unitario per trovare il
problema implementare un test per risolverlo ma
l’impatto di tale implementazione è abbastanza
grande prendi una situazione diversa , facciamolo
immagina ora che il mio negozio di musica sia effettivamente un
raccolta di servizi componenti quindi I
bisogno di fare lo stesso cambiamento e forse
la dimensione del cambiamento è esattamente la
stesso
ma l’ impatto del dispiegamento di quel cambiamento
è fondamentalmente diverso ora
gli impatti e quindi il rischio
associato a tale implementazione
significativamente ridotto e se si pensa
riguardo al fondamentale è ciò che potremmo
parleremo oggi dello stesso cambiamento
ha impatti molto molto diversi in termini
di cosa succede quando lo rilasci al mio
i clienti è un altro aspetto qui come
beh, non si tratta solo di fare piccolo
cambia e rendendo queste modifiche hanno a
impatto limitato in termini di rilascio
si tratta anche di liberarci per fare
piccoli cambiamenti incrementali se voglio
apportare un grande cambiamento a un sistema cosa io
voglio provare e fare è in realtà fase
quel grande cambiamento per il sistema che lo costruisce
su più versioni la cosa bella
è ognuna di queste versioni
che faccio ogni singolo incrementale
implementazione nel mio sistema è a
punto di rollback è un grande rischio
gestione per ottenere una riduzione del rischio
strategia ora posso rilasciare un piccolo
cambia sapendo se succede qualcosa io
posso rapidamente rotolare indietro ma anch’io
raccogliere un carico di dati forse a metà strada
attraverso questo ciclo decido di no
in realtà ho bisogno della grande cosa che pensavo
necessario e se sto rilasciando queste cose
frequentemente in piccoli pezzi ottengo molto
bravo nel processo di rilascio quindi rilasciando
piccoli pezzi spesso mi aiuta a ridurre
il rischio mi aiuta a imparare informazioni su
impara a conoscere il mio sistema come
si comporta e così davvero vogliamo essere
puntando a piccole versioni incrementali
quindi cosa dobbiamo fare per il nostro design
del nostro sistema per consentire a questo di consentire
questi piccoli cambiamenti incrementali bene
prendiamo il nostro grande negozio di musica come facciamo noi
vai dalla grande scatola alle piccole scatole
Ti ho mostrato prima, immaginiamo
uno scenario qui qui ho il mio grande
negozio di musica e ho iniziato a spezzare il mio
sistema in una serie di Charles può essere
le biblioteche condivise vedono qui ho il mio
libreria di raccomandazioni
questa è la parte del sistema con a
problema perché continua a consigliare Justin
Bieber, per me probabilmente ne ho presi anche io
biblioteca creazione della fattura forse per la
libreria di terze parti che mi permette di fare
Generazione di PDF cose utili come quella
e ovviamente è un programma Java quindi io
deve avere una libreria di utilità di stringa per
fai cose utili due stringhe perché
Java non mi lascia fare cose utili due
stringhe ora ci sono alcuni vantaggi questo
approccio andando da un grande monolitico
codebase ora alle librerie condivise per a
iniziare diventa più facile ragionare
dove la funzionalità potrebbe essere nel mio
sistema quello che sto pensando che ho un
problema con il sistema di raccomandazione
è probabilmente nella libreria chiamata
vaso di raccomandazione puoi comunque sperare
um può anche abilitare in realtà abbastanza
veloce vedo che giro i cicli quindi se io
bisogno di fare un cambiamento della raccomandazione
libreria ho solo bisogno di eseguire il
test delle librerie di raccomandazione e poi
forse i test del sistema globale come
Ho integrato ma non necessariamente
eseguire tutti i test unitari per dire la fattura
creazione della libreria di utilità di stringa
quelle altre cose che mi fanno bene
quindi ora potrei essere più facile fare il
cambiare c’è un problema con questo
approccio così quando si tratta di realtà
distribuendolo così eccomi qui
versione 134 della mia biblioteca di raccomandazioni
in produzione trovo che il bug possa fare
alcuni risolvono alcune prestazioni
miglioramenti e ora voglio rilasciare
la mia biblioteca in produzione ora se sono dentro
un negozio Java per esempio questo è
libreria con collegamento statico efficace a
questo punto a meno che tu non stia solo lanciando
jar file nel tuo servlet container o
stai usando jboss nel qual caso è giusto
raccogliere casualmente un file jar comunque
a un certo punto ho quindi bisogno di andare in libertà
quello cambia in produzione così fuori va
versione 2 Devo ancora rilasciare il
tutta l’ applicazione web di quel negozio di musica
per ottenere la mia nuova condivisione la mia nuova versione mia
biblioteca in produzione e efficace
questo perché è un collegamento statico
biblioteca quindi non ho necessariamente ridotto
gli impatti del rilascio in
produzione pensiamo a un diverso
scenario
pensiamo ora alla raccomandazione
sistema come servizio separato cosa
succede quando voglio rilasciare una modifica
quel nuovo servizio tutto ciò che faccio è distribuirlo
e poi reindirizzo un link ora questo è un
cambio di configurazione del negozio di musica
sì, avrò bisogno di aver fatto un
test di integrazione prima di distribuirlo ma
in termini di impatto sul sistema in esecuzione
il mio negozio di musica potrebbe rimanere sveglio durante questo
transizione se il mio negozio di musica può stare alzato
durante il passaggio alla nuova versione
del servizio di raccomandazione che sono
riducendo il rischio sto riducendo il
impatto per i miei utenti sto riducendo l’impatto
la mia attività, ma possiamo fare altre cose
in questa situazione quando distribuisco il nuovo
versione del servizio di raccomandazione se
Posso gestirli fianco a fianco che posso fare
altre cose che potrei voler eseguire
fuma su di esso prima che io lo faccia davvero
vivo potrei voler eseguire effettivamente un
mostrare il bulbo oculare e io posso farlo
tutte queste cose mentre il resto di
il sistema sta funzionando abbastanza felicemente
lo ha implementato in un sistema di produzione ora
Non potrei farlo se stavo schierando un
nuova versione di un file jar direttamente in
una directory del contenitore servlet o
lasciare un nuovo assieme dotnet a
hot patch della libreria condivisa, quindi ho
dato a me stesso la capacità di effettivamente
gestire il rischio di implementazione e
assicurati di aver fatto il giusto
scelta se ho bisogno di eseguire il backup così
smettere di funzionare rapidamente questo è
efficacemente ciò che spesso chiamiamo Bluegreen
dispiegamenti e quindi una volta che ho finito io
reindirizzare il link e quindi posso girare
fuori dal vecchio servizio che sta per fare jess
parlare di questo più tardi questo è il
credici o no il singolo migliore
foto di jazz che ho trovato su Internet
sembra ancora più orrendo in realtà
persona che ha un libro chiamato continua
consegna parlerà di cose
in seguito sarà davvero molto buono
non so che lo scopriremo più tardi, immagino
senza pressione questo è davvero il migliore
foto di te c’è due verde blu
le implementazioni sono belle, quindi penso al mio
design di servizio Penso al nostro
gestione del rischio di tali implementazioni
in
in questo modo posso schierare il mio servizio
posso testarlo posso passare quando sono
pronto ma ci possono essere sfide è
questo significa forse dei limiti nel mio
ambiente o nello spazio del problema
significa che non posso portare Bluegreen
implementazioni in questo modo facilmente alcuni
vincoli che potresti avere nel tuo
sistemi in questo momento che potrebbero fermarlo
dall’avvenimento eccone uno divertente
i luoghi classici in cui facciamo Bluegreen
le implementazioni sono in realtà con il cliente
di fronte a siti Web, quindi ecco il mio utente che è
usando il negozio di musica in questo momento e di
Certo che sta facendo shopping sta mettendo le cose
nel suo cestino e perché come ogni bene
sviluppatore di impresa ho letto cosa
il venditore mi ha detto su come conservare
cestini piuttosto che guardare l’HTTP
specifica e quindi come risultato io sono
in realtà salvando lo stato del mio carrello
sul server delle applicazioni ovviamente
è sempre la cosa migliore che puoi
forse ora ho una situazione
avvolgitore per distribuire una nuova versione del
negozio di musica ora ho a che fare con il
fatto che una volta ho provato e fumo
testalo e assicurati che sia felice e io
voglio reindirizzare il mio utente / ora devo farlo
spostare quello stato assunto come pure in modo che sia
problematico o devo decidere di uccidere
lo stato che poi diventa un business
decisione non c’è bisogno di fare questo
il più delle volte basta usare i cookie
invece spesso le persone finiscono per usare
cluster di servlet di cluster a questo punto
che ha tutti i tipi di problemi inerenti
in termini di maggiore larghezza di banda della rete
i soldi che vanno ai venditori non è necessario
vai ai venditori quindi direi in generale
evitare i servizi di stato in cui il negozio rimane
il database penso che va bene solo
non è nello stato di memoria dell’applicazione
molto difficile da fare per passare a quello
punta su hardware costoso oh
no, non possiamo permetterci un’altra scatola da gestire
il tuo sistema in parallelo su questo è
diventando meno di una preoccupazione legittima
di quanto non fosse in passato per quelli di voi
utilizzando l’infrastruttura cloud esterna
stai parlando potenzialmente di correre
un sistema di sovrapposizione per un extra
un paio d’ore che potrebbero essere poche
dollari a seconda di quanto è grande il sistema
deve essere può ancora essere un legittimo
problema quindi come posso ridistribuire il mio
servizio di raccomandazione con e mantenere il mio
sistema funzionante limitando così l’ingresso
torna a quella distribuzione senza
richiede più hardware quindi è un’opzione
usare un interruttore manuale qui
il mio sito web in questo momento ho comprato
Le regine come donatrici lo portano in un nuovo cane
e si consiglia di comprare i freni
i freni erano una grande band che vado sempre
nel dire che le persone sono molto cattive
poi qui sto correndo dal vivo ed è tutto
andando bene ma troviamo il bug con il
servizio di raccomandazione e voglio
fare un dispiegamento ma voglio mantenere il
sito in esecuzione mentre io faccio che
spiegamento ma non riesco a tirarne fuori un altro
scatola Non ho una scatola di scorta dispiegata su
forse la dimensione del servizio è troppo grande
forse richiedono l’hardware specializzato bene
quello che possiamo fare è mettere efficacemente a
interruttore automatico attorno alla connessione
tra il negozio di musica e il
servizio di raccomandazione quando voglio
distribuire il servizio Soffio il circuito
breaker ora a questo punto ho bisogno di
degradare la qualità del servizio al
sito web di front end ora questo è qualcosa
devi comunque considerare quando
progettazione di sistemi distribuiti di cui hai bisogno
per capire cosa succede quando a
il servizio non è disponibile dipende
su così in questo esempio particolare della città
semplicemente non mostriamo il
raccomandazioni al momento ora questo
potrebbe accadere durante una normale rete
interruzione qui è una cosa utile che ho
soffiato il collegamento che ora mi consente
per distribuire la nuova versione sullo stesso
hardware come avevo prima di eseguire i miei test
una volta che sono felice, ridistribuisco il servizio
ripristina l’interruttore automatico e torna indietro
la connessione ora in misura il
il negozio di musica deve essere abbastanza consapevole di ciò
Ho interrotto questa connessione così tu hai
per considerarlo, ma se lo hai
connessioni sincrone downstream a
servizi comunque devi capire
cosa succede quando quel servizio non lo è
lì per ragioni accidentali come
qualcuno tira fuori il potere ma qui
Ho dovuto pensare molto concretamente no
solo su come un servizio parla
un altro ma anche su come l’utente
il comportamento deve essere influenzato e
influenzato da quel tipo di spiegamento Mike
cita il modello dell’interruttore in
il suo libro là è parlato di più in
di un modo di gestire a valle
implementazioni che puoi effettivamente prendere
l’interruttore manuale lo rende un
interruttore automatico mettendo
controllo sanitario su di esso così per esempio se
la connessione a valle risponde
pigramente o non ritorna rapidamente
abbastanza puoi dividerlo automaticamente
connessione quindi vale la pena leggerlo
Il libro di Mike su quell’argomento c’è
un altro approccio che è quello di rendere il
collegamento tra il tuo negozio di musica e
il servizio di raccomandazione asincrono
quindi in questa situazione sto sparando dire il
contenuto del paniere fuori raccomandazione
servizio e mi aspetto una richiesta di ritorno
al negozio di musica per dire qui è quello
la raccomandazione dovrebbe essere ora qui le cose
sono un po ‘diversi se prendo il
il servizio di raccomandazione abbassa il
il tipo di negozio di musica non lo sa
ancora buttando fuori quelle richieste
supponendo che io abbia una persistente Q seduta
lì non ha mai bisogno di sapere niente
successo ma lui ha bisogno di sapere che
non ha ancora ricevuto la risposta come
otterranno le richieste di accumulo richieste
più lento e lento e smettere di accadere e
ad un certo punto hai ancora bisogno
degradare il comportamento dell’utente e il
l’esperienza dell’utente dispiace che ci sia un
sottile differenza qui in termini di cosa
succede per l’ utente però nel
precedente iterazione abbiamo conosciuto il
la mano del server di raccomandazione che avevamo dimenticato lo sapevamo
quello era sicuramente uno stato di errore ma
con un servizio asincrono non lo è
sempre immediatamente ovvio
qualcosa non è lì e non sta andando a
capita solo di essere un po ‘lento
questi possono avere impatti piuttosto sottili
comportamento dell’utente quindi non lo farei necessariamente
suggerire di cambiare il servizio o il servizio
comunicazione per essere sincrono
puramente per consentire di rimuovere questi
servizi facilmente ci sono molti
complessità emergenti che si verificano qualsiasi
tipi di situazioni così qui dico
in attesa non so di essere in uno stretto
stato adesso so solo che è preso
più di quanto pensassi dovrebbe normalmente
ma comunque una volta ottenuto il mio nuovo servizio
schierato inizia appena a mangiare di nuovo
attraverso quei messaggi e i miei
la raccomandazione ricomincia a fluire se
hai già un servizio di cui fa parte
natura un sincrono in termini di suo
stile di comunicazione quindi forse giusto
l’uso di code persistenti ti consente di
distribuire tali servizi
abbastanza liberamente ce ne sono molti
schemi interessanti su come lavori
con le comunicazioni di un tinker nel
i modelli di integrazione aziendale prenotano così
vale la pena leggere se lo fai
roba molto ci sono altre cose
da guardare però quando si pensa
il tuo servizio design ho parlato qui
davvero su come prendi un grande sistema
rompilo in pezzi per permetterti di farlo
distribuire quei blocchi indipendentemente da
l’un l’altro ci sono numeri a venire
numero di modelli anti che possono emergere
anche se ti stai avvicinando a questi
sorta di architetture distribuite I
descriverei una coppia al primo
è uno chiamato la sciocchezza che spiegherò
che trofei più tardi Eccomi in musica
negozio web e sono appena andato alle sams
parlare ma mi sono addormentato a questo punto e
pensavo a quello che dovevo fare quando io
tornare a casa è necessario dividere il mio
sistema così la prima cosa che faccio è io
guarda la mia base di codice e vedo una cosa
chiamato il livello di repository e penso
ottimo come un posto perfetto per dividere il mio
codice di base in due servizi è già
lì ho una chiamata API quindi ora vado
il mio livello di persistenza ora è separato
servizio il problema è ora quando a
le modifiche alle funzionalità che troverai in genere
quel cambiamento ora deve essere applicato
a due servizi ricordo quello che eravamo
cercando di ottenere scindendo in
servizi che stiamo cercando di rendere veloce
per fare un cambiamento e veloce da implementare
questo cambia e riduce il rischio di ciò
cambia ora se devo fare un cambiamento
che sei stato un codice base e ora
lo stesso cambiamento deve essere applicato a
due basi di codice e ora ho bisogno di distribuire
due servizi che NON sono migliore di me
peggio e questo è molto semplice
esempio possono peggiorare quando hai
più strati l’altra cosa
succede qui però è quando si taglia
servizi in ordine orizzontale
background tecnico arbitrario
i confini tendono anche a trovarlo
la comunicazione tra questi servizi
diventa molto loquace che stai facendo
più chiamate attraverso il filo
diventa inefficiente e lento da gestire
e spesso troverai anche quello che vuoi
modificare
quelle API sono molto più di quanto vorresti
normalmente e se hai uno stack gigante
di sistemi come questo che possono ottenere
difficile ora ho fatto questo discorso di recente
ad Amburgo e fu indicato a me
che non tutti sanno cosa sia una sciocchezza
è così che è un po ‘lì che hai
strati di sorta di crema pasticcera e cose
è a fucili sono cattivi che è quello che tu
bisogno di sapere a meno che non abbiano
abbastanza brandy in loro, davvero
puntiamo di più e anche in questo caso
sei tedesco questo è come un fri nero
scatto quindi pensa che siano i corvi neri
brevetto gateau se ti è utile
eravamo più per una specie di Battenberg
cosa torta dove c’è questo è come
architettura esagonale mettiamo il tuo
intero set alto di confronto torta a
Modelli di architettura è sì, lo è
la marmellata di marzapane e albicocca è piuttosto gustosa
c’è un altro anti pan là fuori che
Vedo parecchio che è lo spider così
eccoci con il nostro sistema di ordinazione di CD
e sono altri servizi di cui ho bisogno
parlare con te per realizzare i miei compiti I
avere un sistema maschile bianco che non lo è
questi sono gli opposti del ricatto
spesso i sistemi che inviano lettere a
le persone ci permettono ancora di esistere, abbiamo un
sistema per fare il data warehousing
perché hai bisogno di un data warehouse per
memorizza i tuoi dati in altrimenti diventa
perso non ho mai visto i dati venire
fuori da un sistema di data warehouse ma è così
sicuramente devo esserci per averlo
per spedirlo da qualche parte ho bisogno di un terzo
fornitura di partito per mandarmi tutti quelli justin
bieber cds finirò per ordinare
dopo il mio errore di sistema di raccomandazione
e alcuni sistemi finanziari per essere sicuri di noi
tutti vengono pagati e cosa succede a questo
punto è scoprire qualcosa
chiamato modellizzazione del processo aziendale o
gestione del flusso di lavoro e tu pensi bene
quello che sto per fare è creare un bello
diagramma di flusso di come funziona il mio sistema e
metterò quella cisti in quel flusso
tracciare la modellazione del processo di business
da qualche parte e ovviamente lo metto in
mezzo e quindi questo ragazzo ora c’è tutto
l’orchestratore che devo fare, allora sono
andando a fare quello che ho intenzione di fare
quello e quello con cui finisci è per Dom
sistemi e un enorme intoppo nel mezzo
la classe di Dio ci aveva assistito a un suicidio
è il mio lavorato di recente e abbiamo avuto un
classe molto semplice chiamata lo scheduler
e il capanno il suo unico lavoro o due
buoni lavori ad una certa ora del giorno
è andato via tornò sei mesi dopo e
lo hanno ribattezzato il direttore il
il regista ha fatto tutto il problema
di nuovo ora voglio fare un cambiamento
probabilmente dovrò cambiare il CD
sistema di ordinazione proprio nel mezzo
perché sa tutto perché è così
un problema bene perché ora questo è il
sistema più importante in tutto questo
il servizio più importante in tutto il mio
Probabilmente ho bisogno di cambiare sistema a
molto ed è l’unica cosa che è
tutto il resto si basa su non ho
ridotto il rischio che non ce l’abbiamo fatta
più veloce per fare il cambio o uh Ian
Robinson Gli stavo parlando molto presto
sui servizi vicino a Trenton alcuni dei
il servizio era e aveva una buona definizione
ha usato che era che un servizio è un
set di funzionalità su un endpoint e
parlare con lui mi aiuta a capire cosa io
stava facendo male in precedenza quando ero
suddividere questi servizi attraverso questi
confini arbitari o avere un Dio unico
servizi seduti nel mezzo cosa fare
intendiamo per tipo di capacità invece
di capacità a un punto finale quando tu
vedere servizi e componenti che sono
ben preso in considerazione ciò che effettivamente vedi nostro
i servizi sono raggruppati intorno al
capacità che hanno senso per il tuo
dominio del tuo utente aziendale questi sono
funzionalità di messa a fuoco aziendale CD shopper
funzionalità di messa a fuoco che potrei voler aggiungere
cose per una macchina voglio controllare la mia
cestino facendo un ultima versione è
cercando ascoltando queste anteprime
non sono cose intorno a un’entità o a
distinzione tecnica arbitraria questi
sono cose che nessuno in compagnia
lavorando su quel pezzo di software sia
loro un tecnologo o un non tecnologo
dovrebbe capire e quando inizi
identificando queste capacità come loro
esistono nel tuo sistema puoi solo iniziare
raggruppandoli insieme in qualche modo
cosa stai facendo con il principale dato
progetta e crea concorsi limitati e
quando ne hai raccolti abbastanza
insieme iniziano a diventare efficaci
i confini per i tuoi servizi
la ragione è fantastica perché è tua
la comunicazione diventa quindi focalizzata
attorno a ciò che stai cercando di ottenere
con il tuo software
non diventa arbitrario okay
trova per ID no, sto verificando che lo sono
effettuare un ordine rimuovendo qualcosa per
il mio carrello diventa quindi il vantaggio
che bene cosa facciamo quando usciremo
una caratteristica del cambiamento che vogliamo dare
il cliente in questo caso qualche acquisto
CD che cambierà il modo in cui
I CD vengono acquistati e questo è molto
più probabile ora che cambia molto di più
probabilmente ora limitato a uno o due
di questi servizi non si propagano
attraverso l’intero sistema, spesso quando
fare questi esercizi con i clienti lo farà
quasi fai se ti ricordi da
Università quando parliamo
programmazione orientata agli oggetti abbiamo fatto il
esercizio di carte crc dove tutti sono arrivati
fingere di essere un oggetto lo abbiamo fatto molto
con entusiasmo per un tutorial quindi
non l’ho mai più fatto per quello che effettivamente faccio
servizi di ruolo è l’esercizio
okay, quindi voglio raggiungere questo compito così
come farò ad esultare così bene, prima di tutto
vado da te e poi te ne vai
per andare a fare questo e poi stai andando
per andare e fare ciò che si inizia a scoprire
problemi nel tuo design molto molto
rapidamente ho avuto ostacoli e ho ottenuto
le dipendenze circolari sono cose eccessive
confuso e loquace non ti serve
qualcuno molto tecnico per farlo se
hai corretto questi limiti
è un ottimo modo per mantenere il tuo
occhio e sto prendendo in considerazione questi correttamente
quindi pensa davvero a modellare il tuo
servizi basati sul tuo dominio e su I
direi che le tue capacità di dominio così
operazioni operazioni di alto livello piuttosto
di entità un altro problema reale
anche se ti stai distruggendo
servizi è come questi servizi parlano
l’un l’altro pensiamo ancora un po ‘
scenari quindi eccomi con la mia musica
acquista ora con un sistema di raccomandazione
Apporto una modifica interna al
sistema di raccomandazione forse un piccolo
cambio forse aggiungo qualche logging
dichiarazioni internamente l’interfaccia ha
non cambiata radicalmente finché io
non ho cambiato la semantica di quello
interfaccia sto bene al negozio di musica
continua come prima, forse ora
aggiungi alcune nuove chiamate API ma la vecchia API
chiamate che potrei fare attraverso il filo rimanere
lo stesso questo è ora un cambiamento di espansione
ancora
Non è necessario ridistribuire il mio negozio di musica
il negozio di musica continua è molto
felice di cosa abbiamo a che fare sono
rottura dell’interfaccia cambia questi sono
o fondamentalmente diverse API o
comportamento semantico molto molto diverso di
una chiamata esistente che è sempre cattiva
questo è un problema perché di nuovo se io
vuole limitare l’impatto di un cambiamento e
Continuo a rompere le API ai servizi remoti
su improvvisamente iniziando ad aumentare il
dimensione e il rischio delle mie spiegazioni come
possiamo gestire bene il cambiamento dell’API il primo
cosa è se hai intenzione di introdurre un
rompere il cambiamento non è considerato
introducendo il cambiamento di rottura che è
sempre buono ma considera anche di avere due
punti finali quindi immaginiamo che sto rotolando
fuori una nuova applicazione iphone e it
ha bisogno di comunicare in un bel
modo diverso e in realtà abbiamo guardato
alla vecchia versione un endpoint ed è
diventando abbastanza furbo e non lo siamo
sono davvero molto contento , quindi siamo venuti
con un bel fatto molto meglio
più facile per supportare API che noi così cosa
posso fare bene appena stendere il nuovo
endpoint ma li fanno correre di fianco
lato ora posso rilasciare il mio iphone
applicazione sul nuovo endpoint che autorizzo
altri consumatori del vecchio endpoint a
continuare com’erano prima di acquistarli
tempo quindi se ho 2 3 4 5 10 consumatori
non sono influenzati da questo cambiamento così
ora ho tempo per parlare con quelle squadre o
pianifica che cambiano quando fanno il loro
la prossima uscita e poi hanno vinto così tanto
pronti possiamo reindirizzare quel cambiamento così
questa è una cosa che possiamo considerare di fare
per limitare l’impatto delle modifiche all’interfaccia
ci sono altre cose che possono andare molto
male male però quando il tuo tacchino
parlando attraverso un confine di servizio questo
è un classico che ho fatto circa cinque
volte prima ho capito che era una cattiva idea
ai servizi ora naturalmente lo sono
comunicando ne sto prendendo un po ‘in memoria
stato dell’oggetto Sto creando un serializzato
forma di quello stato oggetto e io sono
mandandolo sopra il filo e l’altro
bravo ragazzo, lo deve deserializzare
ora ogni buon sviluppatore che è stato
sollevato su non ripetere te stesso è
immediatamente visto
Re il nostro riutilizzo del codice e quello che fanno è
creano una libreria che creano
libreria che può prendere in memoria
lo stato dell’oggetto lo serializza e lo deserializza
di nuovo nello stesso stato dell’oggetto perché
ciò significa meno codice che poi utilizzano
stessa libreria condivisa su due servizi così
qui sono a servizio degli oggetti le tue bugie
e inviato oltre il filo fantastico e
poi vado a rilasciare una nuova versione di
il codice della libreria condivisa e ho fatto quando ho
distribuire la prossima versione di servizio a possibile
Posso ancora mandare roba sul filo, forse
forse non un sistema che ho visto hanno avuto
un comportamento abbastanza diffuso condiviso
libreria che rappresenta il loro dominio
oggetti che sono stati condivisi su quattro
servizi che non potevano affidabilmente
garantire che possano deserializzare oggetti
quando aveva versioni diverse
libreria condivisa è stato peggio perché
quelli come quegli oggetti erano seduti dentro
caselle di messaggio in tutto il sistema così
quando avevano bisogno di rilasciare un servizio
che aveva bisogno di una nuova versione condivisa
libreria che dovevano sincronizzare
distribuzioni che condividono la libreria
intero sistema deve prendere tutto il
i servizi verso il basso dovevano poi avere un
lavoro che ha riscritto tutti i messaggi
questo sul bus dei messaggi e li metti
di nuovo così veramente condiviso
protocolli di serializzazione quindi cose simili
Il legame saggezza di serializzazione Java può essere
piuttosto brutto in queste cose come lo è Jack
ci sono alcune serializzazioni binarie
protocolli che ti danno un po ‘più di spazio
per manovrare cose come crota buffs e
parsimonia tuttavia non risolvono veramente
tutti i problemi qui e tipicamente te
vedere le persone che non cambiano mai il loro binario
protocolli di serializzazione perché sono
troppo spaventato dall’impatto davvero
la cosa che dobbiamo abbracciare qui è
qualcosa è stato dettagliato in RFC 761 che
è uno dei primi tcp / ip rs ed è
qualcosa che è stato chiamato postelles
la legge è solo prudente in quello che fai
e sii liberale in ciò che ti aspetti bene
cosa vuol dire cosa significa se io
ricevi qualcosa e devo reagire
ad esso non si trova l’intero messaggio
e come ho bisogno di tutto il messaggio ora con
serializzazione binaria
Sono un po ‘forzato in quello che devo
spacchettare tutto e se le cose non lo sono
lì che mi aspetto ma non uso cado
oltre se ho bisogno di tre campi da un molto
il grande carico utile del sapone non si lega al
intero schema perché quello giusto
aumenta la superficie di me
rotto da qualcosa la nostra migliore pratica
consiglio quando si consumano i servizi di sapone
XPath non utilizzare un raccoglitore Wizzle per estrarlo
i piccoli pezzi di cui hai bisogno e poi se
qualcuno cambia parti di quello schema a
al di fuori delle cose che ti interessano
non noteremo nemmeno spesso quando stiamo facendo
servizi condivisi che in realtà non faremo
riutilizzo del codice attraverso quei servizi che può
spesso sono significativamente meglio pochi
copiare e incollare il codice tra i servizi
e riutilizzarli e accidentalmente ottenere
te stesso in una situazione in cui distribuire
una modifica devi ridistribuire il
tutto questo sistema può essere molto
controintuitivo per gli sviluppatori ma
credimi l’alternativa è lontana
peggio ancora un altro modo in cui puoi pensare
Intendo dire che ho parlato di cose
puoi fare per evitare di rompere i cambiamenti
ci sono modi in cui puoi capirlo
prima di entrare in produzione e il
la risposta è sì e guidata dal consumatore
contratti o un ottimo modo di
evitarlo con il consumatore guidato
i contratti qui è un negozio di musica
consumando il servizio di raccomandazione
ha un’aspettativa sulla qualità di
servizio per quel set per quello a valle
servizio che si aspetta quando lo faccio
tipo di richiesta ottengo una risposta
sembra così ora quando sei
progettare questi confini del servizio
stai avendo quella conversazione forse
all’interno della tua squadra potrebbe essere in tutto il team
ma spesso quella banda che diventa un’API
e questa è spesso la fine del
conversazione e se io in realtà
ha codificato le nostre aspettative in merito
servizio come un test vedere il negozio di musica dire
ecco cosa ci aspettiamo che il vostro servizio
fare quando faccio questo test poi ottiene
gestito dal servizio di raccomandazione in
la loro build così ogni volta che
il servizio di raccomandazione apporta un cambiamento
escono bene guardiamo il nostro
i contratti dei consumatori li eseguiamo se noi
rompere loro come abbiamo rotto loro posto grande
beh, potremmo aver cambiato la nostra API di cui abbiamo bisogno
andare a parlare con le persone che sono
consumandoci o dobbiamo cambiare cosa
noi abbiamo
questo è un grande avvertimento che consente
il servizio di raccomandazione da mantenere
cambiando continua a cambiare, continua a cambiare
sapendo di avere quella rete di sicurezza dentro
posto che una volta entrati in produzione
hanno fatto tutto quello che possono fare
verificare che non si rompano a vicenda
cambia puoi essere più coraggioso che in
rilasciando il cambiamento in produzione
purtroppo ho parlato di tutto il
cose facili finora che non ho parlato
molto è il database il vero problema
abbiamo come qualcuno di voi potrebbe sapere chi ha
stato alle grandi piste di dati è quel dato
è davvero fantastico ed è soprattutto
sembra essere un volume come uno
gigabyte è decisamente meglio di uno
mega da un terabyte è migliore del
gigabyte un petabyte è fantastico, lo sono
in realtà non vedo l’ora di
L’archiviazione dei dati di Hadron Collider parla più tardi
sul volume chiaramente è la cosa che noi
mettere da parte le piccole preoccupazioni come come noi
potrebbe usare quei dati o usarli per guidare
decisioni aziendali perché è pazzesco
parlare ma i dati sono molto molto interessanti
il problema è che i database sono intrinsecamente
cose cattive e sono cattive in
contesto di rendere le cose facili da cambiare
ecco un vero questo è probabilmente il
servizio distribuito più comune
anti-pattern vediamo le mani più in basso
comune e anche il più distruttivo in
termini per facilitare l’applicazione delle modifiche
al tuo sistema il mio negozio di musica a parlare
alcuni schemi di database sono rack Oracle
Ho un sacco di soldi dalla vendita
quei cd justin bieber e io tiro fuori
il servizio di raccomandazione perché
questa è la cosa importante, ma io
continuare a parlare allo stesso schema
roba davvero standard perché è il problema
bene se voglio cambiare il negozio di musica
ora e forse voglio cambiare il
progettazione dello schema per supportare un cambiamento
negozio di musica posso fare quel tipo di forza
non so che non so per forza cosa
il servizio di raccomandazione sta facendo il mio
schema Sto andando a rompere la
servizio di raccomandazione
non so allo stesso modo se entrambi questi
i servizi stanno scrivendo sulle stesse tabelle
ma hanno una logica di business che è
diverso come faccio a sapere che ho intenzione di
soddisfare le mie modifiche ai dati in modo coerente
tipo di moda non so a questo punto
hai bisogno di trattare quasi il tuo database
schema come servizio separato con un enorme
API indefinita che è il seguito di quello
punta a iniziare a capire quanto è grave questo
vorrei davvero difendere se lo sei
in questa situazione hai due scelte
o inizi a provare a separarti
lo schema del tuo database o unisci il
servizi indietro perché questo è peggio
significativamente peggio per noi perché cosa
è che stiamo cercando di limitare il
impatto di un cambiamento ed essere in grado di
rilasciare in modo efficace ed efficiente
ora non posso apportare modifiche senza saperlo
a proposito dello strappo influisce su ciò che vogliamo
i nostri schemi separati il negozio di musica
voglio parlare del servizio di raccomandazione
passa dal limite dell’API del servizio
in genere questo non richiederà più
hardware solo uno schema separato
separarli non è sempre facile ma
può essere fatto ed è significativo
meglio così ogni servizio dovrebbe possedere il suo
i propri dati in genere si pensa in termini di
entità di proprietà di servizi e
avere il controllo dell’intero ciclo di vita
di quei servizi perché è così grande o
non faremmo molti cambiamenti interessanti
per rendere i nostri servizi migliori andiamo
immagina ora che ho deciso che il mio
servizio di raccomandazione davvero molto
davvero bisogno di muoversi per reagire perché io
Ho visto Preston parlarne l’anno scorso
e il pensiero di reagire è cool che ho avuto modo di
distribuisci i miei dati in tutto il mondo ma
ora posso liberarmi ora sono libero di fare
questo cambia perché finché la mia API a
non cambia e la semantica di quello
Le API non cambiano Non sono interessato
Crescent in realtà ha delineato un bel
approccio a come gestiscono il
transizione per il sistema di cartelle cliniche
dal mio sequel per reagire come merita
dimorando qui, quindi qui sono necessario
rotta di rilascio per reagire ma non lo so
trasformalo in una grande banca
Non so all’improvviso va bene, lo ero adesso
il mio sequel e ora sto reagendo così invece
la prima uscita che duello giusto scrivo
i miei dati in entrambi i posti che sto ancora leggendo
per la mia gestione del database relazionale
sistema perché sto scrivendo a questo punto
Sto scrivendo gioielli a questo punto perché
Voglio tornare indietro, ricorda che siamo
cercando di fare piccoli incrementi
rilasci con rischio ridotto che voglio
per ripristinare rapidamente questo cambiamento
punto se agiamo collassare in un mucchio il
versione precedente posso tornare indietro e io
può ancora avere tutti i miei dati che ho avuto
prima di assumere reagire regge
operativamente sta ridimensionando tutto
altrimenti posso leggere da adesso
leggere da reagire sto ancora scrivendo però
alla mia gestione del database relazionale
sistema di nuovo ho bisogno di un punto di rollback e
solo quando sono pronto, quindi ho davvero bisogno
per rimuovere quel sistema è una specie di a
variazione su ciò che viene spesso chiamato buio
lanciando infatti te ne ho allevato a
sottosistema senza nessuno davvero
rendendola conto di averlo usato in
sfondo e qualcuno già lo fa
rilasciare efficacemente quella caratteristica al
i clienti la cosa interessante qui è
è che per il punto di vista il
il cliente potrebbe non avere alcun impatto
cambiare ma potrebbe essere abbastanza grande
cambiamento di scala che ho fatto senza nessuno
realizzando davvero cosa sta succedendo
può succedere per i servizi che io esco
con una nuova versione del mio
sistema di raccomandazione questo è scritto
recinzione quindi sarà ovviamente
meglio e più veloce e sicuramente
Non suggerirei mai di prendere i cd justin bieber
ci piacciono cinque linee di codice
rispetto a circa ventimila linee
di studioso nel servizio di raccomandazione
ma qui sono così, faccio il mio cambiamento e
di nuovo potrei farlo con i servizi
le raccomandazioni forse li ho mandati a
entrambi i servizi in produzione ma forse
Sto solo guardando le risposte da
il servizio di raccomandazione che posso fare
certo che non è che non mi sto sballando
tassi di errore che potrei effettivamente avere
qualcuno guarda un log delle risposte
e vedere se queste cose sembrano sensate dentro
un ambiente di produzione e poi quando sono
pronto posso ritirare la raccomandazione
servizio
quindi abbiamo parlato di alcune cose in questo
sessione Sono nel tempo in cui ho parlato
hai digiunato abbiamo parlato di decomposizione
il nostro sistema in piccole unità e così facendo
abbiamo pensato di modellare il dominio
abbiamo parlato di come tu quando lo fai
che come si ottengono le interfacce
il tuo sistema e abbiamo parlato di un numero
di modelli in cui abbiamo separato il
distribuzione di qualcosa dal rilascio
per i nostri clienti bluegreen
distribuzioni distribuite rispetto a quelle rilasciate a
caratteristica abbiamo parlato di lancio scuro
ci sono molte ragioni per cui potresti
voglio andare verso il componente basato
sistemi che vanno da dire guadagno di azioni da
belle strutture del pacchetto al modulo
strutture a servizi distribuiti
questa è una progressione abbastanza ragionevole
rompere il nostro sistema in componenti
diventa più facile ragionare se noi
prendilo alla conclusione logica
diventa facile per noi quindi sostituire
quei sistemi senza influenzare il
salute generale del nostro intero servizio
ci sono molte ragioni per cui potremmo
voglio seguire quella strada che potrei volere
dividere queste cose per motivi di squadra
per le prestazioni per la scalabilità per
tecnologia ma alla fine dobbiamo essere
pensando anche a quanto sia facile
per noi effettivamente rilasciare il nostro sistema I
usato per guardare attraverso il malato a proprio agio
elenca l’ingegneria del software
L’Istituto c’è sempre stato
manutenibilità ero solito pensarlo
la manutenibilità riguardava il codice
la qualità del TDD è forse funzionale
test ma la manutenibilità non ha senso
nel rendere facile per me fare che
cambiare se non penso a come è
che posso fare quel cambiamento in a
impostazione di produzione e tutto ciò che penso
è necessario prendere in considerazione ciò che faccio
ho bisogno di fare come sarebbe se potessi
essere rilasciato questa funzione ora cosa sarebbe
capita anche al mio sistema generale
ha delineato quegli approcci che fanno
senso se è necessario mantenere il tempo
alcuni di voi potrebbero non avere questo tipo
di sfide
ma ciononostante stiamo assistendo a un movimento
lontano da grandi sistemi monolitici a
piccoli servizi che parlano insieme
microservizi questo è molto più fattibile
di quanto non fosse perché abbiamo cloud
fornitori che ci permettono di fornire
scatole abbastanza grandi per i nostri servizi
abbiamo l’ automazione dell’infrastruttura
tecnologia che ci permette di portarli
servizi su e giù e stiamo ottenendo un
molto più esperienza sul perché il nostro PC è
cattivo e perché il riposo è buono e tutti quelli
tipi di cose quindi questo è stato un
tour whistle-stop attraverso alcuni esempi
di come puoi cambiare le tue architetture
i tuoi progetti dei tuoi sistemi al fine di
rendi più facile il rilascio
componenti ma non è esaustivo il
la cosa fondamentale è solo applicare cosciente
il pensiero è la capacità di liberare il tuo
software spesso importante per te e
se ci pensi molto di più quando
tu prendi le tue decisioni, io sono un po ‘
un po ‘in ritardo quindi ho tempo per
domande sicure che la domanda era quando
integrando i servizi insieme potrei
o fai molte chiamate su tutto il
servizi o potrei avere un negozio di musica
servizio che estrae questi servizi
insieme per presentare qualcosa al
utente e la domanda era quale sarebbe il mio
Preferisco essere io penso quando stai andando
a una pagina web come utente di quella pagina web
devono essere ospitati da qualche parte
sarà sempre un punto di integrazione
per un utente semplice che affronta il sito Web
la domanda è davvero su quanto spesso o
sottile che l’esperienza potrebbe essere e
c’è un equilibrio tra la creazione di un
esperienza utente avvincente contro di te
conoscere il comportamento in decomposizione nel
sistemi quindi penserei che il servizio a
la parte superiore deve essere estremamente sottile, forse
tutto ciò che sta facendo e se è possibile che tu lo faccia
servirà di nuovo HTML e javascript
e CSS così potrebbe essere il negozio di musica
responsabile della comune oh the
esperienza utente coerente e quindi il
le chiamate arrivano direttamente dal
client indietro quei sistemi finali che potrebbero
non essere praticabile anche se dipende dal numero
dei servizi che hai coinvolto e tu
potrebbe essere necessario fare un po ‘sul lato server
aggregazione prima di restituirla a
il cliente che ho sperimentato cercando
in realtà servendo interi frammenti di
tu io dalla differenza
servizi e rimontare quelli del
il problema torna appena a come si fa
mantenere un aspetto coerente e sentire se
pensi di limitare l’impatto di a
cambia se rilascio una modifica che ha a
tipo di utente fondamentalmente diverso
sperimentare l’impatto dell’utente è
abbastanza sconvolgente quindi probabilmente per un semplice
sito web o cliente standard
sito web che vuoi qualcosa ma dovrebbe
essere molto penso che siamo abbastanza magri e possibile
solo essere qualcosa che lo prende
prende che si trova su quel dominio e
assemblato sul lato client se tu
servire il contenuto che viene da
i tuoi servizi con intestazioni cache decenti
hai la possibilità di farlo
aggregazione nel client o aggregazione
nel server è possibile utilizzare il proxy inverso
cdns per mitigare i rischi di quelli
le cose quindi il commento è stato che hai
ho un sacco di sapone in corso su un sacco di
schemi per il passaggio dei messaggi
tra i sistemi e si sta cercando di
allontanati da tutto ciò che hai
visto che altrove se intendi muoverti
a schemi più leggeri intendo quando
progettare quello di cui sto parlando è andato bene
un servizio parla con un altro servizio noi
basta modellarlo in un modo molto leggero
sulla base del business stesso in modo che
dovrebbe essere il carico utile che dovresti essere in grado
per mostrare che il carico utile a un utente aziendale
e dovrebbero capire cosa sia
è quasi il protocollo di serializzazione
XML è che Jason non è quasi il tipo di
punto ma la cosa fondamentale è la nostra vera
leggero e certamente devo ancora
vedere ogni beneficio che la saggezza ci ha dato
diverso dalla capacità di molto rapidamente
generare un’API programmatica che quindi
non sarà in grado di parlare con un altro
API programmatica generata dallo stesso
saggezza mi sono divertito molto a farlo con
parlando con British Telecom per esempio
dovevamo scoprire il punto esatto
rilascio dell’asse Apache che dovevano fare
la nostra versione di accesso Apache genera un
API che consentirebbe loro di parlare
l’un l’altro quindi sì stiamo vedendo le persone
allontanandosi da quel tipo vincolante a
una specie di accenditore più informale
la cosa fondamentale è se sono umani
leggibile è probabilmente molto facile per loro
per te scrivere codice che può consumare
loro e se sono basati su come
anche la tua azienda opera
andando a cambiare probabilmente peserà meno di
potrebbero se fossero solo un
messaggio tecnico arbitrario che sei
mandare avanti perché agli sviluppatori piace
shift f6 vedendo cose in IntelliJ per no
motivo apparente diverso da quello che preferiscono
il nome di qualcos’altro che non tendono
per farlo con i concetti di business in modo che il
domanda c’era come lei riuscì
cambiando nel database quindi ne ho due
versioni del servizio e ho
distribuito la nuova versione del servizio
e ha ancora bisogno di parlare con il tuo
database e forse quella versione del
il servizio richiede una modifica al programmatore
come gestirò quelle cose?
a fianco se è necessario mantenere il
sistema per essere in un upstate che potrebbe essere necessario
per eliminare la distribuzione del tuo schema
cambia così ad esempio potresti fare un
espandi il tipo di contratto, quindi forse
la prima cosa che devi fare è applicare
una modifica dello schema che aggiunge il nuovo
colonne di tabelle dei campi del database che ti servono
punto 1 passaggio 2 sarebbe distribuire il
versione dell’applicazione che utilizza
quei nuovi dati e poi una volta che hai fatto
che in seguito potresti applicare il secondo o
terzo cambiamento che rimuove il vecchio
strutture in modo da poterlo espandere
database si finisce per dover smantellare
si inserisce in tre versioni molti dei
organizzazioni che praticano abbastanza
cicli di rilascio frequenti pensando al
Esitano i loro guizzi del mondo loro
potrebbe essere il rilascio di modifiche del servizio a
servizi componenti più volte del giorno
non stanno facendo la stessa cosa per
le modifiche al database quando tali database
sono condivisi la cosa fondamentale è che diventa
significativamente più problematico se
stanno parlando diversi tipi di servizi
allo stesso database se è possibile segmentare
questo e ho dei servizi che possiedo
database almeno si dimagrisce
complessità a quando si ha uno schema
cambia qui ma uno schema cambia qui
non ha bisogno di influenzare un servizio finito
qui ma potrebbe essere necessario smistarlo
Bisogna pensare molto attentamente a come
fai modifiche al database e non c’è
modo intorno a quello soprattutto per quelli
sistemi in cui si trova lo schema
anche il database lo sosterrei
questo problema non va via
i cosiddetti archivi dati di schema lyst data
come Mongo hai uno schema è
solo uno schema implicito nel tuo
codice dell’applicazione che si sta scegliendo
nominare un campo una certa cosa e se
hai due versioni di server
stai chiamando quelli che pensano quei server
quei campi cose diverse che hai
lo stesso tipo di problema in corso siamo a
tempo bene grazie mille io sarò
tutto il giorno, se ne hai
domande e le diapositive e il video lo faranno
essere presto grazie
Please follow and like us: