← Back to context

Comment by mbell

9 years ago

Depends on what you're adding. Running Redis is dead simple and easy to have visibility into. RabbitMQ / Kafka are much larger undertakings.

If you already had a need for a durable database, and so you properly implemented Postgres streaming-archiving + disaster recovery, at much personal effort for your tiny startup... and you now need a durable queue as well... then "just installing Redis" won't get you there. You'll need to that whole ops setup all over again for Redis. Whereas, if your queue is in Postgres, the ops problem is already solved.

If you have a full-time ops staff, throwing another marginal piece of infrastructure on the pile isn't much of an issue. If you're your own "ops staff of one", each moving part of your infrastructure—that you need to ensure works, to guarantee you won't lose client data—is another thing slowing down your iteration speed.

  • You're making a lot of assumptions that aren't terribly valid for most use cases. Not to say that strict consistency requirements don't exist, they certainly do, but they are the exception rather than the norm. A one person startup doesn't usually care too much about losing a bit of client data.

    > If you have a full-time ops staff, throwing another marginal piece of infrastructure on the pile isn't much of an issue.

    That's a rather insulting description of Redis, care to elaborate?

    • It's nothing like insulting. Think of it like absolute and marginal costs. You have absolute infrastructure -- the sum total of all your infrastructure -- and you have marginal infrastructure -- bits and pieces that can be added and removed. If you have no Redis and then you have Redis, NewAbsoluteInfrastructure = OldAbsoluteInfrastructure + Redis, and Redis is your marginal infrastructure.

      1 reply →

Depends on the scale mostly. People often forget how not every project is Google/Facebook/Twitter.

RabbitMQ is on docker, its more or less the same work to launch as Redis these days.

(It can take a bit more tuning so I think it is unfair to say it is the SAME work, but it is seriously not a huge deal to run RabbitMQ in the post docker world)

  • Is Docker really necessary for this? I've never had any trouble just installing RabbitMQ from the package manager, and running it with only a tiny bit of initial configuration.

    • Well, if for example your entire infrastructure is in K8s, then yes you kind of need docker.

      Redis vs RabbitMQ stateful-set.yaml would be me or less the same, and something like 20 lines of yaml.

      I was never a big fan of docker for running some thing on a server, but once you start to go down the K8s path, it finally makes sense.