Page MenuHomePhabricator

Replace Nutcracker for Redis (Thumbor, API Gateway, Changeprop)
Open, Needs TriagePublic

Description

Development on Nutcracker has significantly slowed in recent years to the point that it's safe to consider it unmaintained. We should search for and test an alternative for proxying connections to Redis. We don't use Redis in Redis Cluster mode.

Current users of nutcracker:

  • Thumbor
  • API Gateway
  • Changeprop/jobqueue

Requirements:

  • Proxying of requests to Redis
  • Consistent hashing
  • Support for a fairly comprehensive set of Redis commands

Using something that SRE already have experience with would probably be a plus.

Potential candidates (not exhaustive by any means):

  • Envoy - we already have plenty of Envoy throughout the foundation and support seems quite mature
  • HAProxy - we make use of HAProxy in a few places already
  • Dynomite - a different approach and probably far more than we need features-wise
  • codis
  • Others?

Once we've chosen a replacement, we'll need to build docker images for the service as all (?) of our consumers are running in Kubernetes.

Event Timeline

Thumbor is using nutcracker for memcached sharding, thus we can happily use mrouter there :)

I am inclined to go with Envoy: it supports our use cases, has good performance (esp. with TLS), seems to have the best documentation, and most importantly is widely used here, so we have a lot of knowledge of it already.

Based on my reading, it seems to me that most other Redis proxies do not fit our use case (they care about consistency, while we care about availability and partition tolerance). Envoy explicitly supports our use case.

@hnowlan does this seem reasonable to you?

I am inclined to go with Envoy: it supports our use cases, has good performance (esp. with TLS), seems to have the best documentation, and most importantly is widely used here, so we have a lot of knowledge of it already.

Based on my reading, it seems to me that most other Redis proxies do not fit our use case (they care about consistency, while we care about availability and partition tolerance). Envoy explicitly supports our use case.

@hnowlan does this seem reasonable to you?

That seems pretty reasonable to me- it'd be cool to get a test environment set up to validate our decision.

Krinkle renamed this task from Replace Nutcracker to Replace Nutcracker for Redis (Thumbor, API Gateway, Changeprop).Nov 8 2023, 7:05 PM