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