Figure out the strategy for caching a single resource on the application level. This should make sure that once we retrieve the representation from the database, we are able to cache it on the application level and not retrieve it from the database again on next subsequent calls for the same resource.
As a proof of concept, do this for the supervisory node that has many expensive joins to retrieve from the database.
- Research on viable libraries/solutions for app caching is conducted
- Strategy/library is consulted with the tech committee (call or Discourse)
- Retrieving a resource from the database, creates an app level cache
- Retrieving the same resource checks cache and immediately retrieves the resource from the cache if it exists
- If the resource doesn't exist in the cache, the resource is retrieved from the database
- Update to the resource must invalidate the cache for this resource (or update it)
- Also want to measure before / after cache timing (p90) so that we know what improvement looks like.
- Performance test for supervisory node