Требуется надёжно хранить файлы и пользоваться ими в различных микросервисах. Это должен быть сервис с репликацией, REST API и Java-клиентом.
Даже если проект развёрнут в облаке, желательна независимость от облачного провайдера, чтобы, например, иметь возможность переехать в другое облако, если в какой-то момент это станет целесообразным.
Если проект запущен в облаке, то стоит упомянуть, что, в отличие от нативных решений, это решение бесплатно, если хостить самому.
Работает по тому же REST API, что AWS S3, – это позволяет использовать в Java нативный S3-клиент и снижает порог вхождения.
Недостатки
REST API вносит задержку по сравнению с прямым доступом к файлам (как и S3, но в облаке AWS все используют S3 и никто не жалуется 🤷).
По некоторым отзывам, при большой нагрузке эта система, если запущена в виде Docker-контейнера, начинает сильно тормозить. В таком случае надо её запустить без Докера на отдельной виртуалке.
Лёгкость интеграции с другими облачными ресурсами.
Недостатки
Плата за использование - сразу или при превышении некоторого бесплатного порога.
Привязка проекта к облачному провайдеру (vendor lock-in). Частично нивелируется в коде созданием абстракции (Java-интерфейса) «Файловое хранилище», что позволит прозрачно подключать другие реализации. Этот подход желательно применять ко всем облачным сервисам, т.к. в будущем может потребоваться переехать в другое облако.