March 16, 2022 at 6:34 am

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

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

Chris Thomas, responsabile specialistico Jinyong Lee, ingegnere informatico senior a cura di: Cooper Jackson, ingegnere del programma

Motivo

Ormai coppia anni fa, Tinder ha deciso di anticipare la sua programma riguardo a Kubernetes. Kubernetes ci ha offerto l’opportunita di istigare Tinder Engineering verso la containerizzazione e le operazioni low-touch obliquamente l’implementazione invariabile. La esecuzione, la ripartizione e l’infrastruttura dell’applicazione sarebbero definite mezzo manoscritto.

Stavamo di nuovo cercando di contrastare le sfide di scala e tenacia. Qualora il ridimensionamento e diventato studioso, abbiamo spesso faticoso verso diversi minuti nell’attesa cosicche le nuove istanze EC2 diventassero online. L’idea di predisporre i container e di accudire il guadagno per pochi secondi in cambio di in pochi minuti ci e piaciuta.

Non e status accessibile nello spazio di la nostra spostamento all’inizio del 2019, abbiamo raggiunto la complesso esame all’interno del nostro cluster Kubernetes e abbiamo iniziato a trovare varie sfide a molla del volume di raggiro, delle dimensioni del cluster e del DNS. Abbiamo risolto interessanti sfide verso la spostamento di 200 servizi e l’esecuzione di un cluster Kubernetes sopra scala durante un completo di 1.000 nodi, 15.000 pod e 48.000 container sopra compimento.

A allontanarsi da gennaio 2018, abbiamo attraversato varie fasi dello fatica migratorio. Abbiamo incominciato containerizzando tutti i nostri servizi e distribuendoli mediante una serie di ambienti di staging ospitati da Kubernetes. an andarsene da ottobre, abbiamo incominciato a rinviare metodicamente tutti i nostri servizi legacy su Kubernetes. Nel giro di marzo dell’anno appresso, abbiamo finalizzato la nostra migrazione e la trampolino Tinder occasione funziona solamente circa Kubernetes.

Disporre immagini a causa di Kubernetes

Esistono piu di 30 repository di cifrario radice durante i microservizi per esecuzione nel cluster Kubernetes. Il cifrario durante questi repository e scrittura sopra diverse lingue (ad es. Node.js, Java, gradinata, Go) mediante con l’aggiunta di ambienti di runtime in la stessa pezzo.

Il impianto di opera e progettato durante eseguire un intervento chirurgico su un “situazione di compilazione” del tutto personalizzabile attraverso ciascun microservizio, che per varieta e costituito da un file Docker e da una sequela di comandi di shell. Laddove i loro contenuti sono assolutamente personalizzabili, questi contesti di redazione sono tutti scritti seguendo un edotto stereotipato. La standardizzazione dei contesti di build consente a un personale impianto di build di governare tutti i microservizi.

Aspetto 1–1 udienza di pubblicazione uniformato passaggio il contenitore Builder

Al morte di raggiungere la prassi unione fra gli ambienti di runtime, all’epoca di la punto di miglioramento e selezione viene utilizzato lo uguale udienza di raccolta. Cio ha imposto una gara unica quando avevamo opportunita di progettare un prassi a causa di garantire un camera di costruzione costante su tutta la piattaforma. Di ripercussione, tutti i processi di compilazione vengono eseguiti all’interno di unito singolare involucro “Builder”.

L’implementazione del scatola Builder ha richiesto una sequela di tecniche Docker avanzate. Presente contenitore Builder eredita ID utente camera e segreti (ad es. Chiave SSH, credenziali AWS, ecc.) appena richiesto verso accedere ai repository privati ??di Tinder. Salto directory locali contenenti il ??codice origine a causa di portare un maniera ordinario di memorizzare artefatti di pubblicazione. Codesto accostamento migliora le prestazioni, dacche elimina la quantita di artefatti creati in mezzo a il involucro Builder e la dispositivo host. Gli artefatti di build memorizzati vengono riutilizzati la prossima cambiamento privo di al di la struttura.

Attraverso alcuni servizi, dovevamo fare un diverso involucro all’interno del Builder per far soddisfare l’ambiente di pubblicazione insieme l’ambiente di runtime (ad campione, l’installazione della libreria bcrypt di Node.js genera artefatti binari specifici della programma). I requisiti del eta di composizione possono distinguersi tra i servizi e il Dockerfile finale e modesto al ascesa.

Composizione e trasferimento del cluster di Kubernetes

Dimensionamento del cluster

Abbiamo risoluto di usare kube-aws verso il provisioning automatizzato dei cluster su istanze Amazon EC2. All’inizio stavamo eseguendo totale per un pool di nodi vago. Abbiamo rapidamente identificato la poverta di dividere i carichi di sforzo per diverse dimensioni e tipi di istanze, in usufruire soddisfacentemente le risorse. Il riflessione evo cosicche l’esecuzione di un gruppo basso di pod insieme thread pesantemente accordo produceva risultati di prestazioni piuttosto prevedibili in noi perche farli convivere con un talento principale di pod a thread unico.

Abbiamo optato verso:

  • m5.4xlarge a causa di controllo (Prometheus)
  • c5.4xlarge attraverso accusa di fatica Node.js (carico di attivita a thread individuale)
  • c5.2xlarge durante Java e Go (forte di fatica multi-thread)
  • c5.4xlarge in il piano di verifica (3 nodi)
  • 0 likes Uncategorized
    Share: / / /