Как мы сделали инициализацию библиотек в Ozon Job Android асинхронной и улучшили холодный запуск в полтора раза
Крупные мобильные приложения Ozon Tech сейчас — это десятки своих внутренних библиотек (OzonID, UiKit, OzonMaps, OzonPushSDK, Fintech и другие). Их последовательная инициализация замедляет запуск приложения. Была идея: сделать инициализацию библиотек асинхронной, но при этом безопасной. Для этого сделали универсальный Initializer с возможностью асинхронного запуска и CycleDetector зависимостей, механизм переноса состояния графа инициализации между потоками, добавили оптимизации для избежания взаимных блокировок, а также плагин для защиты библиотек от преждевременного обращения к ним. После двух итераций внедрения и устранения циклических зависимостей — выкатили в прод. Результат: ожидали ускорение 250–500 мс. По факту холодный старт p75 улучшился на 1,4 с, в несколько раз выше ожиданий, при сохранении всех метрик качества.
Спикер
Дмитрий ГлаголевРуководитель группы разработки мобильных приложений · Ozon