skip to Main Content

I have a use case in which Microservice A has to do some heavy computation periodically and stores the result in Cache (redis) – something like k8s cron job.

Microservice B depends on the Cache written by A.(B only reads. never modifies cache).

But it looks like db is being shared here. Is this a good design?
(This aws doc shows 2 different services using same redis)

2

Answers


  1. The contents of redis should be treated as ephemeral, not permanent. It’s a cache. There is nothing wrong with your design as long as your microservices, especially Microservice B, behave gracefully if they do not find what they expect in redis.

    Login or Signup to reply.
  2. This is actually a very common practice in projects using Redis (for example its the exact way you setup Redis to act as a message broker. One end writes the message and the other reads it.)

    Databases are meant do be shared, especially in the modern days where a program can consist of hundreds of micro-parts.

    You shouldn’t have any issues related to Redis, BUT you HAVE to implement a fallback mechanism for Micro-service B, to handle the case in which no value is found, for example using a timeout and then read again, or getting some default value and using that.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search