Press "Enter" to skip to content

GOTO 2017 • Transforming Legacy Apps in the Enterprise: Société Générale’s Story • Lee & Gilles


[Musica]
okay ciao a tutti
alimentazione di emergenza e il software
sviluppato tutto bene così Gennaro
ciao a tutti e io sono Lea Namba sono un
soluzione architetto in docker e oggi
parleremo di
gestione della configurazione quante persone
qui sapere di finestra mobile sì tutto bene
Quante persone usano la finestra mobile nella loro
la vita di tutti i giorni va bene bene oggi
parleremo di
gestione della configurazione che voi ragazzi avete
per gestire la gestione della configurazione –
variabili d’ ambiente che tipo di cose
sì, quanti di voi ragazzi lo amano, sì
[Risata]
beh, è ​​una di quelle cose in cui tu
bisogna che si sa nessuno ne parla
ma ognuno deve farlo e
strategie per come farlo sai
è che non è un argomento eccitante ma
una volta capito come farlo
è correttamente è davvero soddisfacente
e appagante quindi è quello che vogliamo
condividere con voi ragazzi qui oggi abbiamo
lavorato insieme per l’ultimo anno
alcuni su alcuni progetti docker al suo
compagnia quindi speriamo che dia
voi ragazzi alcune buone strategie e suggerimenti
oggi come organizzarti va bene così
tre argomenti di cui parleremo oggi
è ciò che va in un’immagine molto
di domande in giro che cosa metto
in cosa continuo a fare Mount
i volumi faccio variabili d’ambiente
cosa devo fare il secondo argomento è ancora una volta
che hai capito tutto quello che fuori come faccio
quindi gestire tutte quelle configurazioni
ti daremo alcune strategie
intorno a quello e poi finalmente una volta che ho
quelle configurazioni più strane di me
memorizzali li metto in versione
controllo li metto in una sorta di
registro come faccio tutto di tutto questo
anche questi argomenti sono in un riferimento
architettura che puoi trovare su
sito web docker si chiama sviluppo
migliori pratiche della pipeline
usando il dr. EE ora come stiamo andando a fare
questa presentazione è ciò che farò
Presenterò l’ argomento generale e
diverse strategie che voi ragazzi potete
può adottare e poi Jim passerà attraverso
cosa hanno effettivamente implementato quale
strategia che hanno scelto nella loro azienda e
sul loro progetto va bene così quello che faccio è io
andare in società e io li aiuto più oscuri
osserva le loro applicazioni e di solito noi
andare in là avere un incontro avere un semplice
applicazione e in circa 15 a 20
minuti possiamo scrivere un file docker
eseguilo in un contenitore sulle ginocchia di qualcuno
in alto e sono molto felici che siano come loro
wow, questo è fantastico
funziona proprio come questo bambino
sono abbastanza contenti di questo
e quello che vedremo è una volta
devi poi spingerlo in te
ambiente di produzione reale attraverso e
distribuirlo su più ambienti
pre integrazione di sviluppo UAT di sviluppo
prod prod ciò che posso ottenere un po ‘
un po ‘più complicato di così e alcuni
delle decisioni che voi ragazzi farete
lungo la strada può fare quel viaggio a
un po ‘più facile o più difficile, ecco cosa
vogliamo portarti a termine oggi
quindi Lee ha ragione in realtà noi che abbiamo
abbiamo avuto un incontro e abbiamo deciso quale
servizio vorrei fare il mio modo di docker e a
Alla fine dell’ora che avevamo, ce l’avevamo
e correndo così e questo è ciò che noi
è venuto con dopo circa 20 minuti di
lavoro e ciò che in realtà era la maggior parte
speso per costruire quell’immagine di Java 8 al
in alto e ma ora siamo in produzione e
Posso dirti che è piuttosto breve
diverso da questo ora prima delle immersioni
nella nostra architettura lasciami solo raccontare
tu un po ‘di più
quindi lavoro per la sorella generale è una banca
Banca francese e così abbiamo costruito il
piattaforma di finanziamento per le attività dei pirati
della divisione finanza globale e questo
divisione fornisce soluzioni a
aziende per raccogliere capitali per finanziare
il progetto di proteggere la loro chiave
transazioni contro il rischio e lo facciamo anche noi
attività in molti settori a destra ha fatto
sai per esempio che abbiamo aiutato a finanziare
la ristrutturazione della Miami
Stadio per il Super Bowl nel 2007
quindi sì che qualunque cosa noi era anche noi
finanziare progetti infrastrutturali come
ponti e università e così sì
vediamo ora come abbiamo architettato il
piattaforma in modo che sia costruita intorno
architettura di micro-servizi perché
perché va bene, non solo è bello, ma
è inoltre fornisce un sacco di vantaggi
quindi questi micro servizi ci sono
orientati al business hanno fondamentalmente
ce n’è uno per dominio che per
dominio aziendale e se sei familiare
con ciò si chiama dominio guidato
design o dvd in breve da quando loro
avere una vita temporale completamente diversa
ciclo puoi aggiornare qualcuno di questi ragazzi
ogni volta che vuoi, fornisce abbastanza a
molta agilità e un altro vantaggio è
che questi servizi lì possono
essere scritto in qualsiasi lingua e perché
devono solo parlare la lingua
del sistema e questo linguaggio è
solo riposo e messaggi così ad esempio noi
hanno costruito la maggior parte di loro in Java, ma ora
alcuni di questi sono in catalano e e
si spera che forse in futuro qualche volontà
essere scritto in chiusura con il quale ho sentito
molto questi servizi sono
senza stato e ci sono stivali di primavera
applicazione oggi e in realtà non lo facciamo
hai solo questi che puoi vedere qui
ma
ne abbiamo più di 30 così oggi
siamo in un mondo vm schieriamo in macchine virtuali
e vogliamo mettere tutti questi servizi in
Dugger e vogliamo che la migrazione sia
bello e liscio, quindi non vogliamo fare
Big Bang e anche noi non vogliamo
refactoring l’applicazione per voi sapere
adattarsi e fare qualcosa di più oscuro
specifico e mantenere il VMS la roba VM
in altri rami o qualcosa del genere
quindi abbiamo scelto di avere un passaggio e un turno
approccio così noi cercheremo di non fare
cambiamenti nel codice e fondamentalmente no
non apportare modifiche alla conferma
e vogliamo che il refactoring avvenga
più tardi quando siamo nella finestra mobile perché
tutto con me sarà così tanto
più facile quindi avremo bisogno di fare conservificio
distribuzione in modo che ciò significa che abbiamo
entrambi più scuri e VM in esecuzione side-by-side
produzione e volerà progressivamente
traffico da VM a istanze più scure per
alcuni utenti per esempio e abbiamo anche
un’altra sfida che abbiamo molti
ambienti così abbiamo sordi che abbiamo
integrazione o mono geisha UAT
produzione di ovviamente e supporto anche
250 accattonaggio e quindi abbiamo dovuto
trovare un modo per tenere traccia anche di
quali istanze quali copia del codice
sono stati schierati e verso un’estate
ambiente ok il primo argomento che siamo
andando a passare ora che sappiamo
il loro contesto un po ‘ migliore è quello che
dovrebbe andare in un’immagine cosa dovrebbe andare
in cosa dovrebbe stare fuori
quindi la domanda e la risposta è carina
la risposta classica del consulente dipende
quindi voglio darti due tipi fondamentali di
immagini
c’è un tipo di immagine chiamata il
immagine del costruttore e questo potrebbe essere la costruzione
la tua applicazione compila la confezione
lo sai assemblandolo potrebbe anche
sii un’immagine che crea davvero il tuo
immagine docker ora su questi tipi
di immagini puoi buttare tutto dentro
lì non ti importa delle dimensioni che può
entra nei concerti che metti la tua attrezzatura
lì dentro lanci i tuoi script di qualsiasi tipo
di voi conoscete le patch che dovete fare
Non mi preoccuperei troppo di ciò che sai
se è brutto solo perché tutto ciò di cui ha bisogno
fare è costruire qualcosa per te questo è
uno strumento che di solito sta andando a correre solo
una volta come una singola istanza se ce l’hai
in qualsiasi tipo di oleodotto marittimo allora tu
so che funzionerà continuamente ma non lo è
qualcosa che necessariamente sarà
andando in produzione e così proprio come
questo sai console puoi farlo tu puoi
lanciare un sacco di cose lì dentro
ora il secondo tipo di immagine è
la tua immagine che verrà effettivamente eseguita
produzione e questi saranno
più longevo
lì loro saranno là fuori a darti la caccia
voglio essere in grado di ridimensionarli a volte
così hanno più istanze di loro
in esecuzione per la ridondanza o per
ragioni di prestazioni e in questo caso tu
probabilmente vorrai limitarti a uno solo
componente per immagine in modo che possa essere web
server di applicazioni potrebbe essere un
motore di database ma ne basta uno
componente per immagine e ora con
il multistadio costruisce quello che puoi fare
in realtà combina queste due immagini in
un file di finestra mobile in cui è presente una parte
del file docker facendo la tua app di build
o la tua immagine di build e poi una volta che hai
creato che gli artefatti per la
costruisci allora puoi metterlo nel tuo
corri immagine ok
ora facciamo doppio clic su questa corsa
Immagini Tipi quindi c’è ancora un po ‘
domande su cosa dovrebbe effettivamente andare
in queste immagini che ho intenzione di dare
voi tre diversi tipi di immagini che
categorizziamo così il primo che hai
probabilmente tutti hanno sentito parlare di questo è un
immagine di base cosa mettiamo nella base
immagine in genere conosci il tuo sistema operativo e
il tuo middleware quindi un po ‘di tipo
server o motore di applicazione e il
cose che esternalizzate sta andando
per essere l’ applicazione vera e propria così
nel mondo di Java diciamo che è una guerra
file o file jar o qualche tipo di nodo o
PHP s e quindi la configurazione rimane
anche fuori, dove tu te
montare un volume così questi sono ciò che avremmo
chiamare un’immagine di base e l’altro lato è
quello che chiameremmo un’immagine dell’ambiente
ora perché lo chiamiamo un ambiente
l’immagine è perché è specifica per
diciamo che sei un tè o è specifico per
pre prod e a questo punto si cuoce
tutto nell’immagine tutto il
configurazione l’applicazione reale
tutto e uno dei vantaggi di
In questo modo è che è estremamente portatile in
altre parole puoi prendere la stessa immagine
e puoi eseguirlo nella tua produzione
server puoi eseguirlo sul tuo laptop
puoi eseguirlo nel cloud ovunque tu sia
voglio perché tutto è cotto in poi
è completamente portatile e anche da allora
tutto è cotto in tutto dentro
c’è tracciabile ora nel mezzo
ovviamente c’è un compromesso che è
un’immagine di rilascio ora questo è dove tu
metti l’ applicazione o il
versione dell’applicazione che desideri
per imbattersi nell’immagine e poi l’unica
le cose che ti iniettano dentro sono
o variabili d’ambiente e chiamiamo
questo tipo di ambiente immagine agnostico
e quindi questo ti dà una bella combinazione
d’ accordo è ancora flessibile perché noi
può iniettare nelle cose solo per un
ambiente particolare, ma ha ancora
abbastanza tracciabilità e nidi portatili
che puoi sapere e poi applicarlo
ambienti diversi quindi andiamo
dai un’occhiata ora e guarda cosa hanno fatto
con la piattaforma di finanziamento che
strategia che hanno scelto quindi questo era il nostro
prima prova così abbiamo avuto un’immagine per
ambiente e abbiamo provato a mettere
tutto ciò che immagine di base in a
basare il maven di distribuzione Linux per ottenere
GDK no GS è il nome
così e questo tipo di prezzo di chi parla è
abbastanza difficile da mantenere perché se
conosci il bob martin’s
principio solido e la prima lettera S
sta per singola responsabilità
principio e questo per occupare è a
chiara violazione di questo principio
perché cerca di fare troppo e
inoltre non è molto riutilizzabile se tu
costruisci questo e vuoi forse un po ‘di
la squadra per riutilizzare parte di ciò che hanno
prendere tutto così abbiamo provato a mettere anche
i file di configurazione dell’ambiente
dentro l’immagine per quello che sì per gli scacchi
abilità come ha detto Lee ma questo era un
cattiva idea perché ora la tua immagine è legata
per un particolare ambiente va bene secondo
prova abbiamo tirato fuori l’ambiente
configurazione fuori e ora è ora
meglio perché il suo ambiente agnostico
ma ma non si ottiene ancora molto riuso
attraverso le squadre
così alla fine abbiamo optato per questa configurazione in modo
il GDS all’estrema sinistra è il nostro ops
squadra e si concentrano su dettagli di basso livello
come la riparazione
patch di sicurezza del sistema impostazioni di rete
e nel – rettangolo di si ha la
costruisci solo cose è usato solo a
costruita al momento della compilazione è utilizzato per
costruire i barattoli per imballare la GS
applicazioni ed è a rischio
la responsabilità della nostra trasversale
team di architettura e hanno anche costruito a
gr e Immagine runtime Java da eseguire
produzione e il mio team è lontano
giusto e così abbiamo creato le immagini di rilascio
che puoi vedere a destra e
anche il micro-servizio di avvio a molla che
è un file di finestra mobile astratto che faremo
tuffiamoci un po ‘più tardi
va bene così ora sappiamo di avere una base
strategia per ciò che dovrebbe andare in un
immagine ma abbiamo ancora alcune domande –
dove dovrei mettere la mia configurazione lo farò
diamo un esempio di ciò nella finestra mobile
puoi impostare una variabile a destra, quindi facciamolo
Prendiamo un esempio facciamo un semplice
uno va bene così il primo che noi
di solito tutti imparano è nel file docker
la variabile di ambiente foo è uguale alla barra è
piuttosto semplice è nell’immagine che io
può vivere con ma ora diciamo che voglio
tirarlo fuori
Non lo voglio cotto nell’immagine così
ora lo farò davvero nel
riga di comando in modo che io possa fare il servizio di docker
creare pass in una variabile di ambiente
è fantastico ma ora diciamo che lo sono
stancarsi di digitarlo in ogni
una volta sola, quindi lo inseriremo in a
componi il file o in un file di stack ti mostri
ragazzi tutto quello che ho fatto e lo abbiamo messo
come tu sai diverso leggermente diverso
l’ ambiente di sintassi foo è uguale alla barra
ottimo ma immagina ora come nel loro caso
ne avevano circa 200 perché questo era un
l’applicazione legacy ne avevano circa 200
variabili che hanno dovuto impostare così in a
finestra mobile componi il file che diventa un po ‘
ingombrante
quindi abbiamo detto okay possiamo dividere
questo lo mettiamo in un vero e proprio
file di ambiente in modo phuong ma lì
erano anche alcune variabili che
loro non lo sapevano prima e loro
erano stati archiviati in un esterno
configurazione quindi se questo è il tuo caso
cos’altro puoi fare bene puoi farlo
può effettivamente utilizzare uno script del punto di ingresso
e puoi chiamare diciamo con arricciatura
oppure puoi fare qualsiasi tipo di chiamata all’esterno
chiamare a quel servizio esterno e
quindi in realtà impostare foo equivale alla scrittura della barra
il tuo punto di ingresso in modo che sia un altro modo
di farlo e finalmente a volte il tuo
la configurazione è segreta, così ancora
un altro modo di farlo è possibile utilizzare
docker segreti per memorizzare questi
variabili quindi come faccio a sapere come
come scegli quale di questi
strategie da prendere quando vogliamo
imposta una variabile semplice come foo equals
bar e quindi il mio consiglio per voi ragazzi è
pensa al ciclo di vita di questi
le variabili vanno bene per cosa intendo
proviamo a pensare ai secchi così via
il primo sul primo tipo di variabili
queste sono cose che sono longevi così
roba che cambierà sai forse
ogni anno questi potrebbero essere più simili
strumenti o politiche di tipo aziendale o
librerie che si desidera includere nel
più in un’immagine di base potrebbero anche essere questi
le cose attraverso diciamo una domanda
programma dove sai che lo farai
hai intenzione di farti sapere
non solo i tuoi strumenti aziendali ma solo
per il tuo programma sono strumenti e questi
sono cose che tutti da te
programma verrà utilizzato in modo da poter mettere
tutti questi tipi di cose direttamente
verranno creati nel tuo file docker
nelle tue immagini
e non hanno intenzione di cambiare la situazione
spesso così non devi aggiornarli
nella parte inferiore queste sono cose che
cambierà più spesso quindi quali sono questi
queste sono cose come le tue
variabili d’ambiente quale ambiente
ti stai schierando come vedremo a
Poco dopo hanno avuto molte differenze
le cose da configurare stanno cambiando
settimanalmente stanno cambiando ogni giorno sono loro
modifica per ambiente per versione di
la tua domanda quelle sono cose tue
puoi inserire direttamente nel tuo
configurazione dell’ambiente in te
conosci il tuo dottore o componi il tuo o il tuo
anche sulla tua linea di comando e poi a
distribuire il tempo cosa si può fare ci sei
può quindi mettere cose come i segreti che puoi
metterlo nello script punto di ingresso si
può anche montarlo come un volume così questi
sono le nostre cose che realmente implementano
tempo in cui voglio iniettare e poi
finalmente ci sono in effetti cose di runtime
che potresti voler cambiare così è
il tuo contenitore che è in realtà in esecuzione
e poi quello che vuoi fare è mentre
sta girando forse cambia alcune cose così
quello potrebbe essere la scoperta del servizio
potrebbe anche essere debugging o profiling o
cambiando la configurazione di registrazione così
pensa alle cose in termini di vita
cicli e che ti aiuteranno a strutturare
fuori dove devi mettere diversi
configurazioni quindi vediamo cosa facciamo
vediamo cosa hanno fatto qui, okay, quindi facciamolo
io ti mostro alcuni dei file più scuri che noi
creato così questo è dal nostro team operativo
GTS in modo che possano decidere quale base
La distribuzione Linux sarà usata così dentro
questo caso è reddit Enterprise
nex-7
e ne mettono anche alcuni
configurazione per i repository yam
quale volontà
decidere quali pacchetti possono essere installati
nelle nostre falde acquifere dell’isola ovviamente non tutti
di loro sono autorizzati e anche quali
le autorità di certificazione possono essere attendibili
e questo tipo di cose non lo facciamo noi
aspetto che questo cambi molto rispetto al
corso dell’anno successivo il Java
Immagine dell’ambiente runtime così è
gestito dal team di architettura e
scelgono quale Java 8 Update è sicuro
da utilizzare in produzione perché sanno
meglio eseguono i test di sicurezza per verificare
la compatibilità con il sistema operativo sottostante
e controllano anche quali bug sono stati
incluso nelle ultime versioni più recenti
aggiornamenti e ne installano anche altri
politica di crittografia più forte rispetto al
uno che è in bundle di default con il
JDK che siamo specifici e questo
è la nostra immagine di base del microservice
quello astratto e lo abbiamo scritto che scegliamo
quale utente verrà utilizzato in quale gruppo
apparterrà a e quali porte ottiene anche
per essere esposto e per favore conosci la voce
il punto deve essere scritto alla fine perché
Tornerò in alcune diapositive
e infine il rilascio immagini il
le immagini di rilascio sono quelle che erano attive
l’estrema destra e la precedente grande diapositiva
con tutte le immagini e in realtà loro
non fare nulla in particolare perché
bene, tutti questi microservizi sono
sembra solo ora così queste immagini loro
sono costruiti dalla nostra pipeline di CD CI
automaticamente quando si verifica la fonte
il codice cambia in modo che vengano pubblicati
pubblicato sul DTR che è il più scuro
registro fidato
questo è un estratto della nostra bussola più scura
così ora lo chiamiamo dr. impilando invece
perché il dr. ha introdotto il concetto di pila
che è un po ‘ più di alto livello e tu
può vedere come specifichiamo il nome del
ambiente che vogliamo eseguire questo
servizio in configura anche alcuni solo a
nodo per la raccolta di metriche e non c’è
anche un lato credenziale che in realtà è
un dr. segreto e lo faremo una volta
siamo dentro e il nostro punto di entrata così
diamo un’occhiata al punto di ingresso
di cui ho parlato prima, quindi prima di noi
fonte il file di credenziali che era in
la diapositiva precedente e quindi possiamo usare
tutto ciò che era dentro
per il resto della sceneggiatura come ho detto noi
utilizzare VM oggi e vogliamo migrare a
docker quindi per il mondo VM usiamo a
strumento di distribuzione non so se alcuni di
usi questo tipo di strumento anche se
questo strumento è anche responsabile per
gestione della configurazione di configurazione
quindi è chiamato CMDB
e questo strumento richiede di essere
configurato in un certo modo e i dati
è stata una certa forma e il
applicazione dire giuramento devono anche
usa un formato segnaposto in modo che il
CMDB lo strumento di distribuzione può sostituire il
segnaposto quando si distribuiscono servizi
sulle macchine di destinazione così abbiamo
questo perché vogliamo la piena tracciabilità
noi non inseriamo semplicemente le cose nel CMDB
e sperando che il CMDB manterrà
traccia di tutto automaticamente
rami e così via di solito non è fatto
per questo motivo abbiamo un repository git
dove noi
tutti quei dati di confessione e noi solo
caricare questi dati sul CMDB ogni volta
il repository git cambia o in arrivo
il tempo c’è un gancio e ci lanciamo
Lavoro di Jenkins per popolare correttamente il CMDB
quindi questo formato in realtà è un’era
formato non ne conosco un altro qui o
la sua famiglia è una gemma rubino che è
usato dai burattini e usiamo burattini per
popola il CMDB così ora ora nel
mondo oscuro in realtà non abbiamo bisogno di questo
sviluppare lo strumento di distribuzione più giusto
ma noi volevamo avere entrambi
correndo fianco a fianco nella produzione di noi
dovevamo trovare un modo per continuare
nutrire il CMDB e tenerlo felice e
avere un modo per tirare questo
configurazione e alimentarlo al
più scuro ai contenitori più scuri proprio così
e questo è esattamente ciò che questa voce
il punto fa quando diciamo convertire tmdb ya
conoscere le proprietà in realtà è solo un
sceneggiatura dietro a ciò e basta tirare il
configurazione fuori dal repository git
lo converte in proprietà diverse
file di proprietà del file mi dispiace e feed
quello nell’applicazione Springwood o
possiamo anche forse e, a parte questo
nel nostro script di shell , se lo si desidera e
funziona solo molto molto bene così yeah tutto
diritto che è un sacco di lavoro da destra
il nostro primo file di finestra mobile di 15 minuti come
baby wow funziona – ora è come whoa
abbiamo dovuto rompere questo in su in tutte
queste cose dobbiamo davvero pensare
sulle corse parallele e tu lo sai
ho impiegato un po ‘di tempo per far funzionare tutto questo
correttamente giusto quindi ora quello che abbiamo visto è
loro sanno
hanno rotto tutti loro
configurazione in metterlo nella finestra mobile
file in immagini metto un ambiente
lo metto come segreti lo faccio a
punto di ingresso al momento della distribuzione che conosci
dove lo metto così hanno capito tutto
quella roba fuori giusto ma c’è ancora
alcune domande che ho fatto tutte
che ora come faccio a metterli tutti
questo in qualche tipo di controllo di versione
o gestione della configurazione e così facciamo
guarda ora e il modo in cui pensiamo
a riguardo è come se fosse solo
come programmare così come Jill ha menzionato prima
avevano un CMDB e in questa vista del
mondo stiamo guardando la configurazione come
dati corretti Prenderò tutto il mio
configurazione lanciarlo in un grande database
Sarà in funzione e poi quando ne ho bisogno
Vado a cercare materiale e interrogherò
il database e che mi darà tutti
le mie informazioni e cosa succede di solito
in giro che sono proprio queste sono questi sono grandi
prodotti che sono complicati da installare
e di solito solo poche persone principalmente il
i team ops ottengono talvolta i team di CD CI
coinvolto con quello gli sviluppatori
a volte lo toccano a volte loro
non è quindi uno strumento diverso da
sviluppatori di utilizzare ora con quello che la finestra mobile
il modo in cui vediamo il mondo è
configurazione come codice in modo che possiamo fare
questo tu sai che questa visione in realtà viene
vero il motivo per cui questo è perché
tutta la nostra configurazione è semplice testo
file i loro file del medico loro loro
componi i file dei loro file stack
file di ambiente in modo da poter trattare voi ragazzi
questo proprio come come si dovrebbe trattare
tratterebbe il codice e uno degli altri
i vantaggi sono quando è come
codice quindi i ragazzi dell’Op iniziano a usare il
stessi strumenti degli sviluppatori, quindi diciamo
in questo caso, sono entrambi giusti
spingendo le cose per ottenere e all’improvviso
stanno parlando la stessa lingua e
questo li aiuta davvero ad abbattere
quella barriera
tra le operazioni di Devon e davvero ottenerle
parlando insieme quindi questo è giusto
un altro vantaggio di cui pensare
cose di configurazione come codice così ora una volta
abbiamo detto okay tutta questa configurazione
è proprio come il codice di cui abbiamo ancora bisogno
organizzalo e bene cosa ti darò
qui è per quanto le strategie siano ancora
pensa ai cicli di vita di tutti
queste diverse configurazioni cosa faccio
significa che prendiamo la tua immagine
file quindi tutto il necessario per costruire un
immagine che molto probabilmente avrà
lo stesso ciclo di vita del tuo come tuo
applicazione quindi sto uscendo con una nuova
la versione della mia app ha ricevuto del nuovo codice
andando a compilarlo creare una nuova versione
oh ho aggiunto una nuova variabile di ambiente
che dovrebbe andare nel mio file finestra mobile che
potrebbe entrare in una variabile di ambiente
da qualche parte
Probabilmente dovrei commettere che e metterlo
proprio accanto al mio codice così posso averne uno
repository che è più sulla build
ora posso mettere che proprio accanto alla mia
codice sorgente ora cosa vorrei raccomandare
sta quindi mettendo tutto ciò che deve
fare con l’ effettiva esecuzione di queste immagini
qualsiasi cosa tu voglia iniettare
runtime che è specifico per l’ambiente
metti tutto ciò in un separato
repository perché perché vivono a
il ciclo di vita diverso si sta costruendo
immagini l’altro è che sto per correre
qualcosa e potrei iniettare diversi
cose quando lo eseguo poi quando costruisco
è dove voglio tipo di mantenere
tutto uguale e un altro professionista
un consiglio che ti darò ragazzi è che ho lavorato
su un progetto in cui mettiamo tutti i nostri
ambienti diversi, quindi abbiamo dovuto pensare
dieci o undici ambienti
e abbiamo messo tutta quella configurazione
in un grande ramo maestro e noi
separato ogni ambiente per per
cartella in modo che avessimo dev sapete tutto il nostro
testare anche test delle prestazioni, ecc
poi ci sono state introdotte nuove versioni
perché nuove versioni della nostra applicazione
stavano arrivando lo sai ogni due settimane e
quindi diciamo ok, lo mettiamo nel nuovo
la versione qui sopra aggiunge una nuova variabile
distribuirlo a questo ambiente, ma poi
siamo un paio di versioni indietro in a
ambiente diverso e cercando di portarlo
diverse variabili d’ambiente in due
diverse versioni su diversi
ambienti in questo un gigantesco maestro
ramo è diventato un incubo e così
abbiamo provato diverse configurazioni e
infine quello che quello che abbiamo capito la
il modo migliore per fare è metterli entrambi
ambiente nel proprio ramo e il
i vantaggi di ciò sono ciò che consente
tu devi fare in un ramo
diciamo che è un qualche tipo di pre
prod si può quindi iniziare a codificare le versioni
e conosco ogni singola versione
stato schierato nel mio pre prod e se io
voglio una versione diversa su un test
piattaforma allora ho solo un completamente
configurazione diversa per test e
Posso taggare e versione di tutto questo ora
potresti dire okay che potrebbe ottenere
difficile da gestire , giusto perché tu
avere tutti questi rami come porto
uno cambia in tutto il
diversi rami bene che è dove il
strumento è utile ed è per questo che noi
consiglia di metterlo in qualche tipo di
controllo della versione reale come un git che puoi
usa lo strumento quindi per fare tutto il tuo tuo
fusione o la tua raccolta di ciliegie in
diverso in diversi rami e it
fa solo la vostra vita molto più facile così
vediamo se hanno effettivamente preso quello
consiglio o no così come ho accennato prima noi
ho provato a cuocere a cuocere il loro ambiente
configurare
per l’immagine quindi prima abbiamo solo clonato il
repo nella directory di build come sono
Jenkins prima di costruire l’immagine e
basta usare la direttiva di copia come a
beneficio che si ottiene attraverso la tracciabilità
perché tutto è nell’immagine ma
ora devi solo assicurarti – tu
tenere traccia di quale tag immagine
è stato distribuito in ogni ambiente
soprattutto in produzione che lì
sono aspetti negativi devi devi copiare tutto
configurazione per l’ambiente da essere
ambiente grazie errore e tu
devi rivelare tutte le immagini ogni volta
la tua configurazione cambia e non lo è
binario molto grande solo una volta che è un
concetto fondamentale nel continuo
consegna quindi secondo me il modo migliore
per far fronte all’ambiente
la configurazione è via il the
punto di ingresso e l’utilizzo di questa tecnica il
immagini che e molto non elastico così tu
non è necessario ricostruire l’immagine quando il
modifiche alla configurazione che hai appena ripristinato
il contenitore e poi vai di nuovo
la configurazione è qui come il rovescio della medaglia
è necessario ottenere ma e si può perdere
sulla tracciabilità a meno che non si acceda
da qualche parte forse da qualche ambiente
variabile quale confusione si provi
utilizzato quando si distribuisce il servizio micro
per contenitore e sì sì pochi
idee su dove stiamo andando così noi
ascoltato con molta attenzione Julie e come
Ho detto che abbiamo usato per il grande grande
configurazione git repository usiamo il
approccio di branca master ed era a
pasticcio totale come ho detto perché quando proviamo
di cambiare qualcosa refactoring alcune parti
dell’applicazione ecc. che puoi avere
la versione precedente funzionava con
roba di configurazione appena refactored così
è molto molto imbarazzante quindi alla fine noi
Ho appena creato dei rami e non abbiamo potuto
evitali perché come hai detto tu
a volte questi loro ambiente
hai diversi cicli di vita forse tu
avere un certo ambiente di allenamento e
rimarrà attivo e funzionante come per tre
settimane perché ti stai solo allenando di nuovo
utenti che semplicemente non puoi
spingendo nuove versioni su di esso e così noi
che mostra leggermente che abbiamo scelto il
Esegui l’ approccio al repository così ci siamo separati
ha separato l’ambiente in
configurazione dell’ambiente in proprio
repository e questo l’abbiamo fatto
per ogni dominio, quindi quando vogliamo
cambiare la configurazione dell’ambiente per
So che per l’integrazione ci limitiamo a dare un’occhiata
la NDA esegue il repository e noi controlliamo
il ramo dell’integrazione ne fa alcuni
modifica commit push e il CD CI
basta ridistribuire tutto e basta controllare
spegne l’integrazione della NDA
impilare e basta riavviarlo con
informazioni corrette così sì una volta
hai gli strumenti come abbiamo detto è molto
molto facile non devi fare nulla
semplicemente non farlo a mano per piacere
tredici microservizi perché lo farai
muori e sì, l’ultima cosa è una
particolare interesse che abbiamo è quello di
fare la distribuzione Bluegreen e così siamo
ancora invadendo indagando su questo e
speriamo che ci sia qualcosa che è
arrivando alla prossima versione di dr2 a
gestire che sempre fuori dalla scatola si sa
sai fuori dalla scatola aspettare bene
Va bene così, in conclusione qui abbiamo guardato
i tre diversi argomenti e loro
ha scelto di utilizzare le immagini di rilascio come
il bel compromesso tra flessibilità
e tracciabilità e portabilità che
ha attraversato e hanno fatto l’esercizio
di pensare ai bucket di configurazione
e cicli di vita dove mettere diversi
le cose lo mettono nelle immagini mettilo dentro
variabili di ambiente o come segreti o
in un punto di ingresso e poi finalmente a
memorizzare tutto ciò che hanno separato
tutta la loro build in una build
repository e poi tutti loro
configurazione a runtime in un separato
repository ancora una volta perché vivono
cicli di vita separati, quindi speriamo
solo alcuni di questi suggerimenti proprio qui su
le strategie ti aiuteranno ragazzi così
sarai come questo bambino
rimarrai carino e felice e lo farai
goditi il tuo viaggio grazie grazie
voi ragazzi avete qualche domanda sì sì
la domanda è: come gestisci i segreti?
perché non puoi mettere i segreti dentro
testo normale nel controllo di versione in realtà
l’abbiamo fatto, ma non abbiamo messo che nel
testo normale
li abbiamo crittografati con gemme che sono
chiamato yeonil come criptato lo sai
e dove puoi criptare i valori di
some-po ‘
era chiave Yamabuki quindi questo è
quello che abbiamo fatto fino ad oggi in realtà e
questi questi punti sono questi segreti che erano
messo in testo ma dentro il
contenitore così il contenitore che abbiamo spinto
la chiave di decodifica pubblica e privata
digita nel segreto più oscuro e quindi crea
ho appena tirato fuori la chiave e ho appena eseguito il pronto soccorso
meccanismo che hai visto può
IML blah blah blah ed è non criptato
le chiavi e sputa fuori la proprietà
file e loro hanno l’ aereo il
i segreti in testo semplice ma tu
non può accedere ad un contenitore dal
fuori se non sei autorizzato così
è abbastanza sicuro per noi ora siamo noi
considerando forse di migrare questa roba
per votare, ma il problema principale rimane
che vuoi metterlo nel vault
e dire solo che sarà tutto sarà
storia coinvolta e nessuno può forse leggere
da questo indietro i segreti e forse tu
non posso nemmeno decodificarlo per davvero
esempio in Tucker non puoi leggere a
segreto se ricordo bene non lo siamo
completamente non abbiamo completamente
deciso cosa vogliamo fare con il
segreti ed è anche un argomento in corso
nella comunità docker perché lì
ci sono molte cattive pratiche e persone
stanno scoprendo nuovi modi per farlo, ma
non c’è una risposta definitiva, quindi siamo
ancora indagando
Seguirò su quello è se se lo sei
rimanendo solo nel mondo più oscuro così
stai usando i segreti di docker il meglio
la pratica oggi è solo quella di quelli
segreti così tu scriverò in una versione mia
segreto sai docker
creare segreti e conosci il nome
gli darai una versione così
potrebbe essere una data potrebbe essere un tag
potresti conoscere qualsiasi versione qualsiasi
uno e poi se vuoi ruotarli
segreti allora crei un nuovo segreto
versione due e poi aggiusti e quello
e in questo modo quello che fa è il tuo
i segreti diventano tracciabili anche in
altre parole non è solo tu sai il mio
Password MySQL ed è la stessa cosa
variabile ogni volta che puoi sapere
esattamente quale versione di quella password
in base a una data o in base a quanto sai a
doccia o qualsiasi tipo di sequenza o sequenza
che vuoi usare
okay la domanda è che usiamo la console e
come lo usiamo in realtà non lo usiamo
per un diritto di gestione della configurazione
ora e ma noi ma abbiamo in programma e il
domanda rimane UPS o hanno usato
Annulla direttamente e solo mucca
alcune informazioni chiave in esso e
è tutto, ma la mia opinione è che noi
dovrebbe per una gestione della conversione
soprattutto quando non è segreto
dovresti avere la piena tracciabilità così
gate è un I’m a my opinion è il migliore
posto per mettere questi perché ora puoi
recensione forse in una richiesta di pull qualcuno
chi sta cercando di fare qualcosa e noi
vuoi fare forse vuoi dire oh no
non farlo perché non ce n’è
modo migliore o no no non ti è permesso
per fare questo siamo come sessanta sviluppatori
e alcuni di loro sono motori sì e e
a volte c’è un po ‘come la lana di
confusione tra squadre perché non lo facciamo
lavorare molto da vicino e loro no
non so cosa stiamo cercando di ottenere
a causa della distanza e del futuro
qualunque cosa tu voglia e qualche volta hanno fatto
nel CMDB è fatto
modifiche e con ora non eravamo
consapevole di e poi come due settimane dopo
chi ha fatto questo e non lo sapevamo
avevano cambiato qualcosa in estate
ambiente che ha funzionato per loro
ambiente, ma non per l’altra
perché erano solo responsabili
questo ambiente e loro lo hanno sentito
non era il lavoro per aggiornare tutti i
ambienti e quel tipo di cose e
quando è andato come un matto e noi solo
ho passato giorni a risolvere i problemi, quindi facciamolo
metti tutto nel cancello e facciamo solo
usa commit e per l’attivazione dell’aggiornamento in
un altro sistema quindi per esempio console
quindi usiamo la console solo per il servizio
scoperta oggi, quindi ci registriamo
servizi in consiglio e così altro
i servizi possono cercare i servizi di a
console e anche con alcuni ne usiamo alcuni
dell’archivio valore chiave in console a
memorizzare alcune specifiche sul servizio
come il contratto che forniscono
mobile c’è un dibattito quindi lo faremmo
avere questi dibattiti con tra il
il diavolo e le squadre ops erano dove
store e sai che la console esce tutto
il tempo
quindi alcuni dei vantaggi di
usando o direi il principale il
la cosa principale che viene fuori è tutti
dice sì ma dimentica cosa succede se vai
in basso a destra e mentre consolle puoi
fallo sapere alta disponibilità e
disaster recovery e tutto il resto
c’è una sorta di dibattito che sta succedendo
dovresti introdurre un altro sistema
lì e come stavi dicendo sei tu
probabilmente dovrebbe avere solo un oro
fonte quindi usa git come fonte d’oro
in questo modo rintraccia tutto perché
cosa succede se vai a console I
penserei ad esso più come un cache di
la tua fonte d’oro cosa succede se tu
vai alla console quindi diciamo che è necessario
iniziare a ripristinare le cose quindi tutto a
improvvisamente sei come oh , cominciamo
versioning cose in console e poi come
hai detto che è come se cambiasse cosa
in console okay iniziamo ad assegnare
conosci il controllo degli accessi basato sui ruoli in
console e poi si inizia a farlo
tracciabilità e diffusione e tutto
si finisce per rifare entrare in console a destra
quindi se questo è il caso, è meglio
cosa da fare è solo fare un git e se
devi creare un get aziendale o
ottenere il recupero di emergenza altamente disponibile
solo per la gestione della configurazione per
il tuo tempo di esecuzione, ma come vediamo oggi intendo
se la piattaforma di sviluppo org va
in fondo sai che la tua compagnia perde così tanto
soldi comunque che la grande tendenza giusta
ora è è è quella casa è è solo
prezioso quanto il diritto alla produzione
essere sveglio tutto il tempo che voglio aggiungere
che quando diciamo git in realtà diciamo
intendiamo github perché abbiamo un github
impresa on-premise sì sì
la domanda è che ci sono le app di sviluppo
e ci sono le app e cosa succede se e il
costruire le app sono di solito più grandi e le
esegui le app ottimizzale la domanda
è cosa succede se nella tua pipeline CDI CCI
hai un sacco di app di sviluppo come facciamo noi
sì e loro lo fanno davvero così è
solo due estremità dello spettro, ovviamente
puoi puoi quindi avere qualcosa in
al centro e puoi effettivamente iniziare
ottimizza le tue applicazioni di build e tutto
dipende da quale sia la tua frequenza
la pipeline del tuo CI CD vuoi aggiungere
qualsiasi cosa per quello sì sì, in realtà
stanno incontrando alcuni problemi riguardo a
costruire Abid non tanto perché la build
su sono troppo grandi è piuttosto che per
esempio usiamo siamo siamo in Java
giusto, quindi usiamo esperti, quindi quando diciamo che possiamo
anche noi siamo un’azienda che usiamo Nexus o
fabbrica attiva o qualsiasi altra cosa e abbiamo
problemi con ad esempio il repository locale
che manterrà tutte le dipendenze
grazie a essere tende ad essere molto molto
grande
e noi siamo incappati in problemi
con quello perché l’ host può essere molto
non c’è troppo spazio e troppo
può essere un po ‘ingombrante
avere tutte queste immagini costruite su tutto il
posto forse qualche squadra avrà questo
parte di queste librerie e altra squadra
avrà come queste librerie ma tu
non vuoi non condividere questi
giusto perché non vuoi lato
effetti stiamo facendo le fatture così ciascuno
dovrebbe avere il proprio volume questo volume
e così via così è difficile
a a per decidere quale strategia facciamo
avere un volume o volume condiviso montato
facciamo in alcuni giorni a costruire un’immagine, noi?
appena
tira tutte le dipendenze che possiamo e
averlo come strato nell’immagine della finestra mobile
è difficile da dire e anche noi
ha avuto qualche problema perché c’erano delle banconote
in esecuzione su nodi nella palude docker
dove non avrebbero dovuto essere noi
sai ancora di trovarne
soluzioni a questo e noi siamo
alcuni in realtà hanno risposto al tuo
domanda ma se il problema è il
la dimensione del margine dell’edificio che puoi applicare
le stesse tecniche tecniche allora per
l’app della corsa ovviamente tu puoi
non so se non ne hai bisogno
parte di te ovviamente ce ne sono alcuni
tecniche che puoi rimuovere evita a to
avere grandi file zip o cross layer solo
rimuovili quando puoi e così via
il suo unico comando è molto utile
per ottimizzare le immagini si fa un oscuro
storia e poi non lo dai
Nome dell’immagine e sarà stampare in
ordine inverso per tutti gli strati
in pratica e tutti i comandi che
entra in te e anche nella taglia
che aggiunge molto velocemente puoi vedere oh
Mi è piaciuta una copia e poi decomprimere mentre
Avrei potuto farlo in una cosa
e posso ridurre al minimo la dimensione della mia immagine
va bene
grazie ragazzi non dimenticate di votare
[Applausi]

Please follow and like us: