Tray — поставщик системы управления контентом (CMS) для электронной коммерции с более чем 20-летним опытом работы на бразильском розничном рынке. Продавцы управляют интернет-магазинами на базе инфраструктуры Tray's , которая также предоставляет услуги и интеграцию для управления бизнес-логистикой, платежами, рекламными акциями и отчетностью.
Tray входит в группу LWSA и является движущей силой сектора электронной коммерции. Tray доверяют более 180 000 клиентов, которые в совокупности заработали более 3 миллиардов долларов США на GMV в первом квартале 2024 года.

Зависимость от сторонних файлов cookie
Техническая архитектура Tray's использует сторонние файлы cookie (3PC) для предоставления сторонних функций сайтам торговцев, в частности для панели администрирования Backoffice продавца, используемой для управления магазином. Эти файлы cookie необходимы для отображения контента, предоставляемого сторонними приложениями, размещенными в доменах, отличных от домена продавца. Исследование Tray's показало, что запланированные изменения в том, как браузеры обрабатывают 3-ПК, потенциально могут нарушить эту возможность. Поскольку Tray служит критически важной инфраструктурой для многих интернет-магазинов, крайне важно, чтобы бизнес мог продолжаться в обычном режиме, даже несмотря на то, что вносятся серьезные изменения в то, как Chrome и другие браузеры обрабатывают 3-ПК.
В этом тематическом исследовании рассматривается обнаружение Tray's потенциальных сбоев, оценка потенциальных решений и успешное решение, введенное в действие, чтобы убедиться, что их сайты готовы к изменениям в 3PC.
Техническая архитектура
Микросервисы
Tray размещает все приложения витрины и бэк-офиса в своем домене Tray.com.br , и продавцы могут использовать CNAME для обслуживания этих приложений из своего собственного домена. При такой настройке покупатели будут видеть только домен магазина, например Merchant.example. Tray использует архитектуру микросервисов для предоставления функций и возможностей. В этом подходе используются независимые, автономные приложения, каждое из которых ориентировано на определенную функцию. Эти микросервисы затем группируются в области в зависимости от их функциональных возможностей:
- Магазин: включает приложения, отвечающие за функции витрины, такие как отображение продуктов, поиск и управление темами.
- Поток покупок: управляет корзиной покупок, процессом оформления заказа и взаимодействием с клиентами во время процесса покупки.
- Управление магазином: предоставляет бэк-офисные приложения для таких задач, как администрирование, отчетность и импорт данных.
- Интеграция: облегчает связь с внешними платформами для включения межрыночных списков, управления логистикой и многого другого.
Приложение бэк-офиса
Backoffice — это основное приложение в рамках Store Management, служащее центральной панелью администрирования виртуального магазина продавца на Tray . С помощью этой панели продавцы могут:
- Зарегистрировать продукты
- Настройте способы доставки и оплаты
- Создавайте рекламные акции
- Управляйте прямыми трансляциями
- Контролировать поток заказов
- Контролировать отчеты о продажах
Поскольку Backoffice объединяет множество микросервисов (некоторые из которых управляются Tray , а некоторые — сторонние компании) в едином интерфейсе, он особенно подвержен сбоям, возникающим из-за изменений в способах обработки сторонних файлов cookie.
CNAME для настройки продавца
Tray использует записи CNAME для плавной интеграции витрин.
При настройке нового магазина продавцы могут настроить CNAME для направления запросов к приложениям, размещенным в домене Tray's , лоток.com.br . Это означает, что когда клиент посещает веб-сайт продавца (например, example.com
), запись CNAME перенаправляет его в домен Tray's сохраняя при этом URL-адрес продавца в адресной строке. Это создает удобство взаимодействия с пользователем, при котором создается впечатление, что контент подается непосредственно с веб-сайта продавца.
Понимание CNAME
Записи CNAME работают аналогично переадресации вызовов на телефоне. Представьте себе, что вы звоните другу по номеру 555-0199, но он не отвечает. Вызов может быть переадресован на голосовую почту на другой номер, например 555-0100. Однако вы, вызывающий абонент, совершенно не знаете об этом перенаправлении. Телефон легко соединяет вас, а в приветствии голосовой почты по-прежнему отображается исходный номер вашего друга (555-0199).
CNAME работают для веб-сайтов таким же образом. Когда пользователь посещает веб-сайт продавца (например, example.com
), запись CNAME может незаметно перенаправить его запрос на другой сервер, например assets.example.com
. Но с точки зрения пользователя и браузера все происходит на example.com
. В адресной строке отображается URL-адрес продавца, и пользователь взаимодействует с веб-сайтом так, как если бы контент был получен непосредственно из этого домена.
Оценка потенциальных сбоев
Анализ запланированных изменений в обработке 3PC Tray's выявил сбои в работе приложения Backoffice. Когда 3PC были заблокированы, возникли проблемы при загрузке страниц из разных доменов в iframe, встроенном в серверные страницы. Это касалось внутренних доменов, принадлежавших собственным сервисам компании, а также внешних партнеров, разрабатывающих приложения, интегрирующиеся с Tray с помощью его API.
Например, представьте себе страницу backoffice.merchant.example
, на которой встроен контент, размещенный на сайте Tray.com.br и других третьих сторон. Браузеры будут рассматривать этот встроенный контент как сторонний из-за разницы в доменах, потенциально ограничивая его любыми ограничениями 3PC.
Такая установка может привести к нескольким проблемам:
- Разорванные сеансы. Заблокированные 3 компьютера могут привести к разрыву затронутых сеансов, фрагментации пользовательского опыта, требуя от пользователей многократного входа в систему, или иным образом нарушая работу или вызывая несогласованность на страницах Backoffice из-за сбоя в работе iframe.
- Проблемы интеграции. Партнерские приложения и внутренние службы, которые интегрируются с серверной частью Tray's с помощью API, могут столкнуться с аналогичными трудностями из-за ограничений 3PC.
Следующий рисунок иллюстрирует этот сценарий:
- Пользователь получает доступ к приложению Backoffice, размещенному на
merchant.example
. - Встроенные приложения размещаются в разных доменах: некоторые — на
tray.com.br
, принадлежащем Tray , а другие — на доменах сторонних поставщиков (third-party.example
). - Эта разница в доменах вызывает ограничения на 3 ПК, что потенциально может вызвать проблемы со встроенными приложениями.

Анализ зависимостей и решений сторонних файлов cookie
Тестирование критически важных пользовательских маршрутов
Тестирование и анализ, Tray's были направлены на улучшение производительности веб-сайта и удобства пользователей с упором на интеграцию со сторонними организациями и подготовку к будущему, когда многие пользователи будут просматривать веб-сайты без 3-ПК.
Tray использовал инструмент анализа конфиденциальной среды (PSAT) и Chrome DevTools для анализа ключевых пользовательских потоков для клиентов и продавцов. Это включало тестирование загрузки страниц в iframe, проверку работоспособности пользовательских сеансов и проверку того, что сторонние приложения продолжают работать должным образом. Тестирование охватывало различные роли пользователей, устройства и браузеры (включая Chrome, Firefox и Safari) для выявления потенциальных проблем кросс-браузерной совместимости. Tray использовал PSAT и Chrome Dev Tools, чтобы классифицировать файлы cookie и оценить их влияние на взаимодействие с пользователем.
Этот анализ стал важным шагом на пути к обеспечению бесперебойного и последовательного взаимодействия с пользователем и адаптации к будущему, когда сторонние файлы cookie могут быть ограничены или недоступны.
Анализ решений Privacy Sandbox
API доступа к хранилищу
Хотя API доступа к хранилищу (SAA) потенциально может решить проблемы Tray's и поддерживается всеми основными браузерами, он не лучшим образом подходит для бизнеса по двум основным причинам:
- Встроенному контенту требовался доступ только к файлам cookie того источника, в который он был встроен, а не к одним и тем же файлам cookie на нескольких сайтах.
- Подсказки браузера, связанные с SAA, не были идеальными, особенно потому, что файлы cookie не использовались для отслеживания пользователей на разных сайтах.
ЧИПСЫ
CHIPS предложила мощное решение с отличным пользовательским интерфейсом для межсайтового встраивания. Атрибут Partitioned
было легко реализовать, и он не оказал заметного влияния на взаимодействие пользователей в Chrome. CHIPS не поддерживался другими ключевыми браузерами, когда Tray вносил изменения в свой сервис, поэтому они решили переместить свои собственные встраивания на тот же сайт, что и приложение верхнего уровня, чтобы обеспечить единообразную работу во всех браузерах. Сторонний встроенный контент использует CHIPS в Chrome и открывает новое окно (собственный контекст) в других браузерах. Однако после первоначальной реализации Tray's Firefox подтвердил планы по выпуску CHIPS в ближайшее время, а Safari начал добавлять поддержку атрибута Partitioned, начиная с Technology Preview.
Мы считаем CHIPS элегантным решением и рады видеть, что оно применяется во многих браузерах. Мы решили сохранить решение CHIPS, а также перенести его на собственные сайты, чтобы иметь возможность поддерживать все браузеры еще до того, как они перейдут на CHIPS.
— Такаши Танака, технический директор Tray
Совместимость браузера, W3C и стандарты
Chrome играет ключевую роль в сообществе стандартов. Активное участие в рабочих группах и группах сообщества W3C, таких как PrivacyCG , имеет решающее значение для влияния на более широкую экосистему браузеров с целью принятия новых веб-технологий.
Privacy Sandbox работает с веб-экосистемой для постоянного развития API, таких как CHIPS, на основе отзывов и участия отрасли. Этот прозрачный и основанный на стандартах подход способствовал внедрению CHIPS в других основных браузерах.
Надежное решение зависимостей сторонних файлов cookie
Tray поддерживает продавцов и их клиентов на всех типах устройств и браузеров. Предпочтительным был бы подход, основанный исключительно на CHIPS, но были внесены дополнительные изменения для поддержки других браузеров, которые в то время не поддерживали CHIPS.
Подход Tray's к устранению сбоев, вызванных недоступностью 3PC, включал две основные стратегии.
1. Внутренние приложения
Полноценные микросервисы Tray , включая Live Shop, Dropshipping и Invoice Issuer, были обновлены таким образом, чтобы источник встроенного контента наследовал CNAME, установленный продавцом. Проще говоря, встроенный контент был обновлен так, чтобы он стал исходным для страницы, на которой он встроен, что гарантировало отсутствие сбоев из-за изменений сторонних файлов cookie.
2. Сторонние приложения
Для сторонних приложений, доступ к которым осуществляется через Backoffice, Tray реализован более динамичный подход. Вот как это работает:
- Реализация разделенного атрибута: реализация
Partitioned
атрибута cookie была сохранена для доверенных поставщиков , что позволило сторонним приложениям эффективно устанавливать файлы cookie в браузерах, поддерживающих CHIPS. - Когда сторонние файлы cookie блокируются: если браузер пользователя блокирует 3 компьютера, стороннее приложение открывается в новом (собственном) окне. Это позволяет избежать проблем с открытием и обеспечивает непрерывную работу даже при ограничениях 3PC.
- Когда разрешены сторонние файлы cookie: если браузер пользователя разрешает использование 3-х компьютеров, приложение продолжает открываться в рамках iframe, как и раньше.
Визуализация решения
Следующий рисунок иллюстрирует решение. Наследуя основной домен магазина ( merchant.example
), создается впечатление, что все встроенные приложения происходят из одного и того же источника. Это делает все виджеты независимыми друг от друга, а это означает, что ограничения 3PC не имеют значения. Поскольку все эти фреймы становятся первичными друг для друга, принципы конфиденциальности аналогичны принципам других первичных файлов cookie: они доступны только в контексте первой стороны и ограничивают возможность межсайтового отслеживания.
Любые сторонние службы, не принадлежащие Tray используют атрибут Partitioned
для установки файлов cookie CHIPS, что означает, что они также доступны только в том контексте, в котором они были установлены, и ограничивают возможность межсайтового отслеживания.

Итог
- Не существует универсального решения для обеспечения конфиденциальности в Интернете; Существует множество способов добиться беспрепятственного взаимодействия с пользователем, сохраняя при этом конфиденциальность.
- Объединение ресурсов в одном домене верхнего уровня позволяет файлам cookie работать даже при наличии ограничений на использование сторонних файлов cookie.
- CHIPS может оказаться более простым решением, чем перенос всех ресурсов на один и тот же сайт верхнего уровня.
- Решение Tray's надежно и работает во всех браузерах. Поскольку дополнительные браузеры реализуют поддержку CHIPS , его можно считать надежным кроссбраузерным решением для таких сценариев, как Tray's .