- Mailing Lists
- in
- How Tinder’s API Gateway Handles A Billion Swipes Per Day
Archives
- By thread 5411
-
By date
- June 2021 10
- July 2021 6
- August 2021 20
- September 2021 21
- October 2021 48
- November 2021 40
- December 2021 23
- January 2022 46
- February 2022 80
- March 2022 109
- April 2022 100
- May 2022 97
- June 2022 105
- July 2022 82
- August 2022 95
- September 2022 103
- October 2022 117
- November 2022 115
- December 2022 102
- January 2023 88
- February 2023 90
- March 2023 116
- April 2023 97
- May 2023 159
- June 2023 145
- July 2023 120
- August 2023 90
- September 2023 102
- October 2023 106
- November 2023 100
- December 2023 74
- January 2024 75
- February 2024 75
- March 2024 78
- April 2024 74
- May 2024 108
- June 2024 98
- July 2024 116
- August 2024 134
- September 2024 130
- October 2024 141
- November 2024 171
- December 2024 115
- January 2025 216
- February 2025 140
- March 2025 220
- April 2025 233
- May 2025 239
- June 2025 303
- July 2025 225
How Tinder’s API Gateway Handles A Billion Swipes Per Day
How Tinder’s API Gateway Handles A Billion Swipes Per Day
Learn how to apply Cloud SIEM best practices (Sponsored)This guide outlines a practical approach to monitoring and analyzing security events across cloud platforms—drawing on lessons learned from real-world implementations in AWS, GCP, Azure, Kubernetes, and identity providers. Disclaimer: The details in this post have been derived from the articles shared online by the Tinder Engineering Team. All credit for the technical details goes to the Tinder Engineering Team. The links to the original articles and sources are present in the references section at the end of the post. We’ve attempted to analyze the details and provide our input about them. If you find any inaccuracies or omissions, please leave a comment, and we will do our best to fix them. API gateways sit at the front line of any large-scale application. They expose services to the outside world, enforce security, and shape how clients interact with the backend. Most teams start with off-the-shelf solutions like AWS API Gateway, Apigee, or Kong. And for many use cases, these tools work well, but at some points, they might not be sufficient. Tinder reached that point sometime around 2020. Over the years, Tinder scaled to over 500 microservices. These services communicate internally via a service mesh, but external-facing APIs, handling everything from recommendations to matches to payments, needed a unified, secure, and developer-friendly entry point. Off-the-shelf gateways offered power, but not precision. They imposed constraints on configuration, introduced complexity in deployment, and lacked deep integration with Tinder’s cloud stack. There was also a velocity problem. Product teams push frequent updates to backend services and mobile clients. The gateway needed to keep up. Every delay in exposing a new route or tweaking behavior at the edge slowed down feature delivery. Then came the bigger concern: security. Tinder operates globally. Real user traffic pours in from over 190 countries. So does bad traffic that includes bots, scrapers, and abuse attempts. The gateway became a critical choke point. It had to enforce strict controls, detect anomalies, and apply protective filters without slowing down legitimate traffic. The engineering team needed more than an API gateway. It needed a framework that could scale with the organization, integrate deeply with internal tooling, and let teams move fast without compromising safety. This is where TAG (Tinder API Gateway) was born. Challenges before TAGBefore TAG, gateway logic at Tinder was a patchwork of third-party solutions. Different application teams had adopted different API gateway products, each with its own tech stack, operational model, and limitations. What worked well for one team became a bottleneck for another. This fragmented setup introduced real friction:
Here’s a glimpse at the complexity of session management across APIs at Tinder before TAG.
At the same time, core features were simply missing or difficult to implement in existing gateways. Some examples were as follows:
These weren’t edge cases. They were daily needs in a fast-moving, global-scale product. The need was clear: a single, internal framework that let any Tinder team build and operate a secure, high-performance API gateway with minimal friction. Limitations of Existing SolutionsBefore building TAG, the team evaluated several popular API gateway solutions, including AWS API Gateway, Apigee, Kong, Tyk, KrakenD, and Express Gateway. Each of these platforms came with its strengths, but none aligned well with the operational and architectural demands at Tinder. Several core issues surfaced during evaluation:
What is TAG?TAG, short for Tinder API Gateway, is a JVM-based framework built on top of Spring Cloud Gateway. It isn’t a plug-and-play product or a single shared gateway instance. It’s a gateway-building toolkit. Each application team can use it to spin up its own API gateway instance, tailored to its specific routes, filters, and traffic needs. See the diagram below for reference: At its core, TAG turns configuration into infrastructure. Teams define their routes, security rules, and middleware behavior using simple YAML or JSON files. TAG handles the rest by wiring everything together behind the scenes using Spring’s reactive engine. This design unlocks three critical outcomes:
From a developer's perspective, the experience looks like this:
TAG Boot FlowMost API gateways suffer when the configuration grows large. Routes take time to load. Filters add complexity. Some systems even parse the config on the fly, introducing latency at request time. TAG avoids this entirely by doing the heavy lifting at startup. Built on Spring Cloud Gateway, TAG extends the default lifecycle with custom components that process all configuration before traffic begins to flow. The result is a fully prepared routing engine that’s ready from the first request. Here’s how the boot flow works:
This design ensures that routing logic executes with minimal overhead. Every decision has already been made. Every route, predicate, and filter is compiled into the runtime graph. The trade-off is simple and deliberate: if something is misconfigured, the gateway fails fast at startup instead of failing slowly during production traffic. It enforces correctness early and protects runtime performance. Request Lifecycle in TAGWhen a request hits a TAG-powered gateway, it passes through a well-defined pipeline of filters, transformations, and lookups before reaching the backend. This flow is a consistent execution path that gives teams control at each stage. See the diagram below: Here’s how TAG handles an incoming request from start to finish: Reverse Geo IP Lookup (RGIL)The first step is geolocation. TAG applies a global filter that maps the client’s IP address to a three-letter ISO country code. This lightweight check powers:
The filter runs before any route matching, ensuring even invalid or blocked paths can be stopped early. Request and Response ScanningTAG captures request and response schemas, not full payloads. This happens through a global, asynchronous filter that publishes events to Amazon MSK (Kafka). The data stream enables:
The filter works off the main thread, avoiding impact on request latency. Session ManagementA centralized global filter handles session validation and updates, ensuring that session logic stays consistent across all gateways and services. There is no per-service session drift or duplicated logic. Predicate MatchingOnce preliminary filters are complete, TAG matches the request path to a configured route using Spring Cloud Gateway’s predicate engine. If no match is found, the request is rejected early. Service DiscoveryWith the route identified, TAG uses Envoy's service mesh to resolve the correct backend service. This approach decouples routing from fixed IPs or static service lists. Pre-FiltersBefore forwarding the request, TAG applies any pre-filters defined for that route. These can include:
Pre-filters run in a defined sequence, determined by the configuration. Post-FiltersAfter the backend service responds, TAG processes the output through post-filters. These often include:
Again, execution order is configurable. Final ResponseOnce all post-filters complete, the final response is sent back to the client. No surprises, no side effects. Every filter (pre, post, global, or custom) follows a strict execution order. Developers can:
This predictability is what makes TAG maintainable under load. ConclusionTAG has become the standard API gateway framework across Tinder. Instead of relying on one centralized gateway instance, each application team deploys its TAG instance with application-specific configurations. This model gives teams autonomy while preserving consistency in how routes are defined, traffic is filtered, and security is enforced. Every TAG instance scales independently, making it easy to adapt to changes in traffic patterns, feature launches, or business priorities. TAG now powers both B2C and B2B traffic, not just for Tinder, but also for other Match Group brands like Hinge, OkCupid, PlentyOfFish, and Ship. See the visualization below for this capability.
TAG’s design unlocks several long-term advantages:
Beyond current production use, TAG lays the foundation for future initiatives that require visibility and control at the API layer. References: SPONSOR USGet your product in front of more than 1,000,000 tech professionals. Our newsletter puts your products and services directly in front of an audience that matters - hundreds of thousands of engineering leaders and senior engineers - who have influence over significant tech decisions and big purchases. Space Fills Up Fast - Reserve Today Ad spots typically sell out about 4 weeks in advance. To ensure your ad reaches this influential audience, reserve your space now by emailing sponsorship@bytebytego.com. © 2025 ByteByteGo |
by "ByteByteGo" <bytebytego@substack.com> - 11:36 - 15 Jul 2025