Аудіо займає набагато більше місця, ніж сам застосунок
Інтерфейс, кнопки, обкладинки та програмна логіка можуть поміститися у порівняно невеликий файл. З аудіокнигами ситуація інша. Одна довга книга містить багато годин запису, а каталог із десятків творів уже вимірюється зовсім іншими обсягами.
Якби Booka Radio включав усі аудіофайли безпосередньо у встановлюваний пакет, користувачеві довелося б завантажувати величезний обсяг даних ще до першого запуску. При цьому більшість цих книг він, можливо, ніколи не відкриє. Такий підхід витрачає пам'ять і трафік заздалегідь, не створюючи користі.
Каталог і самі аудіофайли мають різний життєвий цикл
Список книг може оновлюватися щодня: з'являються нові обкладинки, описи, автори, глави та релізи. Якщо контент жорстко зашитий у застосунок, кожна така зміна вимагала б нової версії через магазин застосунків.
У Booka Radio каталог отримується окремо від самого клієнта. Це дозволяє додавати нові книги без перевстановлення програми. Застосунок залишається інструментом для доступу до бібліотеки, а не контейнером, у який потрібно фізично запакувати всю бібліотеку перед публікацією.
Потокове відтворення завантажує тільки те, що потрібно зараз
Коли користувач відкриває конкретну главу, плеєр звертається до серверного аудіопотоку. У цей момент немає потреби завантажувати всю книгу від першої до останньої хвилини. Система отримує дані поступово й може почати відтворення раніше, ніж буде передано весь файл.
Особливо це важливо для швидкого старту. Людина очікує, що після натискання кнопки «слухати» звук почнеться за короткий час, а не після багатохвилинного очікування завантаження кількох сотень мегабайт. Потік робить це очікування пропорційним поточній дії, а не розміру всієї книги.
Перемотування також не вимагає отримувати файл з самого початку
Якщо слухач повернувся до 47-ї хвилини глави, немає сенсу спочатку передавати перші 46 хвилин. Сервер і плеєр повинні вміти починати передачу ближче до потрібної позиції. Саме тому для аудіопотоку важлива підтримка часткового отримання даних.
З боку користувача це виглядає як звичайний повзунок. Але технічно хороше потокове відтворення відрізняється від простого посилання на великий файл саме тим, що дозволяє працювати з довгим аудіо вибірково й не змушує щоразу починати завантаження з нуля.
Доступ до файлу і місце його зберігання — різні питання
Те, що аудіо не лежить усередині інсталяційного пакета, не означає, що воно є просто відкритим набором файлів. Сервер може визначати, який контент доступний гостю, безкоштовному користувачеві або власнику Premium, і видавати потік відповідно до цього стану.
Для Booka Radio такий поділ важливий: застосунок відповідає за інтерфейс і відтворення, а сервер — за актуальні дані та правила доступу. Це дозволяє змінювати каталог і права користувача без випуску нової версії клієнта щоразу, коли на сервері відбувається зміна.
Офлайн — це свідомий виняток із потокової моделі
Іноді користувач заздалегідь знає, що мережі не буде. Тоді логіка змінюється: краще один раз повністю завантажити книгу на пристрій і відтворювати її локально. Саме для цього в Booka Radio існує офлайн-режим для Premium.
Важлива різниця в тому, що офлайн-завантаження є свідомою дією. Людина сама обирає конкретні книги, які хоче взяти із собою. Решта каталогу продовжує існувати на сервері й не займає пам'ять телефона без потреби.
Розділення допомагає каталогу рости без збільшення інсталяції
Сьогодні в сервісі може бути один набір аудіокниг, а через кілька місяців — значно більший. Якщо кожна нова книга автоматично збільшувала розмір застосунку, зростання бібліотеки робило б установлення дедалі важчим для всіх користувачів, навіть для тих, кого новий твір не цікавить.
Потокова модель розв'язує цю проблему природно. Розмір клієнта майже не залежить від кількості годин у каталозі. Нові аудіокниги збільшують можливості сервісу, але не змушують кожного користувача завантажувати весь цей обсяг на свій пристрій.
Такий поділ спрощує і оновлення самого сервісу
Коли програма й контент розділені, кожна частина може змінюватися у своєму темпі. Розробники оновлюють плеєр і навігацію через нову версію застосунку, а редакція додає книги через серверну частину без очікування модерації магазину.
Для Booka Radio це фундаментальна архітектурна логіка: застосунок знає, як показати каталог і відтворити аудіо, а самі книги живуть окремо й завантажуються тоді, коли вони потрібні слухачеві. Саме завдяки цьому бібліотека може рости, не перетворюючи кожне оновлення на багатогігабайтний інсталяційний файл.
Мережевий підхід не означає постійне повторне завантаження одного й того самого
Потокове відтворення не повинно бездумно передавати ті самі дані щоразу, коли користувач на мить повернувся назад або повторно відкрив нещодавно прослуханий фрагмент. Частину даних плеєр і мережевий шар можуть тимчасово утримувати локально, щоб повторні дії не створювали зайвого трафіку.
Тобто вибір між «усе зберігати в застосунку» і «нічого не зберігати на пристрої» є хибним. Booka Radio поєднує потокову модель із локальними механізмами там, де вони доречні. Постійно на телефоні залишається тільки те, що справді має сенс зберігати, а не весь каталог про всяк випадок.