Фон

Первый шаг в улучшении SEO для любого веб-приложения - убедиться, что поисковые системы могут индексировать каждый фрагмент контента. Поисковые системы сканируют страницы, переходя по ссылкам на каждой просматриваемой странице. Однако, если на сайте много страниц, которые не связаны между собой, поисковые системы никогда не смогут сканировать большую часть контента. Так обстоит дело с Vevo. У нас есть сотни тысяч видеороликов и сотни тысяч художников в четырнадцати географических регионах, поэтому, чтобы убедиться, что все просканировано, мы используем карты сайта.

Структура сайта Vevo довольно проста. Наша основная функция - конечно же, воспроизведение музыкальных клипов. Видео связаны с художниками, которые их создают, а у художников может быть много видео. Кроме того, у нас есть списки пользователей и плейлисты, однако, поскольку они могут быть как общедоступными, так и частными, и их содержание имеет тенденцию часто меняться, мы решили пока не включать их в наши карты сайта.

Что такое карты сайта?

Карты сайта - это XML-документы, которые содержат небольшой объем метаданных для определенной страницы на веб-сайте. В простейшей форме карта сайта - это просто список URL-адресов, которые поисковые системы должны сканировать. Базовая карта сайта выглядит так:

Если ваш сайт разделен по странам, как у Vevo, вы также можете добавить те альтернативные URL-адреса, которые содержат такое же содержание. Например:

С более сложными страницами вы можете добавить дополнительную информацию о веб-странице. Google поддерживает дополнительные типы мультимедиа видео, изображения и новости. Например, для сайта с музыкальными видео, такого как Vevo, мы можем добавить метаданные о каждой из страниц с видео. Метаданные, включая название, длину, количество просмотров и описание видео. Пример файла Sitemap для видео может выглядеть так:

Это много данных, которые нужно собирать и обновлять по каждому музыкальному видео на Vevo! Итак, как мы смогли это сделать? Мы создали набор инструментов для работы с картами сайта, известный как Magellan.

Дополнительные ресурсы Sitemap:

Магеллан

Magellan - это инструмент Vevo для создания файлов Sitemap, созданный с использованием бессерверных функций Javascript, развернутых в AWS Lambda. Это набор лямбда-выражений, которые создают, отслеживают и обновляют файлы карты сайта на основе изменений в каталоге Vevo. Пять основных функций Magellan: заполнение, приемник, создание, индексирование и карта сайта.

Вместе эти функции Lambda позволяют Vevo создавать карты сайта, которые каталогизируют каждое отдельное видео, исполнителя и прочие страницы на Vevo.com. Ниже представлена ​​диаграмма архитектуры Magellan.

Заполнение

Эта Lambda делает большую часть тяжелой работы для Magellan. Он запрашивает каждую страницу видео и исполнителей из Vevo API, чтобы извлечь всю информацию, необходимую для создания записи карты сайта. Он обрабатывает эти данные с помощью функции перевода, которая преобразует данные в то, что ожидается в карте сайта, и вставляет переведенную запись в базу данных Aurora в системе AWS RDS.

пример декоратора перевода:

Поскольку существует очень много частей контента, для которых нам нужно это сделать, а лямбда-выражения имеют жесткое ограничение по времени в пять минут, лямбда-функция обратного заполнения должна удерживать курсор в том месте, где оно находится в каталоге, и запускать другой экземпляр себя, когда время заканчивается. Таким образом, Lambda может выполнить всю работу. Однако с этой техникой есть один нюанс. Ошибка в коде могла вызвать бесконечный цикл. Если по какой-либо причине это происходит во время процесса обратной засыпки, единственный способ остановить функцию - установить максимальное время на 1 секунду.

Теоретически эту функцию нужно запускать только один раз для каждого типа ресурса (видео или исполнителя), просто для первоначального заполнения базы данных. Из-за нечастости использования он запускается вручную через консоль AWS.

Получатель

Выполняются два экземпляра этой лямбда-функции. Один для видео, другой для художников. Эти функции запускаются потоком AWS Kinesis, который запускается при создании, обновлении или уничтожении любого актива. Их цель - обеспечить синхронизацию базы данных с каталогом Vevo.

Они работают аналогично функции восстановления Backfill в том смысле, что когда новое обновление поступает через поток Kinesis, оно берет обновленные данные из Vevo API и обновляет запись в базе данных.

Карта сайта

Остальную тяжелую работу выполняет Sitemap Lambda. Эта Lambda отвечает за создание единого документа карты сайта. Он принимает в качестве аргументов тип актива, страну и номер страницы, запрашивает эти конкретные элементы из базы данных, преобразует эти записи в XML и загружает все это в AWS S3.

Основным преимуществом архитектуры Lambda является ее масштабируемость с возможностью пакетирования. Это позволяет нам запускать экземпляр этой функции для каждой страницы карты сайта, которую нам нужно создать. Из-за ограничений протокола 50 000 элементов или 50 МБ это может быть около 15 карт сайта для каждой территории. Создание всех карт сайта одновременно гарантирует, что у нас не будет условий гонки с добавлением новых ресурсов в процессе сборки.

Одна из проблем с этой функцией - убедиться, что вы выбрали правильный набор данных из базы данных. В одной карте сайта будет около 50 000 видео, взятых из набора видео, которые имеют права на просмотр в указанной стране, включены и имеют дату публикации, предшествующую сегодняшней дате. Чтобы упростить эту задачу, мы создали класс интерфейса MySQL, который позволяет просто составлять сложные SQL-запросы. Например, мы можем составить предложение WHERE следующим образом:

После того, как мы собрали подмножество записей, которые мы ищем, последние шаги - просто создание и загрузка структуры XML. Для этого мы используем простой пакет npm, js2xmlparser. Это позволяет нам составлять простые объекты JSON, которые сопоставляются с правильной схемой XML. Для загрузки мы используем библиотеку AWS и указываем ей правильную корзину S3.

Создать

Генерация лямбды относительно проста. Его основная функция - анализировать размер базы данных и организовывать создание каждой карты сайта для каждой территории. Например, для построения карт сайта для Великобритании эта лямбда будет подсчитывать все действительные записи в базе данных, у которых есть права на просмотр в Великобритании. Затем он отправляет сообщение SNS в Sitemap Lambda для каждой карты сайта, которая должна быть создана для Великобритании. Этот процесс происходит для каждой из доступных территорий. Lambda также инициирует создание каждого файла индекса карты сайта и карты сайта для базовых URL-адресов Vevo. Генерация лямбда запускается по таймеру. Это гарантирует, что записи карты сайта никогда не устареют более чем на пару часов.

Индекс

На основе анализа Generation Lambda, Index Lambda создает точку входа для карты сайта территории. Файл индекса карты сайта - это очень простой XML-документ, в котором каталогизируется расположение всех отдельных карт сайта для территории. Эта лямбда инициируется генерацией лямбда.

Преимущества Magellan

Внедрив инструмент карты сайта Magellan, мы можем указывать непосредственно на каждый элемент в нашем каталоге. Вместо того, чтобы нырять по страницам, на которые есть ссылки с других наших страниц, робот Google теперь точно знает, где находится наш контент, какие страницы являются дубликатами и приоритет каждой страницы. Это помогает поисковому роботу определить, на что следует потратить свое ограниченное время, и в результате мы увидели, что количество страниц, сканируемых за день, резко возросло почти в десять раз.

Система поиска Magellan и синхронизированная генерация карты сайта гарантируют, что списки Google никогда не устареют, а ссылки никогда не будут повреждены. Благодаря меньшему количеству ошибок и битых страниц наша репутация в Google растет, и мы можем видеть больше показов, рейтингов и процент переходов.

Многие факторы внесли свой вклад в усилия и успех Vevo в области SEO, но наиболее важным и действенным было поддержание стабильно точных карт сайта с помощью нашего набора инструментов, известного как Magellan.