Перед некоторыми сервисами спустя время встаёт задача быстро релизить свои ресурсы, например, новые версии ML-модели или шарды поисковой базы. Задача сложна тем, что пользовательский процесс может долго перезапускаться из-за десятка гигабайтов нетривиального состояния в памяти, и релиз даже мегабайтного ресурса окном на сотни подов может затянуться на часы. Всё усложняется тем, что система должна быть надёжной — нужно предусмотреть как минимум отказ источника ресурсов, проблему некорректной версии ресурса и откат на стабильную версию.
Мы написали REX — multitenant-сервис доставки динамических ресурсов, который умеет обновлять ресурс, не требуя пересборки контейнера / перезагрузки процесса. Мы уже отмасштабировали его на большинство сервисов Яндекса.
В этом докладе мы расскажем:
* как организовать обновление версии ресурса без перезагрузки процесса в контейнере;
* предоставить удобную, надёжную и масштабируемую архитектуру для решения задачи обновления динресурсов за единицы минут.