Разработчики программного обеспечения, работающие в сфере электронной коммерции, имеют несколько вариантов хранения данных о продуктах. Независимо от того, решите ли вы создать решение собственными силами, использовать стороннее решение или гибридный подход, первое, что вам нужно создать, — это ваш менеджер информации о продукте (PIM).
В этом посте — первом из трех частей — я покажу вам основные компоненты надежной системы управления информацией о продуктах и расскажу о технических решениях, которые необходимо принять, если вы решите создать собственную систему. Попутно я предложу некоторые вещи, на которые вам следует обратить внимание, если вы решите вместо этого использовать стороннего поставщика. К концу этой серии у вас будет информация, необходимая для того, чтобы решить, действительно ли вам нужно создавать собственный PIM или нет.
Кто такой менеджер по информации о продукте?
PIM отвечает за хранение, контроль и управление данными, которые вам нужны для маркетинга и продажи продуктов из магазина электронной коммерции. Это охватывает много вопросов, поэтому я разобью их на три основные обязанности.
Три обязанности PIM
Во-первых, ваш PIM будет хранить данные о продуктах и активах. В этой статье я подробно расскажу о типах данных, которые они могут включать, но вкратце это означает все, что вам нужно для работы вашего каталога продуктов. Структурированные данные, хранящиеся в базе данных SQL, текстовые описания и переводы, хранящиеся в CMS, изображения, хранящиеся в CDN, и таксономии, помогающие группировать ваши продукты, могут управляться вашим PIM.
Во-вторых, ваша PIM должна позволять членам вашей команды создавать и обновлять данные. В дополнение к хранению информации о вашем продукте, ваш PIM должен иметь интерфейс, который позволяет членам вашей команды создавать, импортировать и обновлять данные о продукте. Я раскрою эту тему во второй части этой серии.
Наконец, ваш PIM отвечает за предоставление данных о продуктах. Независимо от того, продаете ли вы через веб-приложение, используете стороннюю торговую площадку (например, Amazon или eBay) или поддерживаете собственные мобильные возможности покупок, ваш PIM предоставляет интерфейс, который обеспечивает доступность данных о продуктах для покупателей или реселлеров. Более подробно я остановлюсь на этой теме в части 3.
Хранение данных о продукте с помощью PIM
С точки зрения разработки программного обеспечения, одной из самых сложных частей работы масштабируемого магазина электронной коммерции является обеспечение того, чтобы данные о продуктах всегда были правильными и доступными для нужных людей. По сути, это роль системы управления информацией о продукте. Хотя данные о вашем продукте могут поступать из различных баз данных и систем управления контентом, PIM должна объединять их воедино и выступать в качестве основного источника достоверной информации.
Как разработчик, вы можете либо создать PIM с нуля, либо заплатить за PIM, предоставленный третьей стороной, например Fabric. В оставшейся части этого поста я предложу некоторые технические компромиссы, с которыми вы сталкиваетесь при выборе между этими двумя вариантами.
Продукты моделирования данных в PIM
Когда я начинаю создавать спецификации для нового программного проекта, я обычно начинаю с модели данных. Создание рабочей модели часто дает мне некоторое представление о связанной с этим сложности и помогает выявить крайние случаи, которые могут сбить разработчиков с толку позже в процессе разработки.
PIM может быть чрезвычайно сложной частью программного обеспечения, но давайте начнем с рассмотрения простой модели данных о продукте.
Эта модель включает названия продуктов, описания, категории, атрибуты, хранящиеся в виде таблицы связанных ключей и значений, и ссылки на вспомогательные изображения для каждого продукта. Эта модель данных выглядит не так уж плохо, и если она настолько сложна, насколько требуется вашей базе данных продуктов, вы сможете создать ее довольно быстро.
К сожалению, эта модель данных оставляет желать лучшего. Что делать, если вы хотите поддерживать несколько вариантов для каждого продукта? Что, если ваши продукты действительно являются «семействами продуктов» с дочерними и родительскими отношениями? Как насчет тегов или пользовательских таксономий? Как насчет плоской таблицы, которая действует как поисковый индекс?
Модель данных, которая поддерживает некоторые из этих функций, может выглядеть так:
Вы можете начать видеть сложность, присущую построению надежной модели данных о продукте. Каждая из взаимосвязей между моделями баз данных увеличивает затраты на разработку и требует рассмотрения дополнительных пограничных случаев.
Альтернативой построению собственной модели данных является использование стороннего PIM, поддерживающего эти и другие функции. Например, Fabric’s PIM поддерживает семейства продуктов, варианты, атрибуты, категории и коллекции. Это делает управление тысячами продуктов относительно простым, не требуя специального кода.
В дополнение к структурированным данным о продуктах, хранящимся в вашей базе данных, вам также потребуется поддержка мультимедийных материалов, таких как изображения, видео и загружаемые PDF-файлы. Если вы создаете свой собственный PIM, вам нужно выяснить, как хранить эти файлы и убедиться, что они оптимизированы для конечных пользователей.
Хранение мультимедиа
Варианты облачного хранилища файлов, такие как Amazon S3 и Azure Files, значительно упростили хранение статических ресурсов в облаке. Эти платформы обеспечивают автоматическое резервное копирование, API загрузки и настраиваемые правила доступа для обеспечения целостности ваших файлов.
Тем не менее, они по-прежнему требуют, чтобы вы написали код для обработки загрузки, проверки типов файлов, изменения размера изображений и сохранения указателя на изображение в базе данных. Вы также должны решить, что делать со старыми файлами (удалить их или переместить в долгосрочное хранилище, например Glacier), чтобы не платить ежемесячно растущий счет за хостинг.
Распространение медиа
Скорость имеет большое значение в электронной коммерции, и размещение всех ваших изображений в одном регионе снизит производительность вашего PIM. После того, как вы выяснили, как хранить медиаданные и прикреплять их к базе данных продуктов, вам нужно выяснить, как кэшировать их, чтобы пользователи во всем мире получали быстрый отклик при доступе к вашим медиафайлам.
Самый распространенный способ ускорить загрузку изображений — использовать CDN (Content Delivery Network). Даже с CDN большие файлы могут замедлить работу вашего интерфейса, поэтому надежный PIM должен хранить несколько размеров каждого изображения. Изображения меньшего размера можно использовать в качестве миниатюр, а изображения большего размера — на страницах сведений о продукте.
Вам редко потребуется создавать собственный CDN, но для его интеграции все же потребуется некоторая настройка и настройка. Используя PIM от Fabric, работающий от CDN, вы можете позволить им беспокоиться об оптимизации изображений и кэшировании.
Поиск вашего PIM
Опять же, скорость имеет значение в электронной коммерции, поэтому вы хотите, чтобы ваш PIM был быстрым. Для типичного поиска продуктов, когда идентификатор объекта находится в URL-адресе, ваша реляционная база данных будет работать нормально, но что, если пользователи не не знаете точно, какой продукт они ищут? Что делать, если вам нужно поддерживать нечеткий поиск по тысячам продуктов?
Оказывается, полнотекстовый поиск довольно сложен, особенно в реляционной базе данных. Если вы используете Postgres, вы можете объединить данные о вашем продукте в единое материализованное представление, а затем добавить индекс полнотекстового поиска как описано здесь. Это не касается опечаток или связанных слов, но это только начало.
Поскольку возможности полнотекстового поиска в базах данных SQL весьма ограничены, большинству разработчиков потребуется добавить специальный поисковый индекс. Elastic search и Algolia — отличные варианты, поскольку они предназначены для добавления полнотекстового нечеткого поиска к вашим данным. К сожалению, как только вы добавите поисковый индекс в свой PIM, вам придется синхронизировать его с базой данных продуктов. Дублирование данных всегда добавляет новую потенциальную точку отказа, поэтому имейте это в виду по мере роста вашего каталога продуктов.
Если вы используете Fabric в качестве безголового решения для электронной коммерции, вам не придется беспокоиться о скорости поиска. Они используют Algolia для поиска продуктов, что дает вам быстрый, безопасный, распределенный поиск в вашем интернет-магазине.
Интернационализация
Если вы создадите свой интернет-магазин исключительно для англоязычной аудитории, вы упустите значительную часть мирового рынка. Интернационализация — это процесс обеспечения того, чтобы описания, названия, спецификации и измерения вашего продукта работали вне культурных и языковых границ, и это значительно усложняет создание PIM.
В PIM есть несколько способов справиться с интернационализацией. Самый простой — добавить в базу данных столбец для каждого поддерживаемого языка. Например, чтобы добавить испанский язык в приведенную выше модель данных о продукте, вы можете добавить новый столбец для названия на испанском языке и еще один для описания на испанском языке:
Однако это не будет хорошо масштабироваться. Если вы хотите добавить поддержку еще десяти языков, вам придется добавить 20 столбцов — и это только для таблицы продуктов.
Более надежная модель интернационализации требует добавления таблицы перевода и языка. Это увеличивает нагрузку на ваши запросы к базе данных, поскольку вам придется присоединять переводы к своим продуктам в зависимости от запрошенного языка, но позволяет вашему PIM обслуживать пользователей в любой стране. Вот пример этого шаблона в упрощенной таблице продуктов выше:
Текущие улучшения и техническое обслуживание
Наконец, как скажет вам любой опытный разработчик программного обеспечения, ни один проект не может быть закончен. К тому времени, когда вы выпустите первую итерацию PIM, у вас, скорее всего, будет список новых функций и исправлений, над которыми нужно начать работать. Попутно вы узнаете, что некоторые из ваших предположений были неверны, и вам придется реорганизовать свою модель данных, чтобы поддерживать растущий каталог продуктов.
Не стоит недооценивать затраты на обслуживание пользовательского программного обеспечения. Одной из наиболее веских причин для выбора стороннего поставщика для PIM являются предсказуемые затраты, меньшее количество ошибок и постоянная поддержка.
Вывод
В общем, построение PIM с нуля обеспечивает наибольшую гибкость модели данных, но, как вы видели, это потребует много работы. Выбор стороннего поставщика с масштабируемой системой распространения данных и файлов сэкономит вам много времени на разработку и обслуживание, предлагая предсказуемую структуру затрат.
Если вы ищете надежного менеджера информации о продуктах для своего интернет-магазина, обратите внимание на Fabric. Помимо масштабируемого PIM, Fabric предлагает полный спектр автономных решений для управления вашим интернет-магазином.
В следующем посте этой серии мы поговорим об интерфейсе, который PIM должен предоставлять вашей внутренней команде. Это позволит вашим коллегам создавать, импортировать и обновлять данные о продуктах, которые вы здесь смоделировали.
Первоначально опубликовано на https://resources.fabric.inc.