Add support for remote caching in API server
As the API server is now capable of running with multiple instances, we cannot rely on local caching for everything anymore.
We need a caching abstraction that supports both local caching (for deployments with only one API server instance), and remote caching. Alpine does not provide anything on that front, the built-in CacheManager is based on Caffeine and not customizable.
I propose to build a caching layer based on JCache. JCache is supported by Caffeine, Redisson, and more. We can make the CachingProvider implementation configurable, such that users can choose their preferred provider at deploy time. CachingProviders can be discovered by their class name via Caching.getCachingProvider("com.example.MyCachingProvider").
Implementation of this must also include a mechanism for coordinated cache invalidation.