PRO TALK (MICROSERVICES): Advanced Caching Patterns Used by 2000 Microservices

Natan Silnitsky, Backend Infra Developer

Natan Silnitsky is a backend-infra engineer

He is on the Data streaming team in charge of building event driven libraries and tools on top of Kafka.
Before that he was part of a task force that was responsible for building the next generation CI system at Wix on top of Google's Bazel build tool.

Has many years of experience as a developer of large scale web services - First in .Net, later in Scala.

Natan's passions include clean code, dev velocity and great software design.

Wix has a huge scale of traffic. more than 500 billion HTTP requests and more than 1.5 billion Kafka business events per day. This talk goes through 3 Caching Patterns that are used by Wix's 2000 microservices in order to provide the best experience for Wix users along with saving costs and increasing availability.  A cache will reduce latency, by avoiding the need of a costly query to a DB, a HTTP request to a Wix servicer, or a 3rd-party service. It will reduce the needed scale to service these costly requests.  It will also improve reliability, by making sure some data can be returned even if aforementioned DB or 3rd-party service are currently unavailable. The patterns include: * Configuration Data Cache - persisted locally or to S3 * HTTP Reverse Proxy Caching - using Varnish Cache * (Dynamo)DB+CDC based Cache and more - for unlimited capacity with continuously updating LRU cache on top each pattern is optimal for other use cases, but all allow to reduce costs and gain performance and resilience.