Press "Enter" to skip to content

GOTO 2016 • Enabling Microservices at Orbitz • Steve Hoffman & Rick Fast


tutti, grazie per aver ricevuto il mio nome
è steve hoffman e unirmi a me è rick
velocemente abbiamo lavorato su un micro server
progetto in orbitz insieme è cosa
parleremo di oggi che sono
attualmente con Ray è calmo e Rick è
ora con expedia sia la grande Chicago
le aziende che assumono controllano se
sei nel mercato così orbita attorno
il sito web di viaggi è tornato in due
migliaia dai cinque principali vettori come a
negozio one-stop per prenotare viaggi online
stiamo andando a fare un’architettura rapida
storia panoramica per tipo di spiegare come
siamo passati da una specie di monolitico
architettura ai servizi e poi
infine al knocker di Microsoft a
Lo stock Microsoft non è completo a meno che
parli di condotte automatizzate
altrimenti si sta andando ad essere in un mondo
di dolore e speriamo ne avremo un po ‘
tempo alla fine per domande va bene
così come ho detto che le orbite sono tornate indietro
duemila dai principali vettori il
l’architettura era piuttosto standard del
giorno hai avuto il tuo livello web che è servito
sul tuo web sai parlare di contenuti HTTP
a un livello aziendale che sta leggendo qui
con i corrieri il sito web lanciato
era fondamentalmente una singola applicazione noi
ha fatto su richiesta le versioni a mano e noi
erano fuori e funzionanti e fondamentalmente cosa
era successo che avevamo schiaffeggiato il web
facciata in cima al sistema che vedi
questa immagine ci sono in realtà un sacco di
questi sono chiamati GDS Azure globali
sistemi di distribuzione questi sono quelli
i terminali vedete gli scrutatori digitando
all’aeroporto in cui non lo fai
so cosa stanno facendo un sacco di criptici
comanda tutti quei biglietti cartacei che hanno
sono state sostituite quelle scatole di carta
i biglietti sono stati sostituiti da
biglietti elettronici ma efficacemente
i sistemi sono sempre gli stessi e così quando
stiamo parlando di parlare con il
compagnie aeree per il livello aziendale siamo
davvero parlando di comunicare con a
GDS il primo che orbita collegato
a nel 2000 è stato chiamato ancora mondo span
intorno a oggi e nel periodo di tempo del 2003
ci siamo collegati al nostro secondo GDS che era
sciabola
ora American Airlines effettivamente usa
Saber quindi se hai prenotato un americano
biglietto aereo e abbiamo prenotato e
assaporare in realtà salvato la compagnia aerea
soldi e quindi quella era l’economia di
compagnia aerea americana nello stesso periodo
ha deciso che volevano un sito web di consumo
quindi siamo stati felici di fornire il
conduttività a nord-ovest anche nel
gioco e abbiamo fornito connettività per
anche loro e molto presto abbiamo visto questo
l’architettura non stava andando in scala giusta
così nel periodo di tempo del 2004 siamo passati a
un modello di servizi attorno a un defunto
La tecnologia Java ha chiamato genio e il
l’idea era che ognuno di questi servizi
si evolvere indipendentemente che avremmo
diversi cicli di rilascio e tutto
Sarebbe fantastico e siamo andati avanti
questa linea per un po ‘abbiamo collegato di più
i backend come Amadeus Northwest si sono fusi
con un altro corriere americano agganciato
Saber direttamente così sono andati via
orbitz ha acquistato più marchi come ebookers
e biglietti economici American Express
la connettività necessaria non verrà mostrata
tutto è successo molto sopra il
15 anni di storia di orbite ma
generalmente l’idea è che sei tua
il sistema è in continua evoluzione e così tu
bisogno di evolvere con esso così in avanti
al 2015 quando abbiamo iniziato il micro
i servizi di esperimento orbitz avevano multipli
marchi entrambi i siti e servizi web in modo
per esempio se la tua famiglia fosse usata
servizio web xml a cui lo forniamo
li abbiamo collegato a più backend
l’intero sistema era composto da oltre
500 applicazioni separate in esecuzione
migliaia di istanze in più dati
centri e schieramenti erano più o
meno quotidiano e poi ovviamente alla fine
dello scorso anno, l’expedia è arrivata e acquistata
il sacco così come puoi immaginare
applicazioni che si evolvono organicamente
più di un decennio tendono a maturare un po ‘
il bit di processo in 2010 orbitz stava facendo
due uscite all’anno puoi immaginare come
beh, quelle versioni sono andate, ti darò un
suggerisco come male entro il 2012 che è quando questo
la foto è stata scattata era di circa 18 giorni
dal codice alla produzione e cos’è questo
l’immagine stava cercando di
quello che stavano cercando di tracciare era tutto
i passaggi necessari per ottenere dal codice a
produzione e molti di questi erano molto
passi molto manuali e così tanto tempo
è stato speso cercando di eliminarne altrettanti
i passaggi manuali possibili hanno capito
fino a circa 1 o 4 giorni hai visto anche
La legge di Conway in gioco è qui
lo sviluppo aveva il loro strumento che era a
strumento chiamato colla per la distribuzione del lavoro
le operazioni delle applicazioni hanno utilizzato il motore CF.
e lo chef più tardi e questo tipo di
mancata corrispondenza tra i due tipi di llege
ha causato alle persone di non creare più
servizi così anche se abbiamo un
architettura orientata al servizio il dolore
coinvolto era solo suppongo più di loro
potrebbe sopportare e vogliono solo di più e
più codice in e così 15 anni dopo che abbiamo
vieni al punto di partenza invece di averne uno
applicazione monolitica ora abbiamo un sacco
e molti servizi monolitici così uno
di questi servizi Rick stava lavorando su I
è venuto a mio destino detto hey ho
ho questa grande applicazione che voglio rompere
e voglio fare una sorta di 12 fattori
architettura di microservizi e voglio
usa la finestra mobile possiamo eseguire la finestra mobile, quindi non lo faccio
sanno vediamo se siamo in grado di capirlo
e così quando noi quando abbiamo preso questo su di noi
deciso bene, vediamo se possiamo
radere a destra tutto quel processo umano
troviamo un modo in modo che ad un certo punto
il coinvolgimento umano si ferma e poi lo è
solo robot dopo così abbiamo iniziato con
questa scatola che abbiamo chiamato il robot Rick
abbiamo già avuto lo chef al posto e
la cosa che la teoria era che avremmo fatto
usa lo chef per distribuire il dottore e poi noi
ha lanciato le nostre applicazioni in cima a questo
ma se hai mai usato docker, spero
ce l’hai con certe
sfide per esempio se tutti e tre di
questi erano lo stesso servizio e tutti loro
ascolta quel particolare porto che sono
andando a stanno andando a scontrarsi a destra
e così dottore ha questo annuncio di rete
livello di traduzione della rete in modo che
ognuno ottiene una porta casuale e quindi ognuno
di questi servizi si trovano l’un l’altro
diventa un problema anche tu hai il
problema di log simili, se il tuo
l’applicazione è come registrare il disco
è in realtà l’accesso al medico
contenitore dove nessuno può arrivare così
dovevamo risolvere alcuni di questi
i problemi
quindi la prima cosa che abbiamo aggiunto a questo
l’immagine era una scatola qui se lo sei
non ho familiarità con questo è console è a
registro di servizio eventualmente coerente
da hasha Corp lo eseguiamo localmente
su tutti i server su cui vengono eseguite le immagini dr
e le applicazioni si registrano fondamentalmente
e trovare altri servizi tramite console e
quando lanciamo le applicazioni che diciamo
ogni applicazione quello che il suo IP del
server attivo e esterno
porta in questo caso è 3100 a così
quando si registra con la console mi dispiace così
quando si registra con console um
tutto può essere trovato giusto per trattare
con il problema di registrazione abbiamo avuto solo
convertito a utilizzare una pila di alci
elasticsearch con cabana e quindi cosa noi
è stato fatto cadere un agente di registro
ogni scatola in modo tale da essere praticamente ignorata
la registrazione predefinita e usiamo il
rete lager di nuovo perché sapevamo che
IP della macchina su cui eravamo, lo faremmo
basta usare una porta ben conosciuta che abbiamo eseguito
il log stash agent e lo chef
log stash configurato lo inoltrerebbe a
il cluster appropriato e quindi di
Certo che devi avere le orbite della metrica
potresti o meno sapere ma orbite
la grafite open source torna in due
migliaia otto abbiamo un sacco di grafici
e così abbiamo archiviato lo stesso modello ciò che noi
è stato fatto cadere un agente locale sul
scatola non c’era una staffetta per questo Rick
Rhoden è fondamentalmente un piccolo relè
chiamato il sig. sottaceti che è configurato da
albero per indicare l’ appropriato
cluster di grafite e ancora perché noi
sapevo che ogni container docker conosceva il suo IP
sarebbe fondamentalmente connesso a a
porto ben noto e poi lo chef lo farebbe
configurare il sig. sottaceti per inoltrarlo a
la giusta destinazione va bene così
funziona alla grande ma sai se eri a
parlare di sams o altro prima che tu lo sappia
che sai che avrai un sacco e
molte di queste scatole che non hai intenzione di
come SSH dappertutto e scrivi dr.
esegui questo docker esegui quello che sei veramente
voglio che tu voglia qualcosa da gestire
i contenitori del tuo dottore per molti
macchine
per fortuna nello stesso periodo in cui noi
arrivato a questa conclusione il mezzos aveva giusto
ha annunciato il supporto di prima classe
per il dott. e quindi questo è un questo è un
foto dal sito di memphis di
la loro architettura ti ha praticamente guidato
fondamentalmente ha un master o, si spera
più maestri che attraversano a
elezione del guardiano dello zoo e poi c’è un
un mucchio di note slave per calmare gli agenti ora
e per di più si esegue uno scheduler
che quindi avvia le applicazioni su
particolari agenti di mezclas in questo caso
stiamo davvero parlando di usare il
programmatore della maratona quindi la nostra immagine sembra
qualcosa del genere corriamo la maratona
pianificazione fornisce una interfaccia utente e un’API per
noi per comunicare con noi troviamo il
padroneggiare il maestro eletto attraverso
guardiano dello zoo e gestisce gli schiavi e
è qui che lanceremo il dottore, quindi il nostro
l’immagine ora sembra qualcosa di più simile
questo ognuno di questi box Bob rick
diventa un agente meses e usiamo
maratona come il meccanismo con cui noi
comunicare per poi avviare il
contenitori medici per nostro conto ora
ci sono alcune applicazioni dove
non sono consci della console e così loro
devono essere individuabili tramite un nome e un
porto e per questo abbiamo usato un open source
progetto chiamato bambù che comunica
con la maratona per riscriverla fondamentalmente
regole di routing in modo da avere una farm statica
di un albero proxy scatole dietro un carico
buttafuori e questo è come il routing a
i servizi avvengono ai bordi um e
quindi questo è fondamentalmente il setup giusto ma
la vera magia accade davvero una volta
inizi a cucire questo ambiente
insieme ad altri ambienti insieme
in una pipeline automatizzata per questo noi
ho provato ad usare Jenkins e, si spera, con
questo piccolo coinvolgimento umano come
rischio possibile andando a farci camminare attraverso
un po ‘di quello ciao
quindi abbiamo avuto un caso d’uso piuttosto buono
microservizi e questo era nel nostro SEO
pagine di destinazione su orbitz a cui erano abituati
sembra che in realtà non guardino
come questo più stanno ora alimentati da
expedia ma per il caso quindi questo
caso d’uso o questo caso studio stiamo andando
per parlarne da orbitz su a
anno fa e questo è un atterraggio in orbita
pagina idealmente se si google chicago
hotel questo è vicino al top
cercare di ottenere il più vicino possibile come
possiamo se google orbita chicago
hotel sarà al top e questi
le pagine sono composte da ciò che chiamiamo
moduli e questi moduli nella parte anteriore
fine o solo questi piccoli quadrati di
contenuto e vengono da diversi
fonti sul back-end e sul
applicazioni che provengono da dietro
fine è questo grande servizio monolitico
di cui parlerò e lo farò
parla di un modulo specifico in questo
parlare che è il modulo editoriale in
il modulo editoriale rappresenta il business
l’utente ha contribuito alla copia e alle immagini dei contenuti
ed è recuperato dal nostro CMS
sistema sul back-end che è stato alimentato
da solare quindi la nostra architettura sembrava gentile
di questo è il sito web delle orbite
sul davanti e poi il nostro contenuto
servizio di orchestrazione nel back end
chiamalo flex ma per questo discorso
si chiamerà l’orchestrazione dei contenuti
servizio e quindi è composto da tutto
questi moduli e tutti questi moduli sono
sono fondamentalmente implementazioni di un Java
interfaccia che recupererà i dati
questo è fuso con i modelli sul
front-end e quindi sono tutti tipi di
generico è come una pagina dinamica
sistema di costruzione fondamentalmente e
sfortunatamente però attraversa un sacco di
le linee di business che supportiamo
orbita in modo che gli hotel cerchino tutti i contenuti
che roba le macchine e quindi ne hai molte
di squadre perché siamo una specie di
organizzato basato principalmente su verticali e
quindi ci sono molte fonti di dati
molte squadre che contribuiscono e questo diagramma
mostra solo tre ma in realtà c’è
più come 40 moduli e probabilmente mi piace
10 squadre che contribuiscono e quindi puoi
immagina i tipi
problemi abbiamo più team che fanno un passo avanti
l’un l’altro l’inferno delle dita dei piedi
c’è una grande mancanza di resilienza con
tutti vivono nello stesso jvm che è
come sai qualcuno può abusare di a
pool di thread come sai usare un sacco di
risorse e fondamentalmente lo rovinano
tutti e così quando avete tutti questi
i team che contribuiscono è facile
qualcuno a prendere giù tutto lo stack noi
guardato le cose come osgi e
modulazione all’interno della JVM ma nessuna di
loro sembravano davvero scalare bene e
soprattutto non erano dev friendly e anche
la parte peggiore era una cadenza di rilascio
quindi il tipico servizio più ampio in orbitz
sai che lo spiegamento doveva essere
programmato e in genere lo sapevi
alcune applicazioni settimanali lo sapevi
nell’ordine dei giorni ma in ogni uscita
tipicamente contengono molti commit da
un sacco di squadre e quindi cosa abbiamo deciso di fare
fai come puoi immaginare è dividere il
moduli estendibili separatamente
microservizi e le applicazioni noi
deciso in anticipo che stiamo andando da te
sapere riscrivere le nostre piattaforme in questo modo
tutto fuori dalla scatola può essere gentile
supportare i 12 principi dei fattori che
potremmo probabilmente fare un altro discorso
ma davvero ciò che significa è semplice
configurazione stateless che consegna il tuo
schema come codice con le tue applicazioni
avvio rapido e silenzioso
così e tutti questi servizi sono
semplicemente usando HTTP con JSON o protocollo
buffer ma sono build separati
i loro repository di codice separati e
anche tecnologie separate che loro
doveva essere e così i team finiscono
sembra più così per il team dell’hotel
ha il proprio modulo nel team di ricerca
il loro modulo ecc. e ciò consente
team per gestire le proprie implementazioni
e rilascia e in realtà li dà
tutti i tipi di resilienza o come il
l’intero sistema non può venire giù da quando
questi ragazzi perché il contenuto
il servizio di orchestrazione ora sta facendo solo
API chiama queste cose e noi siamo
utilizzando interruttori automatici e timeout a
assicurarsi che un modulo non possa influenzare il
pagina in modo da sapere quando un modulo va giù
potresti trovarti su una pagina di destinazione e tu
potrebbe mancare qualche copia o come un’immagine o
qualcosa del genere ma nel complesso la pagina
sopravvissuto
e quindi l’altra cosa carina di questo
architettura era abbiamo deciso di staccare
la parte posteriore di questo grande servizio e così
il resto della compagnia non lo sa
su questo sai che l’abbiamo fatto e non l’abbiamo fatto
devi far bollire l’oceano per ricostruirlo
questo possiamo semplicemente sbucciare un modulo
spento in un momento e così è stato completamente
comunque trasparente a tutti gli altri
prima abbiamo deciso di andare continuo
consegna abbiamo avuto un processo che sembrava
un po ‘come questo e così erano le nostre build
principalmente attivato dal check-in ma alcuni
erano solo su richiesta ma noi il peggio
parte era davvero che abbiamo costruito lo stesso
codice numerose volte e così li chiamiamo
betas potresti chiamarli istantanee e
questo ha senso per librerie simili e
roba ma quando parli del tuo
servizi che sai che vogliamo davvero tutti
ogni build per essere non necessariamente
devo andare in produzione ma lo vogliamo
essere in grado di se lo volesse o se noi
volevo e così come eravamo
Facendolo, stavamo costruendo test
scartando i test degli edifici scartati
e poi è Martedì e vogliamo
rilasciamo quindi chiamiamo 12 e poi noi
costruiscilo e lo testiamo e lo distribuiamo
e a questo punto ha 20 commit in
e se qualcosa è rotto è a
un po ‘più difficile sapere cosa è cambiato e
così nel nuovo mondo vogliamo ogni fattura
essere un candidato alla release, ecco perché
abbiamo implementato la consegna continua con
Docker Jenkins ansible e marathon ma
prima vogliamo che le persone creino nuove app
se del caso noi non vogliamo che la gente
continua a taggare su cose che non si adattano
servizi esistenti che è un problema
che avevamo così abbiamo voluto ridurre il prezzo
o renderlo più economico da creare nuovo
servizi e quindi questa è la seconda volta
oggi abbiamo visto questa immagine
abbiamo usato yeoman è un è un JavaScript
libreria per progetti di ponteggi
in pratica crei solo un mucchio di
modelli di solito è utilizzato per sapere
cose più nell’ecosistema di front end
ma funziona bene per noi
costruire progetti Java Gradle e così via
fondamentalmente ci darebbe uno scheletro
progetto con tutto il nostro tipo di telaio
librerie cotte come dipendenze quindi
farebbe anche cose come ti suggerisco
piace
volevi connettere il solare?
vuoi connetterti ad un certo
database e potresti fondamentalmente
pre-configurare alcuni dei tuoi cablaggi in
e quindi il codice base è ovviamente
generato e poi lo spingiamo a un idiota
repo e in orbitz usiamo la scorta per quello
e una delle cose belle di stash
era che potremmo costruire in una specie di a
cancello all’inizio e non volevamo
cancelli ma avevamo bisogno di qualcosa per voi
sappi che non eravamo solo roba alata
in produzione, volenti o nolenti, e così facciamo
che attraverso la richiesta pull e usiamo
un plugin chiamato il plugin zona di lavoro
per la scorta che protegge fondamentalmente
padrone e lo fa in modo che non possiamo solo
unire il nostro codice significa che dobbiamo fare
estrae le richieste con un numero minimo di
recensori quindi il committer eccolo qui
fatto la richiesta pull e puoi vederlo
non è possibile unire e il revisore non può unire
o ma può rivedere il codice e
approvarlo e poi una volta che lo fa noi
ho comprato che può effettivamente unire e
quindi è l’unico ragazzo che può ottenere il nostro
roba da padroneggiare e poi una volta
succede che l’ hook di commit di Jenkins è
innescato e poi questa è l’ultima cosa
che gli umani fanno nella nostra conduttura a meno che noi
configurare in modo esplicito un pulsante in seguito
ma ne parlerò un po ‘così
il gancio di memorizzazione dello stash attiva il
Gasdotto Jenkins e il nostro primo taglio a
la pipeline aveva quattro tipi di passi e
erano solo lavori creati da Jenkins
il lavoro dsl plug-in che tipo di un modo
per definire il lavoro di Jenkins così
non sei come crearli attraverso a
UI che ovviamente non stava andando in scala
per il numero di servizi che eravamo
edificio e abbiamo avuto quattro tipi di passaggi
c’era la costruzione e la spinta che avrebbe
in realtà compila e costruisci il tuo artefatto
e spingerlo a qualche repository di risorse
avere l’accettazione del passo di implementazione
test e poi il nostro sentiero cartaceo che è
cambiare la creazione e gli aggiornamenti dei biglietti e
Parlerò di tutto questo solo un secondo
e questa è una visione semplificata di cosa
i nostri oleodotti sembrerebbero come noi
oltre 20 ambienti abbiamo fatto molto
di cose in parallelo ne abbiamo avute molte
partner che ci hanno richiesto di essere presenti
ambienti separati per esempio come
una roba American Express così
avevo bisogno del loro stack e così siamo finiti
con molti ambienti e quindi noi
volevo che il nostro gasdotto fosse in grado di fare
così veloce e anche in parallelo
e così alla fine costruiamo il
applicazione il nome dell’applicazione nel file
la versione sono davvero gli unici due pezzi
di informazioni il resto della pipeline
ha bisogno quindi parleremo dei passaggi ora
il lavoro di costruzione del gasdotto Jenkins tira il
ultimo per master build e gestisce il nostro
unit test nel nostro caso la maggior parte di questi
i servizi erano applicazioni Springwood
costruito con Gradle e quindi il nostro primo utilizzo
caso è stato solo sostenere Gradle e
così facciamo il Gradle per costruire il nostro Gradle
il file di configurazione dice hey questo è
versione 1 punto anche ora diciamo che è uno
anche questo punto, ma non è quello che siamo
effettivamente andando a pubblicare usiamo il
Jenkins costruisce il numero due ricci scusami
per creare un candidato di rilascio unico
versione giusta quindi abbiamo costruito il barattolo e
quindi interponiamo quel valore che è
diciamo che questa è la 17a build quindi ora noi
avere questo numero di versione univoco ed è
una bella versione numero che così noi
sapere quale ordine è stato distribuito e così
sappiamo che 12-18 è una versione più recente
vedrai un sacco di persone che usano le cose
come ottenere commettere hash che semplifica
questo processo ma lo rende anche così
sei come se non sapessi se è un
versione più recente o versione precedente comunque
normalmente porteremmo il nostro file di guerra o
file jar e spingerlo sul Nexus o sul nostro
fabbrica o uno di quei tipi di
repository di artefatti ma facciamo ciò che facciamo dopo
in realtà stiamo costruendo un’immagine docker e
quindi utilizziamo l’integrazione di Gradle con
docker per farlo in retrospettiva dopo di noi
ha iniziato ad avere diversi tipi di build
Vorrei che non lo avessimo ma lo abbiamo fatto
essenzialmente avevamo una finestra mobile molto semplice
file che utilizzava la nostra base orbita su Java 8
immagine e quindi vorremmo sostanzialmente copiare
questo artefatto di nuova costruzione nell’immagine
imposta la directory di lavoro e quindi imposta a
punto d’ingresso semplice e così ora abbiamo a
immagine docker e la taggiamo con la nostra
versione di rilascio unica quindi 1 2 punto 17
questo è il nostro tag immagine docker ed è
pronti a essere spinti, li usavamo per spingerli
all’hub di Docker, ma in realtà possedevamo
artefatto e in realtà ha molto
bel registro del docker e così spingiamo il nostro
artefatto versione qui e così il resto
del gasdotto tirerà questo
immagine da questo tag
da artefatto e così il resto del
la pipeline può accedervi implementare questo passo
cambiato in modo significativo mentre ci lavoravamo
e il nostro primo colpo è stato davvero giusto
utilizzare la finestra mobile è ciò che volevamo
distribuire con docker e Java Java
gli schieramenti sono stati un po ‘di dolore nel mio
culo per la mia carriera e quindi è stato bello
è stato bello poterlo spingere
là fuori ed era abbastanza affidabile in
una distribuzione molto semplice abbiamo usato uno strumento
chiamato ansible che è una configurazione
strumento di gestione che è buono per il rotolamento
attraverso i toasts e l’esecuzione remota
comandi ha un bel modulo docker e
quindi lo usiamo per primi e cosa ha fatto
puoi vedere qui in questa immagine
fare affidamento su come un inventario fisso di
ospita che rotola attraverso chiude il
vecchia versione lancia la nostra nuova versione in
questo caso 1 2 punto 17 attende il
endpoint di salute per venire online lo faremo
ne parliamo tra un minuto e poi
una volta che tutto va bene, chiudiamo il
quello vecchio passiamo al prossimo host che siamo
facendo questo in modo seriale, prendi un
mentre io ero felice di aver fatto una finestra mobile
spiegamento ma c’era un sacco di
problemi e sapevamo che ci sarebbe stato
essere problemi e noi sappiamo che li abbiamo sentiti
presto i fallimenti sono un po ‘strani, sai
parte della parte di un singolo ambiente
potrebbe fallire l’intero ambiente potrebbe
fallire, rispondi solo a quell’ospite
ripristinare l’intero ambiente
ho provato a provare a riprovare lo stiamo facendo
I file di llamo ultimamente li penso
aggiunto un po ‘di semantica try-catch in
ansible ma alla fine è stato un po ‘di
logica che non volevamo davvero possedere
e inoltre stiamo solo facendo il docker
Sam ha menzionato questo prima con le cose
come lo sciame docker non è completamente
controllando i contenitori dopo di loro
corri quindi stiamo implementando queste cose in a
ambiente cloud dove i ragazzi si chiuderanno
giù VM perché devono spostarli
a un altro host fisico quando la finestra mobile
torna indietro non sa cosa
era in esecuzione perché si tratta di una nuova finestra mobile
e così abbiamo notato semplicemente come Microsystems
scomparendo qua e là anche noi siamo
distribuire su un numero fisso di host e
così una volta riempiamo quegli host
dobbiamo creare un altro pool e quello
renderebbe le cose molto più complicate
e così sai che la risposta chiara è qui
dobbiamo usare lo scheduler e quindi noi
abbiamo deciso di provare qualcosa di nuovo che abbiamo bloccato
con ansible perché penso che sia un bel
strumento per fare distribuzioni abbiamo costruito il nostro
possedere il modulo ansibile che farebbe a
maratona schierata e penso e questo era
questo è stato un paio di anni fa, penso
al giorno d’oggi c’è probabilmente uno aperto
fonte uno disponibile per ansible che conosco
ce n’è uno per terraform ma
essenzialmente possiamo solo darglielo
nome dell’immagine con la nostra versione di rilascio
numero di istanze e ne conosci alcune
configurazione e poi maratona can
gestire tutta la complessità per noi e così
questa è la mia foto del robot Rick
immagine del server che Steve ha mostrato prima
e abbiamo appena aggiunto un nuovo tipo di locale
servizio di supporto che è l’agente mezzos
e così questo ci permette di partecipare
il cluster di mezzos e ci consente di usarlo
maratona per fare schieramenti allo stesso modo
il nostro Jenkins distribuisce il lavoro tira l’ansible
playbook ma questa volta il playbook
non importa di un set di rolling di come
o un insieme di host a cui importa
dove è la maratona e quindi solo le maratone
un’API HTTP con cui possiamo interagire
e se ci pensi è se il nostro
intero gruppo di mezzo centesimi come singolo
il computer si può pensare alla maratona è dentro
d ed è solo una semplice API HTTP e
quindi il nostro playbook lo chiama davvero
con una configurazione una cosa da notare
sebbene quella maratona sia asincrona
così quando tu lo mandi JSON it
Dice bene ho capito grazie e ritorna
e quindi dobbiamo gestirlo da soli
altrimenti il ​​nostro gasdotto sta per finire
prima ancora del primo ambiente
completato lo schieramento o il fallimento, così finiamo
questo con qualcosa di simile
strano pseudo codice HTTP ma
essenzialmente noi controlliamo il nostro libro di esercizi
vedere se esiste l’applicazione stessa
se non lo fa, facciamo un post con a
Documento JSON che specifica l’immagine
configurazione cose del genere per lo più
Docker correlati se esiste allora noi
fare un put praticamente con lo stesso
configurazione
e quindi otteniamo un ID di distribuzione indietro e
allora dobbiamo tirare questa distribuzione
punto finale fino a che scompare e
è così che sappiamo che lo era
mi piacerebbe che ci fosse un modo migliore
ma almeno allora non c’era e poi
abbiamo praticamente impostato un time out, quindi se lo fosse
dura più di due minuti
probabilmente fallito e quindi l’ansible
il modulo stesso restituirà ma
fondamentalmente usiamo il modulo ansible per
far sembrare che blocchi il resto del
pipeline in modo che la pipeline non lo fa
continua ad andare un altro pezzo del nostro
Configurazione maratona che penso sia
importante è che abbiamo diversi tipi di
una configurazione che ci occupiamo di esso
lavoro molto della configurazione che noi
usato per occuparsene come le nostre
le metriche stanno registrando la scoperta del servizio
roba del genere con cose che dovevamo fare
raccontare ogni applicazione attraverso
file di configurazione in cui è cotto
l’ infrastruttura ora e così chef
lo gestisce per noi quando si alza
i nostri agenti di Rick bot, ma ci sono
cose a cui le singole applicazioni si prendono cura
circa come i loro database o sai
un altro valore giusto cose che il nostro
ambiente specifico e
specifiche dell’applicazione consentiamo agli sviluppatori
per specificare in un file nella loro fonte
repo con l’applicazione e quelli sono
iniettato quando eseguiamo il deployment come
variabili ambientali e abbiamo a
modo diverso di gestire i segreti che
Non ho intenzione di arrivare oggi
purtroppo così dopo aver effettuato le chiamate
per maratona interagisce con i mezzos
ottenere offerte di risorse per scoprirlo
dove mettere le nostre cose e solo avuto
stanza per tre server qui così è
abbastanza ovvio dove stanno andando
mettersi in posizione ma la maratona inizia il
nuova versione giusta, quindi abbiamo il
immagine docker alle 12 alle 16 in esecuzione in blu
12 17 in esecuzione in verde lo fa dentro
parallelo questa volta che rende il nostro
schieramenti molto più veloci che è bello
richiede di avere extra
capacità di sostenere avere due di
tutto per un breve periodo durante il
distribuzione tutte le nostre applicazioni hanno
endpoint di salute probabilmente se lo sei
utilizzando la procedura guidata di boudoir drop o
qualcosa a questo punto probabilmente lo fai
anche questa è una cosa di prima classe in
maratona e così quando pubblichiamo il nostro JSON o
Metti la nostra JSON in una maratona di cui raccontiamo
i nostri endpoint di controllo sanitario e it
continua a guardare quelli durante il
dispiegamento e anche dopo e così via
dei nostri ragazzi stanno bene, siamo a 200 e così via
poi chiudiamo con grazia e distrutti
la nostra vecchia versione e la parte graziosa è
la parte importante qui la prima volta
abbiamo iniziato a giocare con ciò che eravamo
solo uccidere roba e sai che lo eravamo
ottenere guasti perché le connessioni
non poteva drenare e soprattutto
utilizzando la scoperta del servizio come console
stiamo registrando e registrando
istanze di applicazione e quando uccidiamo
loro non hanno la possibilità di farlo
e quindi è stato un disastro, ma una volta
abbiamo preso un controllo sui nostri segnali
abbastanza bene e quindi quello era uno
ambiente e ora siamo prossimi a
il prossimo ambiente così è 12 17
schierato qui e continueremo ad andare avanti
attraverso la nostra pipeline e facendo lo stesso
cosa ma la cosa bella della maratona
e questa è davvero la chiave per qualsiasi
lo schedulatore Kuber Nettie farà questo
per te immagino le versioni più recenti di
sciame docker farà questo per voi ecs
e la maratona tirano continuamente
la tua configurazione in modo che sappiano quanti
istanze di tutto ciò che ti serve
conoscere il controllo sanitario in punti e così via
terranno traccia delle cose singole
l’istanza va male scompare o se il
assegni sanitari che ritornano come un 503 o
qualcosa sa che ha bisogno di
avviare uno nuovo e lo farà per
anche tu in questo caso se l’intero nodo
scende poi le maratone ancora a guardare
e questo è un po ‘un caso stupido perché
li dovrà co-localizzare
perché ho solo due quadrati rimasti
ma uscirà a parlare con i mezzos
di nuovo e trova un nuovo posto dove mettere il
risorsa e ha trovato un posto che controlliamo
la salute sotto controllo mi scusa salute
endpoint di nuovo siamo in 200 e siamo tornati
a capacità e questo è enorme voglio dire
quello è il vero è il motivo
usare uno schedulatore penso che intendo il
L’API è carina e rende facile la scrittura
sistemi resilienti il ​​tipo di passaggio successivo è
tipo di un tipo di passo più sciolto come il nostro
fumetti e team di collaudo per test di accettazione
ha fatto questo in modo diverso a seconda del
tipo di applicazione siamo stati sempre
incoraggiare le persone a fare un test unitario
di incorporato se il tempo di costruzione tanto quanto
si potrebbe ottenere la copertura lì, ma
mentre attraversi la pipeline potresti
fare diversi tipi di test funzionali
o scatola nera che prova molte squadre
userebbe effettivamente la nostra scoperta di servizio
console di meccanismo a Joe
fare come test di base nel suo complesso
cluster ma non testare come veramente profondo
funzionalità ma solo tu sai è questo
cosa funziona e molte squadre ora
farà anche schierare un canarino
test di produzione contro questo e
allora una volta va bene allora lo faranno
distribuire l’applicazione effettiva che è
prendendo il vero traffico in seguito ma noi
reso configurabile e quindi finalmente
è la traccia cartacea di tutti i nostri
distribuzioni l’eredità pianificata
implementazioni e queste distribuzioni
richiedere i biglietti di modifica in un prodotto
chiamato servizio ora sono sicuro che alcuni di voi
l’ho usato è un sistema di bigliettazione
è molto configurabile, lo configuriamo
è pesantemente ma essenzialmente questi questi
passi che abbiamo prenotato nella nostra produzione
dispiegamenti con e quello che fanno è
estraggono le informazioni da JIRA e
immagazzinare per creare tutte le informazioni
su questo biglietto e creano un
servizio di biglietteria ora se la maratona
l’implementazione fallisce quindi chiudiamo il mercato
ha fallito e se ha successo noi
chiudilo con successo e la cosa bella
ecco che è completamente trasparente
ai nostri responsabili di rilascio e due
operazioni e così quando metti tutto
insieme ottieni qualcosa come questo e
sai che dopo questo oleodotto gestiamo il nostro
nuova versione dei moduli editoriali in
produzione tutti i nostri impegni cartacei
o completo e siamo pronti per il prossimo
commettere e quindi se lo costruisci lo faranno
vieni abbiamo costruito questo per una piccola parte di
il sito delle orbite ma una volta iniziato
consegnare le cose alla produzione in 10
minuti che altre persone volevano iniziare
facendo questo e così abbiamo dovuto ridimensionarlo
ad altre persone non solo per gli altri
applicazioni ma lo abbiamo trovato rapidamente
gestire i lavori di Jenkins è anche ingombrante
se stiamo usando il lavoro TSL, lo siamo
cambiare i gasdotti che molte squadre vogliono
riconfigurare le loro pipeline e abbiamo trovato
che sai come gestirli come erano i lavori
difficile e non potremmo rappresentarlo
codice fino a quando non abbiamo iniziato a utilizzare un plug-in
chiamato il plugin del flusso di lavoro che io
credo che ora è chiamato il gasdotto
plugin con jenkins 2 e che cosa
ci ha permesso di fare è stato configurare jenkins
lavori usando un groovy dsl e puoi vedere
un esempio qui sta specificando un Jenkins
lavoro che fa girare il modulo editoriale
il conto di Gradle
vecchio e poi ha lo sport 4dr quale
sta costruendo la nostra versione dinamica
immagine docker e quindi puoi vedere qui
che stiamo tirando il nostro libro di esercizi e
eseguendo il nostro playbook ansible per fare il
distribuire questa è ancora una pipeline statica
e non volevamo che tutti dovessero farlo
Specificare questo perché non lo facciamo
voglio sapere da 50 a 100 squadre con
microservizi che devono scrivere
codice groovy per gestire le loro pipeline
e così abbiamo fatto un ulteriore passo avanti e noi
abbiamo detto che vogliamo qualcosa di simile
pensa come una build di Travis o
qualcosa del genere ha un bel po ‘
documento che specifica la tua build in esso
anche nel nostro caso specifica la nostra build e
implementazione e altri tipi di passaggi a
correre in cereali e in parallelo in alcuni
punti e quindi abbiamo questa pipeline JSON
file a cui i team hanno automaticamente accesso
la radice del loro microservizio generato
codice e specifica le cose ad un livello più alto
livello quindi qui stiamo dicendo Gradle build
qual è il passo di costruzione di cui ho parlato
e poi puoi vedere sotto la maratona
distribuire nell’ambiente di test anche noi
permesso loro di specificare cose come
variabili d’ambiente in questo file così
potrebbero tipo di configurare tutto
sulla loro implementazione dell’applicazione e
configurazione tutto in un posto e così
quindi il nostro flusso di lavoro è diventato molto di più
complicato, ma c’era solo una delle
loro ed è stato un po ‘gestito
centralmente in modo che potremmo tipo di
standardizzato sul modo in cui il diverso
tipo di passaggi ha funzionato e così è stato
bello è diventato un po ‘più grossolano
guardando nel fatto che dovevamo analizzare
nel JSON e quindi scorrere attraverso il
passi e poi chiamarli dinamicamente
Lavori di Jenkins ma alla fine ha permesso il
squadre per distribuire qualsiasi ambiente
volevano e se volevano creare
un nuovo tipo di passo ci sarebbe solo dovuto
aggiungi un piccolo frammento al centro
pipeline e così sono iniziate molte squadre
salendo a bordo e abbiamo iniziato ad andare a
un po ‘più poliglotta di quello che avevamo
atteso e quindi le persone volevano iniziare
costruire applicazioni Python e sai andare
app e cose del genere e così noi
abbiamo deciso che dovevamo persino prendere il nostro
Jenkins ha istituito un po ‘oltre che
steve parlerà di adesso
così come puoi immaginare, proprio come il nostro codice
anche l’ambiente Jenkins aveva qualcosa in comune
evoluto o devoluto nel tempo che abbiamo avuto
una sorta di configurazione standard in cui
hai creato Jenkins, ne hai creato un po ‘
schiavi e poi nel tempo inizi
aggiungendo la versione dopo la versione di tutto il
vari strumenti per farti sapere
sei versioni di questo e dieci versioni di
quello e poi hai compatibilità
problemi e diventa piuttosto carino
veloce per non parlare della costruzione del nostro
l’applicazione monolitica era così
distruttivo per lo schiavo che avevano
costruito alcune abitudini come fare un’istantanea
dello schiavo Jenkins esegue la build e
quindi eseguire questo script di prendere di nuovo a
il suo stato precedente era orribile e
quindi sembra qualcosa di simile a te
controlla di sapere che controlli la tua
codice in esso fatturato a uno schiavo e poi
tu esegui il tuo piccolo script della macchina del tempo
questo era terribile perché significava questo
ogni schiavo poteva essere usato solo per uno
cosa giusta quindi non importa quanto sia grande
o la tua build è stata la stessa
cosa e quindi volevamo più flessibilità
per fortuna qualcuno aveva fatto qualcosa di carino
Integrazione delle menti Jenkins attraverso questo
plugin e così l’ installazione è diventata qualcosa
più lungo le linee di questo dove quando
hai fatto il tuo impegno sarebbe invece di
semplicemente programmandolo direttamente su uno schiavo
comunicarebbe con mezzos a
passare uno schiavo dinamico che era
in realtà un’immagine di un medico in molti modi
una specie di microservizio Jenkins e quindi noi
aveva uno specifico in un costante istituito per
mezze maniche che erano per fare
Jenkins costruisce come tu vedi qui questo
env e il conto è appena proceduto come
normale e poi quando abbiamo finito
fondamentalmente potevamo semplicemente conoscere lo schiavo
e abbiamo ancora la stessa cosa con
una specie di schiavi monouso e così eravamo
in grado di costruire su questo così quando
è arrivato a fare un dispiegamento che abbiamo creato
un altro tipo di schiavo che controllerebbe
fuori un playbook e gestirlo contro questo
particolare schiavo Jenkins che aveva
ansible e le librerie della maratona e
tutto ciò che sarebbe installato
comunicare con la maratona sarebbe allora
distribuire a uno schiavo mezzos separato in
questo caso l’ambiente CIA e questo
è stato fatto tutto tramite vincoli di meses e
parametri maratona e ancora quando
è stato fatto vorremmo solo nuke quel schiavo
e la capacità è pronta per il prossimo
cosa una volta che lo fai inizi
fondamentalmente ridimensionando le tue meses
infrastruttura attraverso la rete
linee di segmentazione o controllo di accesso in
In questo caso abbiamo ottenuto tre pre-produzione
ambienti abbiamo un piccolo Jenkins
ambiente fuori dal lato e quello
abbiamo mantenuto le nostre build da te che sai cestinare
altri ambienti che potremmo anche avere
diversi controlli di accesso per la produzione
e cose del genere e poi continui
ridimensionandolo ulteriormente
più centri dati multipli o
zone di disponibilità e jenkins quindi
diventa questo orchestratore su tutto
queste diverse linee e così speriamo
per concludere, spero che tu lo veda
non ho davvero parlato molto di simile
l’aspetto del servizio micro di esso ma
davvero di più intorno alle due llege che è
davvero intorno a destra abbiamo imparato oltre a
molto lungo periodo di tempo che la maggior parte di
il tempo che passi nel trattare con i lotti
di applicazioni su molte macchine
è il processo e tutto ciò che puoi
fare avanti per semplificare lo sai
capire quale processo si desidera e
lavorare a ritroso e investire
quella volta presto pagherà per
stesso credimi che vuoi averti
conosci ripetizioni ripetibili
implementazioni di cui non vuoi far parte
si fida di me e tu sai se lo sei
riuscito con successo con la tua unica app
ci vorrà un po ‘per ottenere il
prima app in corso ma se hai successo
hai un sacco di app e poi sai
per questo non ci sarà molto più lavoro
tu
tu

Please follow and like us: