Chris Thomas, Direttore esperto Jinyong Lee, ingegnere informatico senior an avvertenza di: Cooper Jackson, ingegnere del programma
Fine
Ormai coppia anni fa, Tinder ha marcato di smuovere la sua trampolino verso Kubernetes. Kubernetes ci ha offerto l’opportunita di calcare Tinder Engineering richiamo la containerizzazione e le operazioni low-touch di traverso l’implementazione inalterabile. La creato, la ripartizione e l’infrastruttura dell’applicazione sarebbero definite maniera cifrario.
Stavamo di nuovo cercando di aggredire le sfide di successione e perseveranza. In quale momento il ridimensionamento e diventato arduo, abbiamo addensato doloroso a causa di diversi minuti nell’attesa che le nuove istanze EC2 diventassero online. L’idea di fissare i container e di occorrere il traffico sopra pochi secondi anzi con pochi minuti ci e piaciuta.
Non e status facile nel corso di la nostra migrazione all’inizio del 2019, abbiamo raggiunto la agglomerato appunto all’interno del nostro cluster Kubernetes e abbiamo incominciato an incrociare varie sfide a motivo del libro di guadagno, delle dimensioni del cluster e del DNS. Abbiamo risolto interessanti sfide verso la spostamento di 200 servizi e l’esecuzione di un cluster Kubernetes su scala attraverso un complessivo di 1.000 nodi, 15.000 pod e 48.000 container durante effettuazione.
A allontanarsi da gennaio 2018, abbiamo attraversato varie fasi dello lavoro migratorio http://hookupdate.net/it/phrendly-review/. Abbiamo aderente containerizzando tutti i nostri servizi e distribuendoli per una sequenza di ambienti di staging ospitati da Kubernetes. a partire da ottobre, abbiamo aderente a rimandare sistematicamente tutti i nostri servizi legacy sopra Kubernetes. In marzo dell’anno successivo, abbiamo finalizzato la nostra migrazione e la piattaforma Tinder dunque funziona solamente riguardo a Kubernetes.
Organizzare immagini durante Kubernetes
Esistono piuttosto di 30 repository di combinazione sorgente a causa di i microservizi durante compimento nel cluster Kubernetes. Il manoscritto per questi repository e messaggio durante diverse lingue (ad es. Node.js, Java, successione, Go) per mezzo di piu ambienti di runtime durante la stessa vocabolario.
Il metodo di compilazione e progettato durante eseguire un intervento chirurgico su un “situazione di compilazione” assolutamente personalizzabile a causa di ciascun microservizio, in quanto mediante genere e costituito da un file Docker e da una sequela di comandi di shell. Mentre i loro contenuti sono assolutamente personalizzabili, questi contesti di composizione sono tutti scritti seguendo un fatto standardizzato. La standardizzazione dei contesti di build consente a un individuale impianto di build di dirigere tutti i microservizi.
Aspetto 1–1 andamento di pubblicazione normalizzato corso il scatola Builder
Al fine di raggiungere la massima armonia con gli ambienti di runtime, all’epoca di la periodo di sviluppo e test viene consumato lo identico corso di redazione. Cio ha imposto una sfida unica qualora avevamo stento di congetturare un atteggiamento durante coprire un camera di casa retto circa tutta la piattaforma. Di conseguenza, tutti i processi di raccolta vengono eseguiti all’interno di unito particolare recipiente “Builder”.
L’implementazione del involucro Builder ha richiesto una raggruppamento di tecniche Docker avanzate. Presente involucro Builder eredita ID fruitore limitato e segreti (ad es. Soluzione SSH, credenziali AWS, ecc.) mezzo richiesto verso accedere ai repository privati ??di Tinder. Accoppiamento directory locali contenenti il ??codice origine verso sentire un atteggiamento consueto di ricordare artefatti di pubblicazione. Attuale avvicinamento migliora le prestazioni, dato che elimina la abbondanza di artefatti creati in mezzo a il contenitore Builder e la apparecchio host. Gli artefatti di build memorizzati vengono riutilizzati la prossima evento privato di ulteriore sembianza.
Per alcuni servizi, dovevamo creare un seguente involucro all’interno del Builder durante far confarsi l’ambiente di redazione insieme l’ambiente di runtime (ad dimostrazione, l’installazione della scaffale bcrypt di Node.js genera artefatti binari specifici della piattaforma). I requisiti del opportunita di compilazione possono prorogare entro i servizi e il Dockerfile conclusione e riservato al viaggio.
Edificio e trasferimento del cluster di Kubernetes
Dimensionamento del cluster
Abbiamo sicuro di occupare kube-aws in il provisioning automatizzato dei cluster sopra istanze Amazon EC2. All’inizio stavamo eseguendo tutto mediante un pool di nodi sommario. Abbiamo velocemente identificato la necessita di separare i carichi di prodotto per diverse dimensioni e tipi di istanze, in usufruire ideale le risorse. Il discussione periodo cosicche l’esecuzione di un bravura inferiore di pod unitamente thread pesantemente insieme produceva risultati di prestazioni ancora prevedibili per noi giacche farli convivere unitamente un competenza progenitore di pod a thread unico.
Abbiamo optato a causa di: