# How Tinder Eased Development Pain With Ignis

[Tinder](https://yomu.fyi/company/tinder) · Tinder · Nov 15, 2024

**Type:** Problem & solution

## Summary

Managing hundreds of microservices with disparate configurations forced Tinder engineers to deploy code to staging environments to verify every change, slowing development velocity. To shorten feedback loops, the team created Ignis, a Go-based CLI tool that lets engineers run an isolated service locally while proxying ingress and egress traffic through a multi-tenant development Kubernetes cluster. Ignis pairs with an API gateway for client testing and uses a custom Smart Router proxy to dynamically intercept downstream gRPC and HTTP requests via Kubernetes informers and header propagation. Since launching in 2019, the tool enabled Tinder to eliminate a dozen staging environments, decrease cloud spend, and accelerate onboarding, followed by a V2 release adding remote IDE support and monitoring.

## Context

Tinder operates hundreds of microservices, each with distinct networking configurations, roles, metric rollups, and environment variables. This complexity made it difficult for engineers to verify local code behavior. Developers were required to push every change to a feature branch, deploy it to a staging environment, and inspect logs and metrics to evaluate their modifications, introducing high latency in the development loop and hindering velocity.

## Approach / What changed

Tinder built Ignis, a Go-based CLI tool that swaps cluster application pods for proxy containers and links them to local development containers sharing identical environment variables and filesystem access. Ignis integrates with an API gateway for local client testing and introduces the Smart Router, a gRPC/HTTP proxy leveraging Kubernetes informer APIs to dynamically route downstream requests containing special propagated headers to developer-specific pods in a multi-tenant cluster.

## Takeaways

- Ignis replaces application containers in a development Kubernetes cluster with proxy containers that mirror production environment variables and network volume mounts on local dev machines.
- The Smart Router uses Kubernetes informers and propagated tracing-like headers to intercept and route multi-hop downstream microservice requests directly to isolated developer proxy pods.
- Adopting Ignis allowed Tinder to decommission an old development account, retire a dozen staging environments, reduce cloud spending, and accelerate developer onboarding and integration testing.

**Tags:** [Developer Experience](https://yomu.fyi/topic/developer-experience), [Go](https://yomu.fyi/topic/go), [gRPC](https://yomu.fyi/topic/grpc), [Kubernetes](https://yomu.fyi/topic/kubernetes), [Microservices](https://yomu.fyi/topic/microservices)

[Read original post](https://medium.com/tinder/how-tinder-eased-development-pain-with-ignis-40e59d6510e3)
