Press "Enter" to skip to content

GOTO 2018 • Dino Apps Deserve Love Too! • Michael Irwin


[Musica]
Sono super entusiasta di essere qui per essere
rappresentato Virginia Tech e da condividere
alcune delle cose che abbiamo fatto
con contenitori e cosa non sono
scivolerò al mio discorso di marca così
quindi voglio iniziare con un po ‘
di una storia va bene così circa sei mesi fa
Ero seduto su un pannello di interviste per
un candidato che stavamo cercando
riempire una posizione sul nostro team e dove
spiega al candidato il nostro
stack di applicazioni e come stavano usando
contenitori e dev e pre frode e
frode e praticamente ovunque
stiamo usando i contenitori e più tardi quando noi
dato che gli ha dato la possibilità di chiedere
domande che l’unica domanda che lui
ci ha chiesto che lui ci ha chiesto di essere tu
menzionato che stai usando la finestra mobile lo fa
significa che hai un sacco di servizi micro
e per me ero proprio come no no
non e e mi ha confermato qualcosa
che ho sentito molte volte quello Dockers
stato parlando di se stesso su micro
servizi e che i contenitori non lo sono
solo per i micro servizi infatti il dr. caravanserraglio
L’UE e Copenhagen l’anno scorso Dockers nuovo
L’amministratore delegato Steve Singh ha detto che le applicazioni legacy meritano
amore – va bene che tutte queste applicazioni
che abbiamo corso che siamo stati
continuare così bene nei nostri sistemi
dobbiamo dare loro attenzione per e
possono meritare che meritano e hanno bisogno
i vantaggi della containerizzazione che arrivano
insieme a esso va bene
quindi ora solo per puro caso okay
nessun pre-programma in anticipo o qualsiasi cosa fossi
al dott. Khan EU va bene e io ne avevo due
Dino gonfiabile si adatta bene e quindi io
cercavo i motivi per usarli io
Stavo solo lavorando con ABI fuller e noi
stavano cospirando prima di AWS e lo eravamo
cercando di capire come usarli
dinastie
sai forse potremmo bloccare il discorso
o due o qualcosa del genere con loro
o sai fare qualcosa di pazzo e e
così, quando abbiamo risolto questa citazione, abbiamo detto
sai che è così
qualcosa che possiamo usare
okay, e se facessimo andarcene?
piccoli segni di protesta e abbiamo cancellato
applicazioni legacy e siamo alle app Dino
merita la sinistra per modernizzare la tua dinamite
avere un hashtag approfondito
Selphie su di esso solo per divertimento e corriamo
la sala riunioni va bene e questo è esattamente
quello che abbiamo fatto qui è un sacco di selfie
che ne abbiamo ricavato ed è stato fantastico
e naturalmente non potevo adattarli tutti
qui vediamo un paio di persone da
docker infatti Brett Fisher che sta per
stai parlando dopo è giù sul fondo
lasciato gridare a Brett
quindi sai che ci siamo divertiti, okay
questi questi tipi di app bene loro
hanno bisogno l’attenzione che meritano l’amore –
okay, quindi come sto definendo le app Dino qui
va bene così per gli scopi di questo discorso
e e come li stiamo trattando a
La Virginia Tech comunque lo definirò a
dino app come qualsiasi applicazione che non lo è
sotto lo sviluppo attivo corrente va bene così
per esempio a Virginia Tech abbiamo
centinaia probabilmente anche migliaia di
queste app che sono state scritte dagli studenti
sono scritti da professori che sono
serve un po ‘di valore per l’azienda, ma
le persone che hanno scritto il software
ci sono buone possibilità che non siano qui
più
sono stati mantenuti sono su un
macchina e non lo farai tutti
tocca quella macchina e diventa in a
situazione come questa e di cosa hai bisogno a
architetto molto attento e qualcuno
che è addestrato a lavorare intorno al
applicazione perché non vogliamo
rompere l’app ok e abbiamo molto
di questi in effetti stavo chiacchierando con a
direttore per un dipartimento straniero e lui
stava dicendo che tu sai che è stato
incaricato di capire quali applicazioni
stanno correndo e sono nella loro
dipartimento e lui è come se non avessi idea
ok, ho parlato con un paio di persone e io
ho scoperto che c’è un a c’è
macchina da scrivania e armadio di qualcuno
è in esecuzione questa applicazione ed è
sono solo alla continua ricerca di questi
le cose vanno bene e sì sì so di riconoscere
è stato un problema con il modo in cui lo gestiamo
le nostre applicazioni ma è carina
coerente nello spazio eded quando
noi semplicemente diamo a tutti la rete
accesso e possono collegare il
scatola per quello e posso lanciare la mia app su di esso
ok, quindi abbiamo un sacco di queste app Dino
e scommetterei nel tuo tuo
organizzazione nelle vostre imprese e
le tue aziende, qualunque cosa tu abbia molto
di questo tipo di app, quindi facciamolo
parla di quale valore possiamo ottenere
da containerizzare Il contenitore izing
queste applicazioni, ma allora cosa possiamo fare
fare con loro una volta che sono containerizzati
ok, ecco come ho intenzione di dividerlo
parla bene prima di tutto
e poi parlerò del perché
quali enormi benefici ne ricaviamo
dopo va bene solo l’ eccitazione rapida I
desidera utilizzare memi nei miei colloqui in qualsiasi momento
che il mio capo mi ha chiesto un feedback
il suo mazzo di diapositive è sempre lì ha bisogno
essere più meme e deve esserci
più gif in esso va bene si dico gif
in ogni modo
quindi come e perché va bene così la migrazione
viaggio
okay, stiamo praticamente descrivendo a
processo in quattro passaggi qui per containerizzare
la nostra applicazione va bene per prima cosa vogliamo
per essere in grado di costruire l’applicazione ora questo
il passaggio può o non può applicarsi a tutti
applicazioni ne parleremo qui
in un secondo vogliamo essere in grado di dirlo
in una conduttura in modo che possiamo eseguirli
passi ogni volta che spingo codice che spingo
aggiornamenti al repository
Voglio essere in grado di costruire l’intero
runtime per la mia applicazione va bene e poi
Voglio essere in grado di testare l’app e
allora inizieremo a vedere alcuni dei
la vera magia che accompagna
contenitori okay e lo faremo
tutto senza incatenare una singola riga di
codice nell’app stessa ancora l’app
stesso è stato scritto da uno sviluppatore che è
non più qui quindi cosa possiamo fare
intorno l’applicazione per per ottenere questi
i benefici vanno bene così prima alcuni prereq vanno bene
per fare questo la tua domanda
deve avere un modo per configurarlo
va bene così ha bisogno che se ci vuole
file di configurazione o variabili di ambiente o
qualunque cosa sia ci deve essere un po ‘
modo per configurare la tua applicazione per
ambienti diversi va bene
ovviamente probabilmente non dovresti guardare
non dovresti mai non cuocere il tuo
i segreti nelle immagini del contenitore vanno bene
ci sono modi per rendere i tuoi segreti
disponibili le immagini del contenitore che non sono
andando davvero a parlare troppo di questo
ma ne vale la pena perché vale la pena
tutto parla di sé lì sì
e una cosa voglio menzionarti
questi quattro passaggi che sono altamente quali
ci rivedremo in una coppia che faremo
vedere più e più volte ciascuno di questi
i passaggi dovrebbero essere considerati grandi
pietre miliari okay in cui se si ottiene solo
uno dei quattro passi che è un
successo che ora è qualcosa che tu
non potevi fare prima ma ora tu
può andare bene e quindi si spera si
superare tutti e quattro i passaggi ma se tu
non superare tutte e quattro le cose che dovresti
considera ancora ogni passaggio del successo, okay
quindi per quello gli scopi di questo discorso
In realtà ho creato una semplice app Dino a
applicazioni legacy effettivamente scritte in
primavera a
che è antico e fa male scrivere
tutti gli sviluppatori primaverili qui vanno bene
ci sono due mani Wow, va bene
non per me ma comunque è vecchio
applicazione utilizzando fondamentalmente framework
che erano attuali circa sette dieci anni
fa ok, ora ce ne sono di migliori
ancora una volta ho voluto un’applicazione legacy qui e la mia
piccola app web semplice e vedremo
qualcosa un po ‘di più del
architettura su di esso in un po ‘
è un chomp economico, okay, così va
insieme alla cosa Dino è la
posti economici per masticare o mangiare nel campus
okay sì
papà scherzo inteso ma va bene così
con questa applicazione gli amministratori possono
accedi e dì oh, posso gestire i miei dati
centri posso mettere o il mio appuntamento il mio pranzo
centri e gestire le specialità del giorno
modulo okay piuttosto semplice di nuovo ci tufferemo
in più nell’architettura in pochi
i minuti vanno bene così il primo passo voglio essere
in grado di costruire la mia app va bene così l’obiettivo
per questo voglio essere in grado di farlo
leggere in modo affidabile e riproducibile in grado
per costruire la mia domanda va bene questo si applica
è praticamente per la maggior parte solo se
hai un’applicazione che richiede
la compilazione va bene così a Virginia Tech più
delle nostre applicazioni di livello enterprise
tutto in Java, quindi ovviamente abbiamo bisogno di
compilare il codice Java va bene così
le domande che dobbiamo chiedere sono quali
strumenti sono usiamo e quale versione del
JDK un motivo per cui stiamo usando noi stessi
usando Gradle o formica o qualunque cosa
strumenti stiamo usando per farlo davvero
compilando okay sappiamo quali versioni
ha funzionato per ultimo quando abbiamo distribuito il
applicazione nostre dipendenze appuntato
versioni specifiche ora questo è uno che io
essere morso con un bel po ‘se sto facendo
un app nodo okay forse non ho bloccato il
le dipendenze nella mia app nodo e ora
sai scaricare un aggiornamento e
tutto si rompe perché per alcuni
gli sviluppatori di JavaScript di ragione hanno davvero
non ho idea di cosa Cimber in realtà significhi così
assicurati che le tue dipendenze siano
bloccato bene e alcuni suggerimenti ok e
vedremo questo qui anche in un secondo per
questo userò il docker per comporre
fai in modo che sia facile lanciare okay
la mia build e ottenere l’ output ottiene il
artefatto nella mia ricostruzione sul mio ospite
certo che potrei usare un’immagine docker
costruisci e fai tutto all’interno di un’immagine
ma poi come estraggo l’artefatto
fuori da quello
e fare qualcosa con esso così vedremo
che qui in un secondo va bene un altro
cose da ripetere ancora siamo un Java
negozio usiamo Maven un bel po ‘ e con
Maven hai repository sul locale
disco quindi voglio renderlo disponibile a
la mia immagine quindi non devo riscaricarmi
quelle dipendenze ogni volta e lo faremo
vedi che anche qui in un secondo così
costruiamo questo fuori ok
quindi qui va bene ho il mio docker
la build composta è abbastanza grande per
tutti o non hanno bisogno di ingrandirsi
ok bene, quindi ho una finestra mobile
componi il file è piuttosto semplice qui e
per questo esempio sto usando l’immagine
subito fuori dall’hub docker quindi sono giusto
usando l’immagine ufficiale di Maven che sto usando
Maven 3 5 era una versione che era
noto per funzionare per la mia applicazione sono
usando JDK 7 perché ancora una volta lo sappiamo
ha funzionato con 7 non sappiamo circa 8 9
o ancora 10, ma userò JDK 7
ok ora quello che sto facendo è che sto montando
il mio codice sorgente in quel contenitore così
quando si avvia ha il
applicazione e poi ho intenzione di mio
comando Sto solo eseguendo un’installazione di Maven
ok ora di nuovo sicuro che posso farlo sul mio
host posso farlo direttamente sul mio
macchina posso installare Maven ma ora da
usando il contenitore ora non devo
installa qualsiasi cosa nella mia macchina
ok io non devo capire come
scambia tra le versioni di mave e come farlo
Ho il giusto JDK tutto ciò che è
ora tutto sta accadendo in un contenitore ok
Ho anche montato il mio repository Maven proprio così
che non devo riscaricarli
artefatti ogni volta quindi farò il mio
il dottore compone e io farò solo un
così quelli di voi che sanno qualcosa
sul programma Java, intendo che lo farai
sappi che di solito c’è un bersaglio
directory qui che ha l’output
sembra che sto schiacciando il cavo HDMI
ok e quindi quello che farò è che andrò avanti
e gestisci le zuppe
quello è
okay, quindi eseguiremo la build
qui e vedremo che sta iniziando
I miei esperti costruiscono dentro un contenitore che vediamo
una mia directory di destinazione è appena stata creata
qui e ancora poiché questo è un semplice
applicazione non ci vuole troppo
non ci vorrà troppo tempo per costruire
ha successo apro il bersaglio
directory e c’è il mio file di guerra mio
uscita del mio java il mio java costruito lì
ora di nuovo posso fare tutto questo sul mio
macchina ma ora sto facendo qualsiasi contenitore
è riproducibile e posso farlo
e oltre posso condividere questo con qualcuno
altro e possono usare questo file di finestra mobile
e spendi tutto senza averlo
per installare qualsiasi cosa sulla loro macchina
ok va bene quindi andiamo avanti così andiamo
mettere in una pipeline okay quindi i vantaggi
di mettere in una tubazione o sono io ottengo
build automatizzati ogni volta che spingo gli aggiornamenti
alla mia domanda quindi se ho preso questo
docker componi il file ora e costruisco a
pipeline con esso ogni volta che spingo il
codice in teoria sta creando la mia guerra
file in questo contenitore va bene e così io
potrebbe estrarre quel file di guerra, forse lo sono
non ancora pronto per costruire davvero il pieno
immagini docker ma ora posso solo
scarica il file di guerra dal tuo artefatto
repo qualunque cosa sia e e ora io
può distribuirlo usando qualunque manuale
processi che stavo usando prima d’ora così uno
delle cose che ti ho detto lì
ecco un paio di consigli qui che usi
pipeline come codice quando possibile provare
non configurare tutto nel
sistema di condutture quindi per quello che intendo
ad esempio versioni precedenti di Jenkins I
dovrebbe accedere a Jenkins e io
configurare la build e tutto
all’interno di Jenkins con le versioni più recenti di
Jenkins puoi usare un file Jenkins a nostra disposizione
Virginia Tech usa git lab. Ho un cancello
lab CIT file che è nel mio repository
in sostanza si vuole avere una sorta di
file di testo una descrizione dichiarativa
che definisce qui è ciò che la tua build
sembra per la tua applicazione e it
dovrebbe essere la versione con il tuo codice okay
di nuovo usa tutti gli strumenti disponibili
a te se hai già un laboratorio fantastico
usalo lo adoriamo è fantastico se
sei già un negozio Jenkins usarlo
non importa, usa qualsiasi cosa tu
avere e renderlo meglio ok ora così giusto
a causa del tempo non sto andando davvero
costruire la pipeline mostra tutto questo
roba gentile perché di nuovo quello sta diventando
davvero specifico di come facciamo le cose ma
Ti mostrerò solo una volta in laboratorio
Ho costruito una pipeline che ho spinto
innesca la mia build e quindi in questo caso
io
gli stati compilati e così ora lo è
andando a fare il passo di compilazione che io
ti ho appena mostrato ragazzi e così il conto
quello che ho appena fatto ora sta succedendo a tutti
volta invio aggiornamenti al mio repository
ricostruirà il mio file di guerra e ora io
può far sì che sia di nuovo riprodotto
quello che sta succedendo ogni volta va bene così
se non lo hai già fatto
ok, allora passo 3 ora che effettivamente
sono in grado di costruire l’app e compilarla
up facciamo effettivamente fare il resto del
tempo di esecuzione ok
quindi gli obiettivi qui devono essere in grado di
produrre un documento che contiene
tutto ciò di cui la mia applicazione ha bisogno
corri così che baseremo fondamentalmente su
il primo passo e ora dargli il resto
del tempo di esecuzione va bene così alcune cose
a pensare a ciò che è stata l’ultima nota
stato che ha funzionato per questa applicazione
va bene
quindi di nuovo questa è un’app di dyno che ha funzionato
in una versione antica di Tomcat ok è
non che nulla per il bene saremo
utilizzando Tomcat 7 e quindi quali versioni di
il server ho bisogno di usare cosa
dipendenze è necessario
pensa a tutte queste cose diverse
e onestamente il modo più semplice per farlo
è dire hey sysadmin
Sono una finta che tu crearai un
nuova macchina per me quali sono i passaggi
che devi fare per configurare una macchina
ok quali cose hai bisogno di installare
quali dipendenze aggiungi a questo
server che cosa sono fondamentalmente ciò di cui hai bisogno
per configurare questa app ok e prendiamo
queste cose e capire come
effettivamente fare un file di finestra mobile fuori di esso ok
quindi una volta che posso costruire il runtime ok
ora ho un’immagine che posso effettivamente eseguire
la mia domanda va bene così costruendo il
runtime ora se salgo al mio file docker
qui ora sto facendo un po ‘ ok ho un
come si chiama costruzione a più stadi
molte persone hanno sentito parlare di multistadio
costruisce prima ok quindi c’è
un bel paio di mani fantastiche
Sono un grande fan di loro, ok loro loro
Riduci drasticamente il tuo file finale
dimensione dell’immagine e ti dà solo un sacco
immagine migliore immagine molto più sicura così
fallo completamente così quello che vedremo qui è
che il primo stadio mi dispiace che sia
sfarfallio un pò il primo stadio
qui ho un maven 3 5 JDK 7 che
potresti riconoscere era la stessa immagine
che io li uso la prima finestra mobile
componi il file quindi ora sto praticamente prendendo
quell’immagine o quel passo e ora sono
in un file medico e questo è davvero il mio
primo stadio va bene così sto copiando sul mio
codice sorgente eseguo la mia installazione di Maven e
allora quello che sto facendo è che lo sono
effettivamente esplodendo il file di guerra
automaticamente qui, quindi lo vedremo
in un secondo quando copio i manufatti
è già la versione esplosa I
non c’è bisogno di esplodere ho poi va bene
questo stava facendo solo un altro stadio
perché volevo un altro i bene palco
sto creando un altro stadio che sto usando
Alpine e quello che in fondo sto facendo è
Sto solo arricciando tutto l’altro
dipendenze che il mio server Tomcat potrebbe
ho bisogno e fondamentalmente lo sto solo mettendo
un’altra directory questa directory di jars
e di nuovo questo è solo tutto l’altro
dipendenze che sono la mia applicazione
avrò bisogno di essere ok, quindi perché?
multi in diverse fasi quindi quindi nel mio
fase finale, dico che ho già
questa immagine di base è Tomcat con Kaz
Parlerò di ciò che Casas qui in a
secondo
Tomcat 7 o 85 Jerry 7 ok e ora lo sono
copiare i manufatti dall’altro
passi e ora portali in questo nuovo
immagine quindi tutti i vasi che ho scaricato come
le dipendenze in questo stadio sono ora in corso
copiato nell’immagine finale in questo
passo qui così se decido che ho bisogno di sei
o sette file jar, quindi aggiungo
più dichiarazioni arricciate qui e tirare quelli
nella ragione lo faccio come un multi-stage
costruire perché tecnicamente l’add
comando che in un file medico può recuperare
risorse remote il motivo per cui lo faccio
è così è più veloce costruire cache come
beh per la pubblicità che deve ancora recuperare
il file e scoprire è cambiato in
per scoprirlo posso ancora usare il
strato di cache o no in questo caso non lo faccio
devo recuperare il file per controllare il file
le differenze quindi è solo una build più veloce
okay, faccio un piccolo pezzo di pulito
nel mio Tomcat e poi copio in
il file di guerra di Explorer dall’altra
app ok quindi ora tiriamo questo a
un po ‘di docker boon che costruirò
a buon mercato Chomp Chomp cat sette Jerry sette
e questo dovrebbe andare abbastanza veloce, okay
quello è andato molto velocemente perché io
costruito questa mattina e quindi è tutto
in cache va bene e poi una volta che devi
siediti qui in attesa di nuovo, appena faticando
il tuo pollice aspetta che tutto funzioni
quindi sei il benvenuto okay
quindi ora a questo punto ho un’immagine
che ha il mio file di guerra che abbiamo costruito per a
passaggio 1 e ora ho un server Tomcat
che ha già esploso il file di guerra
e pronto ad andare così in teoria io
dovrebbe essere in grado di far girare questo
applicazione va bene, parliamo un po ‘
un po ‘di più sull’applicazione ok prima
Lo faccio bene
il passo 4 qui sta testando l’app ok cosa
vogliamo fare qui , vogliamo essere in grado
scrivere test per testare effettivamente il mio
applicazione completamente end-to-end tutto bene
e perché ho un contenitore che posso fare
Posso fare cose che non potrei fare
in anticipo tutto bene così quando io quando
scrivi e nei test qui ok dato che questo è
una app web userò selenio o a
quadro in cima a Suleiman per il
esempi qui sto usando webdriver punto IO
è un framework basato su nodi e quindi lo sono
scriverò test che in realtà
avviare i browser ed eseguire e
fondamentalmente testare l’ applicazione in Bend
tutto bene ora per il tuo team tu
ovviamente voglio usare lo strumento giusto
quadri o qualsiasi altra cosa
funziona per il tuo team se sei un nodo
negozio usa i nuovi strumenti se il tuo negozio Java
le viste utilizzano gli strumenti Java ma ciò che è bello
di questo sto per scrivere il codice di test
che finirà per portarne un altro
contenitore e quindi non devo essere legato
allo stesso linguaggio e strutture come
l’app stessa ok, ancora una volta se sei un
negozio nodo scrivi il tuo test e il nodo grande
anche se è un’app Java che è esattamente
questa configurazione qui non importa okay
puoi scegliere il tuo linguaggio dell’orecchio il tuo
struttura
ok quali servizi esterni fanno la tua app
la tua app deve dipendere da te
avere immagini per quelli pure sì
perché se lo fai puoi farlo davvero
roba davvero interessante , ad esempio il beffeggiamento
dati così alla Virginia Tech molti dei nostri
le applicazioni questo è abbastanza coerente
attraverso più alto e probabilmente molti
le imprese hanno qualcosa che sembra
simile a questo
ok, quindi abbiamo un’applicazione web che ha un
dipendenza da ciò che chiamiamo nostro
Direttore aziendale è fondamentalmente il
LDAP che ha qui tutte le persone
ecco tutte le iscrizioni ai gruppi è
tutti i dati su persone e gruppi per
campus ok e quindi lo usiamo per
autorizzazione ok sei in realtà
autorizzato a gestire questo centro da pranzo
perché il tuo record personale è in questo
gruppo ok
anche noi questa app usa un database per il suo
proprio negozio locale abbiamo anche un servizio
chiamato il centrale
Il servizio Kayson chiamato Cavs è
praticamente solo un single sign-on va bene così
se avessi dei contenitori per ognuno di questi
dipendenze diverse per la mia impresa
directory per il mio database sequel
che potrebbe vedere se posso usare solo il
immagine pubblica e se avessi un cast di simulazione
server cosa posso fare con quello va bene
quindi pre-docker va bene per testare pieno
end-to-end eravamo limitati a qualsiasi cosa
il team che gestiva la directory ci ha dato
okay , sono come se avessimo un pre
istanza prod, ma in realtà è loro
l’istanza di pre prod non è quella che dovrei usare
per il mio pre prod test perché non lo faccio
avere la capacità di andare in quello
directory e dire hey voglio fare
queste persone finte vanno bene e quindi non c’è
modo per manipolare davvero i dati o
rendere i dati falsi okay, quindi possiamo usarli
qualunque cosa ci diano, che in questo caso
il server pre prod è solo una produzione
istantanea che si è rotolata indietro così tanto
questo significa che questi dati reali dobbiamo
proteggimi che non voglio mettere solo il mio
credenziali nell’applicazione hai fatto
test end to end okay, quindi come facciamo?
autenticarlo se non riesco a mettere il mio
Prudential in là come lo facciamo
completamente automatizzato e una pipeline di costruzione come
facciamo questo e così la risposta sta a
questo punto bene abbiamo solo il primo voto
beh, semplicemente non lo facciamo e questo è quello
la maggior parte delle squadre del campus hanno deciso
bene questo è troppo difficile, quindi fanculo
okay, il secondo è bene, noi
assumere un gruppo di studenti stagisti e dire
loro di fare bene
ora funziona solo inserendo virgolette ma
chiunque abbia mai fatto test manuali
Ho visto diversi sorrisetti sapere che è così
Duro ok ed è monotono ed è
noioso e spesso vado bene
sapere che questo pezzo del codice che
cambiato è stato per questo pezzo di
applicazione che è fin qui, quindi sono
salteremo un paio di test
qui perché e quello non è cambiato
giusto ma questo è esattamente dove la cosa
è andato tutto bene così sai che abbiamo avuto questo
capita molte volte ok e se siamo su
cicli di rilascio più veloci bene come facciamo noi
tenerli motivati a continuare a fare i test ok
e quindi un’altra cosa che possiamo fare è che possiamo
aggiungi strati di astrazione per dire bene
invece di voi in realtà persone da
tirando le persone dalla directory che faremo
basta usare un database locale persone
rappresentazione è ciò che ha fatto la mia squadra
per un po ‘ ma è ancora adesso che abbiamo
per mantenere questo codice di base diverso
tazioni di persone ed è così comunque
ma il grande vantaggio che ne abbiamo ricavato
chi ha usato in questa astrazione è ora
abbiamo un tipo di dati fittizi di un locale
database ma cosa succede se non abbiamo nemmeno
per farlo, quindi prova con la finestra mobile ora
va bene così se avessi contenitori per ciascuno di
questi pezzi diversi se avessi il
directory aziendale in un contenitore che
Mi gira e mi dà il mio schema LDAP
è solo vuoto ok e se ho il mio
database che di nuovo è vuoto forse io
popolarlo con il mio schema dell’applicazione
o l’app lo fa all’avvio qualunque
e se ho il mio cast server in a
contenitore per quelli di voi da sapere
tutto tranne Kaz è solo un protocollo quindi io
può davvero realizzare qualsiasi modo in cui voglio
se ho questo allora potrei
in teoria lanciare un proxy inverso
davanti a quello e dì bene qualsiasi cosa
va a lanciare quello interno andrà a come
ti aspetteresti l’ app Cavs qualsiasi cosa
va all’app che a sua volta andrà a
la mia domanda va bene così ora
stiamo iniziando a costruire qualcosa qui
ma cosa succede se andiamo oltre questo un po ‘
un po ‘di più okay, cosa succede se ho anche spin up
un altro paio di contenitori in cui io
ho un contenitore che è il mio selenio
driver con Chrome e così il selenio quello
l’organizzazione in realtà fornisce questi
contenitori e in questo driver di selenio
contenitore c’è in realtà un Chrome
browser installato ed è in esecuzione il
API driver selenio in modo che
in teoria se parlo con quell’API è
sta per lanciare il browser Chrome è
intenzione di eseguire test che sta per fare
roba sì sì, se io uso quel contenitore
e poi scrivo il mio codice di prova e io
Eseguilo in un altro contenitore ora che ho
un sacco di contenitori okay ma questo test
codice okay può parlare con l’API del selenio
che poi avvia il browser Chrome
e fondamentalmente interagisce con il mio
applicazione attraverso il proxy inverso
va bene
questo suona abbastanza bello, non va bene?
ora cosa c’è di pulito su questo sono io
può buttare tutto questo in una finestra mobile singola
componi il file okay e se lo avessi su a
dottore e componi il file allora cosa posso fare
fallo bene, quindi componi docker ha a
bandiera abbastanza poco conosciuta su di esso che io
penso sia semplicemente fantastico, ed è così
codice di uscita da ok cosa fa questo flag
è guardare un singolo servizio un singolo
contenitore nel medico comporre
impila e guarda quel servizio una volta
quel contenitore smette di rovinare il
resto della pila
va bene e qualunque sia il codice di uscita da
quel contenitore era fondamentalmente bolle
quello su e quello diventa il codice di uscita
per il mio comando docker comporre okay così
per esempio se faccio girare tutto questo
stack e imposto il codice di uscita da questo
contenitore qui una volta che i codici di prova è
fatto e quel contenitore si ferma se lo ha
un codice di uscita zero che significa tutto
passato tutto bene una volta che esce lacrime
giù tutti gli altri contenitori e poi
il mio dottore composto diventa questo
il codice di uscita è qui, quindi fai un passo avanti
inoltre se prendo questo comando e ora
mettilo in una pipeline di costruzione se i miei test
passare il mio conto passa se i miei test falliscono il mio
la compilazione fallisce ok e di nuovo la fila
tutto quando ne ha bisogno e strappa tutto
giù una volta che è fatto bene , okay così
basta parlare, vediamo davvero che succede
Va bene va bene quindi ho una finestra mobile
componi il file di test e non lo farò
andare troppo in questo perché di nuovo questo
diventa veramente specifico per l’applicazione ma
Ho il mio reverse proxy che ho il
cat server Ho preso l’app stessa che ho ricevuto
sequel database Ho ottenuto il LDAP dove sono
sto scherzando sto montando i miei file LD su
popola la mia directory LDAP. Avvio il
contenitore di selenio e poi ho il mio
Il design guidato dal comportamento BDD è il mio
codice di prova reale va bene così basta parlare
mostriamolo
[Musica]
così vedrai che sta costruendo il mio
contenitori li sta iniziando e ora
vedrai un sacco di risultati quindi, se tu
guarda fino in fondo a te
che non hanno molta familiarità con dock e
perché vedrai il servizio su quel registro
l’output proviene da così questi sono da
il server CAD inizieremo a vedere un sacco
di rumore da lì è l’ app di test BVD
effettivamente iniziando lì l’app
il contenitore del selenio vedrà molto
le cose stanno andando bene e vedrai
che ha funzionato in questo caso è appena stato pubblicato
prova tutti i test superano i segni di spunta
ho ottenuto un codice di uscita pari a zero lì e se
Una volta che questo finisce bene il mio codice di uscita
dalla finestra mobile compose anche zero come
ok, va bene, va bene, chiunque
impressionato finora va bene c’è un paio
suggerimenti ti ringrazio ok così va bene ora che cosa
Ti mostrerò tra un minuto per te
c’è qualcos’altro che è davvero
fresco sul contenitore di selenio così
tieni duro su un secondo che c’è
qualcos’altro che è davvero
fantastico su questo contenitore va bene così
di nuovo con questo con un solo dr.
comando di composizione, ho fatto girare tutto
filata la mia applicazione ho fatto pieno in
test end-to-end utilizzando un vero LDAP reale
Direttore di impresa che usa un vero lanciatore
Non sto prendendo in giro qualcosa che sono solo
prendendo in giro i dati che sono in quelli
cose ma sta parlando al reale
servizi ok e ora questo mi permette di fare
cose che erano tradizionalmente
impossibile da fare solo perché abbiamo
contenitori per tutti questi diversi
le cose vanno bene così ricapitolando il nostro viaggio fino a
questo punto siamo stati in grado di costruire il
app siamo stati in grado di mettere una pipeline
abbiamo costruito il runtime stesso e ora
siamo stati in grado di testare l’app e
ancora una volta non abbiamo cambiato una sola riga
di codice nella stessa app ok ora questo
sembra abbastanza bello ok ma si, si perchè
è che tutto importa ok ora ovviamente
dovrebbe importare a voi che ora abbiamo
codice di prova in cui non avevamo prima
ok ma c’è qualcosa di ancora più grande
che viene fuori da questo, perché questo
diventa come so che foto di formaggio ma questo
diventa una fondazione ok una fondazione
in realtà ne faccio davvero veramente fantastici
cose ok così per esempio questa app Dino
che io che ho modernizzato qui ok ho
preso che l’ ho containerizzato e
Virginia Tech siamo dr. Clienti EE così
abbiamo accesso al dottore di fiducia
registro così
prendi la mia immagine Posso spingerla al
Registro di fiducia del medico e quindi può
fare una scansione di sicurezza su di esso e così quando io
spingere questa applicazione su di esso la sicurezza
scansione ha detto che avevo 26 critici
le vulnerabilità vanno bene così
probabilmente non preferito ok ma cosa c’è
anche questo è bello
containerizzato So di avere 26 critici
vulnerabilità dove prima quando ero
Sto correndo su qualche scatola in un armadio
forse non avevo idea di quello che era
il caso va bene così ora sto iniziando a prendere
un po ‘di visibilità nei miei
le applicazioni vanno bene
quindi di nuovo questo non è il preferito ma
quindi cosa possiamo farci ora che è così
un contenitore va bene, quindi quello che posso fare è io
può iniziare a fare esperimenti con il mio
contenitore perché di nuovo ho avuto questo
piattaforma di test okay potrei dire bene
hey fammi provare rifondare la mia domanda
fammi cambiare il mio file di docker così invece
di usare Tomcat 7
fammi provare a usare Tomcat 8 e vedere se è così
corregge qualsiasi mia vulnerabilità ok così
tutto quello che devo fare di nuovo è cambiarlo
da nel mio file docker e lo farà
ribatte che prenderà il mio file di guerra
e ora sono appena messo in una nuova base
immagine ok
quindi l’obiettivo qui è essere in grado di
migrare e cambiare le cose
ok forse ho intenzione di migrare dal tempo
gatto 7 a Tomcat 8 forse sto andando anche io
per dire che cercherò di migrare da JRE
7 a Jerry 8 o 9 o 10 ok, posso fare
questo tipo di esperimenti ora dove
prima era praticamente impossibile da fare
e tutto ciò che dovevo fare è cambiarlo da dentro
un file di docker ok assumendo che quelli
altre immagini già costruite tutto ok
può essere cambiato ok e ancora come che tipo
ha senso cambiare solo una cosa in
un tempo ok, quindi se qualcosa ti spezza
sapere ok cosa ha rotto e cosa potrebbe
devi guardare ok e lo farei
ti incoraggio molto a farlo come te
rendere queste modifiche minime se presenti
modifiche al test end-to-end ok così io
dovrebbe essere in grado di apportare queste modifiche a
la mia domanda e non devo testare il mio
il mio codice del selenio va bene se devi
cambia il tuo codice di selenio che potrebbe
diventare compromesso e sei come ora
testare le vostre prove di nuovo si sta scrivendo a
effettuare prove passano a quel punto non
necessario testare la funzionalità di
la tua domanda quindi fai attenzione
quello va bene
quindi proviamo a farlo così solo per
calci ho fatto un ramo solo per farlo
più veloce va bene e se guardiamo il mio
dockerfile ora tutto ciò che ho fatto è stato modificare il file
l’app Janelle Tomcat con Casa invece
di usare Tomcat 7 Ora sto usando Tomcat 8
okay, quindi posso fare il dott. Bill amico economico
Tomcat 8 Jerry 7 ok e ancora una volta ho costruito
questa mattina quindi va super veloce
ma ora ho un’immagine che ora è basata
su Tomcat 8 ok quindi lasciami provare a eseguire il mio
prova di nuovo ok e ancora bene mentre questo
sta correndo qui, salterò di nuovo a questo
fai scorrere bene, quindi questa applicazione è giusta
pensala come una scatola se la spostassi da
Tomcat 7 e Tomcat 8, va bene
cambiando questa app ma tutto il resto
intorno è lo stesso, quindi il mio
i test saranno in grado di dirmi se questo
era sicuro o no, ok, quindi vediamo
che correndo ora ne mostrerò uno
bella cosa qui in un secondo
in realtà non lo farò per il
l’ultima demo lo rende ancora più divertente ok
va bene e così solo per dimostrare che questo
non era fumo e specchi perché tutti
tempo faccio una demo nel campus c’è il
vecchie barbe grigie sono come si
solo un po ‘di quello che stai facendo
questo sto solo scrivendo questo
come si può davvero script console
output come quello intendo dire che è quello
sarebbe piuttosto impressionante se tu potessi
quindi troverò Tomcat 8 in questo modo
il primo è quello che è il cast server
era in realtà Tomcat 8 ma ora noi
effettivamente vedere l’app stessa è davvero
in esecuzione su Tomcat 8 ok così è stato davvero
testando ciò a cui l’ avrei proclamato
sta mostrando ok ora ok così dal mio test
passare se si torna indietro dal mio test
passare so che la mia domanda può ora
eseguire in sicurezza l’ applicazione Tomcat 8
server dove prima ho fatto di nuovo quello
che era ossa nella sporcizia che
tutti avevano paura di lavorare con e da
basta cambiare il da e un file di finestra mobile
l’avorio ha basato la mia applicazione su una nuova
stack e ora posso fare qualcosa che io
non poteva fare prima di andar bene, quindi
continuiamo così l’ho spinto e
okay, il mio maggiore è caduto, ma ho ancora
26 vulnerabilità critiche ok merda
va bene quindi non è stato di grande aiuto
questo riguardo in realtà quando l’ho fatto
questo un paio di settimane fa per qualche motivo
passando da Tomcat 7 di Tomcat 8 a quello
rebase in realtà ha aggiunto un altro punto critico
vulnerabilità, sono proprio come non lo è
come questo dovrebbe funzionare ok così a
Almeno non ho peggiorato le cose, ok
Ho fatto un po ‘ di miglioramento
ma di nuovo quello che posso fare è usare questo come un
piattaforma per sperimentare e provare ok così
questo particolare Tomcat 8 Jerry 7 era
costruito per essere usato in una base debian ok, quindi cosa?
se ora facessi un altro esperimento e detto
così mi permetta di provare utilizzando la base che è
forse su Alpine ok vedo ancora una volta faccio
ridurre le mie vulnerabilità ed è a
una base più sicura per rendere nuovamente cambiato il mio
da e dockerfile eseguire il mio test sapere se
Funziona
spingerlo fino eseguire la scansione e ora sono fino a 5
vulnerabilità critiche va bene così è
drammaticamente ridotto il numero di
vulnerabilità di nuovo solo da
sperimentare e provare perché ho
una fondazione ok ora se guardo a questi
vulnerabilità critiche uno dei
le cose che noterò è la mia app stessa
sta fornendo uno di quelli
vulnerabilità ok in modo che il cosa il
lo screenshot è mostrato qui
questa è la copia di parole dove è
copiare tutto il file di guerra esploso
nell’immagine finale va bene così
hash pazzo lungo che è solo l’hash di
il file viene copiato lì e quindi è così
dicendo le palpebre tag che file JAR
la dipendenza ha ora una vulnerabilità di
Certo che ho bisogno di guardare il
la vulnerabilità per scoprire che va bene lo è
qualcosa che le persone possono effettivamente sfruttare
possono fare qualsiasi cosa con ok ma questo
questa dipendenza è attratta dal
Spring Framework e io di nuovo no
voglio toccare l’app stessa ora
non voglio provare a modernizzare il
quadro sto cercando di vedere quanto io
può fare solo con il contenitore okay così
le mie opzioni hanno risolto questo sono bene ehi
riscrivi questa app nella primavera tre quattro
cinque tutto okay o forse posso aumentare
il bar per renderlo un po ‘più difficile
anche se qualcuno è stato in grado di scendere a compromessi
questa applicazione va bene così ancora una volta questo è
un altro esperimento che posso provare qui bene
quindi una delle cose che siamo stati
provare a Virginia Tech è usare il
tanto la modalità di sola lettura nei contenitori
possibile di quante persone hanno sentito parlare
la modalità di sola lettura va bene è come
quattro mani okay
fantastico, quindi ti insegno a sbrigarti così
quando un contenitore si avvia ricordare che
il file system dell’immagine c’è a
sistema di file unione che viene creato e
l’immagine stessa è di sola lettura ok e
il contenitore stesso ha il suo
livello scrivibile okay con quello di sola lettura
strato scrivibile è il filesystem di root
di sola lettura in modo non è possibile apportare modifiche al
il file system di quel contenitore va bene
che è piuttosto potente ma allo stesso tempo
ora è come se ne avessi un po ‘
applicazioni che stanno scrivendo file di registro
se il filesystem di root è di sola lettura come
funziona bene e quindi è qui
il secondo punto elenco arriva così
posizioni che devono ancora scrivere file
usare temp FS va bene e quindi i file sono un
file system in memoria lì e una volta il
il contenitore ferma il boom che ovviamente il
la memoria va via e tutti quei file
quei cambiamenti sono andati bene ora così
caveat con noi okay usando la sola lettura
non è un non risolverà tutti i tuoi
problemi okay di nuovo questo è solo un altro
esperienza sto alzando il bar che sono
provare di nuovo le cose nuove di nuovo
rende il filesystem
di quel contenitore di sola lettura ma se il tuo
il contenitore sta parlando con altri contenitori
per esempio bene il database
il database probabilmente non è di sola lettura e
probabilmente non vuoi
leggere solo il tipo di database almeno se
si sta effettivamente voglia di scrivere dati in esso
tipo di va contro quello che volevi
sia così l’applicazione della
vulnerabilità è necessario guardarle
e scoprire K è questa vulnerabilità
mi ha aperto per sequel iniezioni o
discariche di dati o l’esposizione che tipo di
roba okay
quindi se quelle vulnerabilità sono in gioco
read-only non ti aiuterà
per il contenitore dell’applicazione va bene e
ancora una volta questo non è pensato per catturare tutto ma
sta alzando il livello anche se qualcuno
potrebbe fare l’esecuzione di codice remoto loro
non è possibile installare pacchetti che non possono fare
qualsiasi cosa perché il file system è
sola lettura quindi è almeno l’aumento del
bar e di nuovo questa era un’app legacy
stava correndo su una vecchia macchina e ora
lo stiamo eseguendo in una root di sola lettura
filesystem tu lo sai che lo è
fantastico ok e ancora se lo si desidera
continuare ad alzare l’asticella che consiglierei
guardi un contadino e fai comp e
tutte queste altre cose o semplicemente aggiornare
il tuo apt e rimuovere le vulnerabilità
fai bene, ma ancora una volta prendi tutto questo
cose e metterlo insieme e ora tu
perché hai un buon quadro per
lavorare con OK quindi ne farò un’ultima
demo qui che continuo a ricevere
i comandi più scuri mescolati tutto il tempo lo fanno
va tutto il tempo bene, quindi controlla il mio
il ramo di sola lettura va bene e quindi ho un
file di sola lettura per comporre qui cosa sono
sì okay in cui aggiungo la sola lettura
bandiera per dire ok questa applicazione è
andando a correre e di sola lettura e questi sono
le directory che voglio permettere
i file da scrivere in esso sta per
creare monti di tempesta per quelli ok e
cosa farò un po ‘
diversamente questa volta va bene quando corro
questo codice è una delle cose che non ho fatto
menzione è il contenitore di selenio che
Sto usando è il selenio Chrome o sì
assicurati di aver capito bene la versione standalone
contenitore di debug di Chrome okay e ha un
ha un server VNC in esso okay in esecuzione
il che significa che posso già fare pipì e
Posso davvero vederlo fare il test okay
quindi proviamo , quindi salterò
da queste parti ecco che è la mia famiglia chiave
okay sì, ho tre ragazze con il
quarta ragazza in arrivo
ed è fantastico, ok, quindi a questo punto
avere una condivisione dello schermo sono nella mia
contenitore e sto vedendo tutto
quello che sta succedendo adesso c’è
non sta succedendo nulla perché non è successo
ha lanciato il browser ma in realtà lo faremo
vederlo iniziare a eseguire questi test qui in
solo un secondo va bene quindi c’è il Chrome
il browser si avvia e lo vediamo giusto
sfogliando le pagine farà il log
attraverso il mio Mac il mio mock cast server
gestisce i miei contenitori tutti i miei test
una volta che i test sono fatti il ​​contenitore
se ne va, quindi mi darà un boom
sta cercando di dire hey riconnettersi perché
Ho perso la connessione che il contenitore è morto
okay, questo è davvero super utile
oggetti Lascio questo quando sto cercando di
scrivi le mie cose per nuotare così posso vedere cosa c’è
in realtà puoi davvero farlo
cose interessanti come impostare il tuo selenio
server per prendere se un test fallisce il possibile
prendere uno screenshot e scaricarlo sul tuo
la tua macchina in modo da poter effettivamente vedere
cosa ha fallito o che stato è stato
dello schermo in quel momento
ci sono cose interessanti che puoi fare
okay, allora torniamo qui, okay, amico mio
esegue di nuovo il test in modalità di sola lettura my
il test è ancora passato ora, quindi ho il
giusta combinazione di temp FS e
di nuovo questo quando ero
sperimentare con questo non lo sapevo
che temp FS montano i punti che mi servivano così io
direi tutto bene vedo un errore
dice hey sto provando a scrivere i log
fantastico lasciatemi fare un FS per la temperatura
directory ok ora questa è la famiglia va bene
guarda e io uso ancora questo come un
sperimentare per cercare di capire cosa fare
Devo fare quali opzioni ho bisogno
essere in grado di supportare questa funzione che voglio
e ancora perché avevo questa base
sperimentare e una volta ho capito bene
bene allora il test passa un bel andare I
in teoria è possibile eseguire questa app che era
scritto dieci anni fa in una scatola in a
guardaroba
Posso eseguirlo in un contenitore ed è ora
e la modalità di sola lettura va bene così in modo definitivo
cosa voglio menzionare di nuovo da allora
siamo dr. Clienti EE a cui abbiamo accesso
a UCP che è il controllo universale
aereo che mi permette di vedere cosa c’è
correre dove e mi dà visibilità
dove prima era ok c’era una scatola
in un armadio che nessuno sapeva ora io
avere una singola dashboard che mi dice
qui nel mio tutti i miei contenitori in esecuzione
attraverso il mio cluster ora ovviamente il nostro
Ufficio sicurezza è felice di questo bene
questa è una delle cose che sono più
felice per il fatto che ora abbiamo finalmente
visibilità di ciò che sta finendo lì
quindi per riassumere modernizzando la nostra app Dinah
da containerizzati nel nostro processo di costruzione
messo in cantiere per la costruzione containerize in
l’intero runtime ora e l’edificio
test che ci danno una base da fare
esperimenti che provano nuovi tempi di esecuzione
aggiornare singoli pacchetti di singola dipendenza
esegui la nostra app e la modalità di sola lettura
ora abbiamo la piena visibilità che ci offre
questo dove era assolutamente impossibile
in anticipo e con quello oh sì e noi
fallo senza vederlo cambiando a
singola riga di codice e così con quella I
grazie e ti ricordo di valutare il
Sessione bene, abbiamo due minuti
lasciato per domande e abbiamo davvero
grande domanda che è arrivata attraverso il
app in modo che tu abbia dimostrato utilizzando il tuo Mac
e usando Linux per quanto riguarda questi
tecniche se stai usando Windows come
funziona bene?
quindi Windows sono contenitori su Windows sì
puoi farlo ora ovviamente ci sono avvertimenti
e tutto questo tipo di cose per te e
Devo ammettere che non sono un contenitore di Windows
esperto quindi potrei non sapere tutto il
ha sostenuto interesse che dettagli profondi e
tutte quelle cose ma tutte le demo che io
mostrato qui è possibile eseguire su un Windows
macchina così è quasi dire che è
un po ‘ingiusto perché puoi eseguire Linux
contenitori su Windows ma non è possibile eseguire
Contenitori Windows su Linux così sì
tutte queste cose funzionerebbero ancora
esegui questi demo e inizia a girare
questi contenitori su cose che puoi
fallo ora se sei un negozio Microsoft completo
ovviamente avrai bisogno di capire okay
quali sono le pile di applicazioni sei tu
correndo puoi farlo anche tu non puoi farlo
gooeys basati su Windows, ad esempio, ma tu
può fare applicazioni dotnet e basate sul web
applicazioni che costano fino a così è
possibile solo potrebbe essere più lavoro ma
è ancora possibile
ma quale versione del selenio è una
bella domanda um vediamo se questo sono io
Metterò qui
Stavo solo usando quello che probabilmente è
qualunque sia l’ultima versione è fuori
hub finestra mobile ma sì che possiamo parlare di
anche questo, ma sì, di nuovo con il the
il test potrebbe essere al di fuori
applicazione fondamentalmente il proprio ordinamento app
puoi usare l’ultimo massimo o
qualunque cosa – o se hai già un
selenio o un centro di slam dentro il tuo
organizzazione a cui puoi connetterti o
o fare qualsiasi cosa da lì – qualsiasi cosa
altrimenti va bene così ho volato attraverso la scorsa notte
se qualcuno vuole contattarmi , lo sono
su Twitter Mike è il tuo 87 quindi sentiti libero
per seguirmi tweet me ho il mio diretto
i messaggi si aprono se hai domande
libero di farmi sapere che c’è la mia email
indirizzo troppo con quello immagino che grazie
tu
[Applausi]

Please follow and like us: