Прямая трансляция презентации iPhone 6 и Apple Watch с самого начала не задалась. У многих пользователей, включая меня, были проблемы с её просмотром. Вначале я грешил на проблемы у облачного сервиса Akamai, но исследование страницы сайта Apple показало, что больше всего проблем возникло из-за того, как они настроили Amazon S3 и кое-каких других элементов сайта.
В отличие от предыдущей прямой трансляции, в этот раз они решили при помощи JSON добавить интерактивности в страничку, и показывать твиты, относящиеся к событию, внизу страницы. В результате этого страница обновлялась несколько раз в секунду. Из-за решения использовать JSON (прим. перев. – мне кажется, что автор путает JSON и Ajax) сайт перестал кешироваться. Обычно, Apple используют кеширование от Akamai для таких трансляций, однако в этот раз кэшировать страницу было нельзя, что привело к сильному проседанию скоростей загрузки страницы и отображения видеопотока. А так как в Apple вставили видео в страницу, тормоза страницы привели к тормозам видео. В Akamai не захотели комментировать эту проблему, но судя по коду страницы, у них всё равно не получилось бы её кэшировать. Из-за этого также у менял падал Safari, когда я пытался открыть страницу с презентацией на iPad.
Из-за всех этих обновлений страниц плееру пришлось искусственно занижать качество видео, потому что на стороне сервера было слишком много запросов. Кроме того Apple ошиблись и транслировали через Akamai видео с неправильной звуковой дорожкой, поэтому первые 27 минут видео шло на иностранном (для автора статьи) языке. Кто-то из Apple неправильно сделал видео, к тому же у них ещё наблюдалась рассинхронизация звука и картинки. Кроме того, мне кажется я уловил момент, когда Apple пришлось один раз перезагружать сервер, кодировавший видео, уже после того, как презентация началась – из-за этого вылезали ошибки типа «не могу загрузить видео» и «нет права доступа».
Изучая метаданные страницы, можно установить, что Apple
Akamai были единственной CDN, которую использовали в Apple. Это показали traceroute с разных точек планеты. И так как у них не было возможности кэшировать страницу трансляции, быстродействие её сильно упало. Если нельзя кешировать страницу на периферийном сервере облачного сервиса, все запросы отправляются к центральному серверу, из-за чего теряется весь смысл распределённой сети. На приведённом графике, полученном от стороннего сервиса Cedexis, видно падение доступности серверов Akamai в Западной Европе со 100% до 96.5% во время трансляции.
По полученным из разных источников данных, в пике трансляция видеопрезентации занимала канал в 6-8 Tbps. Для сравнения, трансляция чемпионата мира занимала в пике 6.8 Tbps. Так что никаких экстраординарных нагрузок CDN не испытывала.
Итог: кодирование видео, трансляция, яваскрипт, видеоплеер, единственный сервер на S3 и постоянные рефреши страницы и привели к многочисленным проблемам презентации. Можно было бы свалить всё на CDN, но как видно, не это было основной причиной – просто акция была плохо спланирована и проведена.
Автор: SLY_G