До сих пор Avdan использует синхронную статичную доставку контента, когда редкие большие обновления разом приносят новые языки и карточки. Такая модель имеет ряд весомых недостатков:
1. Все языки хранятся в общем документе что делает их непозволительно сильно связанными друг с другом. На практике это означает, что один язык с полностью готовыми материалами не может быть выпущен до завершения подготовки всех остальных языков. Эта связанность также сильно усложняет добавление собственного, отличительного материала какому-либо языку, так как в таблице всё ссылается на общие ячейки, и подобные расхождения ведут к "провалам".
2. Медиафайлы по каждому из языков также хранятся в общей папке внутри приложения. Скажем, если на текущей стадии в среднем языки весят по 10MB, и в приложении имеется 10 языков, то общий вес приложения, вдобавок к собственно исполняемым файлам (~20MB), увеличивается на 100MB. Со временем суммарный размер будет ощутимо расти, всё более нагружая устройство. Конечно, пользователю совершенно нет нужды держать весь этот объём сверх того, что прямо относится к его языку.
3. Поскольку весь контент статично спаян с установщиком приложения, то единственный способ править материалы — обновление через мобильные магазины. Это лишает нас возможности быстро вносить исправления и оперативно реагировать на обратную связь. Дело в том, что в GooglePlay и AppStore каждое обновление проходит через многодневные проверки перед одобрением к публикации. И хотя безопасность платформ важна, текущий процесс несёт весомые издержки для разработчиков, на что справедливо жалуется и Дуров. Мы считаем, что доставка наших продуктов в Махачкалу или Нальчик не должна зависеть от загруженности офисов Google и Apple в Калифорнии.
Итак, приведённые проблемы не были столь критичны пока приложение имело лишь пару языков. Однако с ростом как количества языков, так и объёма контента в каждом языке, вкупе со стремлением внедрять новые функции, такая операционная модель более не является для нас приемлемой. Поэтому Avdan подвергается полной реконструкции под новую облачную архитектуру.
Не вдаваясь глубоко в детали технической реализации (интересующиеся могут ознакомиться с исходным кодом), перечислим главные улучшения:
1. Громадный общий документ был разбит, и теперь каждый язык имеет собственную таблицу. Наличие каких-либо уникальных карточек или отличающихся переводов более не доставляет неудобств.
2. Все языковые материалы хранятся на полноценных серверах, службы которых в автоматическом режиме пакуют текстовые таблицы переводов и соответствующие им медиафайлы в компактные ZIP-архивы.
3. При первом открытии и выборе языка приложение запрашивает оптимизированные для загрузки наборы карт. Затем, при последующих запусках, приложение сверяет локальные данные с сервером, при необходимости запрашивая обновленные файлы.
4. Наконец, новая облачная архитектура вместе с доработанным клиентом приближает Avdan к статусу платформы, удовлетворяя первые 2 из 3 критериев. И хотя в ближайшие месяцы мы не будем готовы показать открытые инструменты создания пользовательских наборов карт, мы уверенно движемся в этом направлении и продолжаем наращивать технологическую базу.
Сейчас мы находимся на финальной стадии тестирования системы и готовим последние материалы. Надеемся завершить в ближайшие недели, после чего Avdan выходит на новый уровень. На картинке изображена общая схема новой инфраструктуры, а на видео — демонстрация первой полной загрузки кабардинских данных (13 сек. на WiFi пригорода Махачкалы довольно неплохо).
Post #243
3.17K