Q:

Local user cache in posts microservice

Given following microservice architecture: 

Every post has a user, for which we want to have all information available.
Is more custom to:  

Have a local user cache in the posts microservice 
Make api calls to the user service on every request 
Store user information along with every post  

I don't particularly like the last option when storing in the database; because of duplication, but also because it doesn't update the user data when something changes.  
What is your take? 

A:

There are multiple options

Instead of storing all data about a user in the post object, store only minimum info which you can show when someone hovers over username. If a user clicks on username then you can make a separate request to user micro service to get a detailed user object.
If you really want all info of user (and you don't like option 1) then while you are sending n number of posts to UI (make a batch query to Cassandra to get all n users' objects). I am not sure if Cache has a capability to find all objects for all keys. (ideally cache should have that capability).
Similar to 2... Instead of calling user microservice for each user you can develop an api endpoint which can fetch bulk response including multiple users' data 

It is not ideal to have user cache in post microservice, in future it will make your life difficult to make sure user cache in post micro service is in sync with user micro service data. Cross dependency isn't a good option. If two independent teams are working on it, it's not ideal.

