Il trasporto di Tinder a Kubernetes. Messaggio da: Chris O’Brien, Direttore tecnologico

Chris Thomas, superiore tecnico Jinyong Lee, ingegnere informatico senior an avvertenza di: Cooper Jackson, ingegnere del software

Fine

Ormai coppia anni fa, Tinder ha determinato di differire la sua spianata sopra Kubernetes. Kubernetes ci ha offerto l’opportunita di eccitare Tinder Engineering verso la containerizzazione e le operazioni low-touch da parte a parte l’implementazione stabile. La produzione, la diffusione e l’infrastruttura dell’applicazione sarebbero Whiplr definite che cifrario.

Stavamo di nuovo cercando di affrontare le sfide di sequenza e tenacia. Mentre il ridimensionamento e diventato pericoloso, abbiamo addensato tormentato verso diversi minuti nell’attesa in quanto le nuove istanze EC2 diventassero online. L’idea di programmare i container e di accontentare il viavai sopra pochi secondi al posto di con pochi minuti ci e piaciuta.

Non e situazione facile all’epoca di la nostra migrazione all’inizio del 2019, abbiamo raggiunto la insieme critica all’interno del nostro cluster Kubernetes e abbiamo incominciato an incontrare varie sfide a movente del volume di guadagno, delle dimensioni del cluster e del DNS. Abbiamo risolto interessanti sfide attraverso la migrazione di 200 servizi e l’esecuzione di un cluster Kubernetes circa gradinata verso un completo di 1.000 nodi, 15.000 pod e 48.000 container durante compimento.

A muoversi da gennaio 2018, abbiamo attraversato varie fasi dello fatica migratorio. Abbiamo adepto containerizzando tutti i nostri servizi e distribuendoli con una successione di ambienti di staging ospitati da Kubernetes. an assentarsi da ottobre, abbiamo esperto an anticipare sistematicamente tutti i nostri servizi legacy contro Kubernetes. Nel termine di marzo dell’anno successivo, abbiamo indirizzato la nostra migrazione e la ripiano Tinder ora funziona solamente verso Kubernetes.

Edificare immagini verso Kubernetes

Esistono ancora di 30 repository di cifrario radice in i microservizi con attuazione nel cluster Kubernetes. Il manoscritto sopra questi repository e annotazione per diverse lingue (ad es. Node.js, Java, scalea, Go) unitamente piuttosto ambienti di runtime a causa di la stessa lingua.

Il istituzione di pubblicazione e progettato attraverso sottoporre a intervento su un “ambiente di opera” assolutamente personalizzabile in ciascun microservizio, che durante gamma e costituito da un file Docker e da una raggruppamento di comandi di shell. Laddove i loro contenuti sono pienamente personalizzabili, questi contesti di redazione sono tutti scritti seguendo un formato normalizzato. La standardizzazione dei contesti di build consente a un individuale impianto di build di condurre tutti i microservizi.

Allegoria 1–1 Processo di pubblicazione standardizzato tramite il involucro Builder

Al intelligente di ottenere la sentenza conformita tra gli ambienti di runtime, intanto che la epoca di accrescimento e prova viene impiegato lo in persona fascicolo di opera. Cio ha imposto una attacco unica laddove avevamo bisogno di trovare un modo durante confermare un ambiente di realizzazione compatto riguardo a tutta la basamento. Di deduzione, tutti i processi di composizione vengono eseguiti all’interno di ciascuno singolare involucro “Builder”.

L’implementazione del recipiente Builder ha richiesto una sfilza di tecniche Docker avanzate. Attuale scatola Builder eredita ID fruitore ambiente e segreti (ad es. Centro SSH, credenziali AWS, ecc.) che richiesto durante accedere ai repository privati ??di Tinder. Monta directory locali contenenti il ??codice radice attraverso occupare un maniera comune di memorizzare artefatti di pubblicazione. Attuale avvicinamento migliora le prestazioni, poiche elimina la abbondanza di artefatti creati in mezzo a il recipiente Builder e la macchina host. Gli artefatti di build memorizzati vengono riutilizzati la prossima avvicendamento privato di oltre configurazione.

A causa di alcuni servizi, dovevamo creare un altro involucro all’interno del Builder durante far corrispondere l’ambiente di pubblicazione con l’ambiente di runtime (ad esempio, l’installazione della libreria bcrypt di Node.js genera artefatti binari specifici della spianata). I requisiti del opportunita di pubblicazione possono rinviare entro i servizi e il Dockerfile conclusione e combinazione al viaggio.

Architettura e emigrazione del cluster di Kubernetes

Dimensionamento del cluster

Abbiamo determinato di occupare kube-aws durante il provisioning automatizzato dei cluster contro istanze Amazon EC2. All’inizio stavamo eseguendo incluso mediante un pool di nodi sommario. Abbiamo alla svelta identificato la richiesto di scostare i carichi di prodotto sopra diverse dimensioni e tipi di istanze, attraverso impiegare meglio le risorse. Il argomentazione era in quanto l’esecuzione di un gruppo spregevole di pod insieme thread pesantemente insieme produceva risultati di prestazioni piu prevedibili in noi perche farli convivere per mezzo di un elenco progenitore di pod a thread individuale.

Abbiamo optato verso:

  • m5.4xlarge a causa di controllo (Prometheus)
  • c5.4xlarge per forte di attivita Node.js (funzionante di prodotto a thread isolato)
  • c5.2xlarge per Java e Go (colmo di lavoro multi-thread)
  • c5.4xlarge durante il lentamente di verifica (3 nodi)
  • Facebook

    Bình luận

    *