Pendekatan Tray terhadap perubahan cookie pihak ketiga

Tray adalah penyedia Sistem Pengelolaan Konten (CMS) e-commerce dengan pengalaman lebih dari 20 tahun melayani pasar retail Brasil. Penjual menjalankan toko online di infrastruktur Tray's, yang juga menyediakan layanan dan integrasi untuk mengelola logistik, pembayaran, promosi, dan pelaporan bisnis.

Tray adalah anggota grup LWSA, dan merupakan pendorong di sektor e-commerce. Tray dipercaya oleh lebih dari 180.000 klien yang, secara gabungan, menghasilkan GMV lebih dari US$3 miliar pada kuartal pertama tahun 2024.

Halaman beranda situs tray.com.br

Ketergantungan pada cookie pihak ketiga

Arsitektur teknis Tray's menggunakan cookie pihak ketiga (3PC) untuk menyediakan fungsi pihak ketiga ke situs penjual, terutama untuk panel administrasi Backoffice penjual yang digunakan untuk pengelolaan toko. Cookie ini sangat penting untuk merender konten yang ditayangkan dari aplikasi pihak ketiga yang dihosting di domain selain domain penjual. Riset Tray's mengungkapkan bahwa perubahan yang direncanakan pada cara browser menangani 3PC berpotensi mengganggu kemampuan ini. Karena Tray berfungsi sebagai infrastruktur penting bagi banyak retailer online, bisnis harus dapat terus berjalan seperti biasa—bahkan saat perubahan utama dilakukan pada cara Chrome dan browser lainnya menangani 3PC.

Studi kasus ini membahas penemuan Tray's tentang potensi gangguan, evaluasi mereka terhadap solusi potensial, dan solusi yang berhasil diterapkan untuk memastikan situs mereka siap menghadapi perubahan pada 3PC.

Arsitektur teknis

Microservice

Tray menghosting semua aplikasi etalase dan back-office di domainnya, tray.com.br, dan penjual dapat menggunakan CNAME untuk menayangkan aplikasi ini dari domain kustom mereka sendiri. Dengan penyiapan ini, pembeli hanya akan melihat domain toko, seperti merchant.example. Tray memanfaatkan arsitektur microservice untuk memberikan fitur dan kemampuan. Pendekatan ini menggunakan aplikasi mandiri yang independen yang masing-masing berfokus pada fungsi tertentu. Microservice ini kemudian dikelompokkan ke dalam cakupan berdasarkan kemampuan fungsional:

  • Toko: Mencakup aplikasi yang bertanggung jawab atas fitur halaman retailer seperti tampilan produk, penelusuran, dan pengelolaan tema.
  • Alur Pembelian: Mengelola keranjang belanja, proses checkout, dan interaksi pelanggan selama perjalanan pembelian.
  • Pengelolaan Toko: Menyediakan aplikasi back-office untuk tugas seperti administrasi, pelaporan, dan impor data.
  • Integrasi: Memfasilitasi koneksi dengan platform eksternal untuk mengaktifkan listingan lintas marketplace, mengelola logistik, dan lainnya.

Aplikasi backoffice

Backoffice adalah aplikasi inti dalam Pengelolaan Toko, yang berfungsi sebagai panel administrasi pusat untuk toko virtual penjual di Tray. Melalui panel ini, penjual dapat:

  • Mendaftarkan produk
  • Mengonfigurasi metode pengiriman dan pembayaran
  • Buat promosi
  • Mengelola siaran live
  • Mengelola alur pesanan
  • Memantau laporan penjualan

Karena Backoffice menggabungkan banyak microservice–beberapa dioperasikan oleh Tray dan beberapa dioperasikan oleh pihak ketiga–dalam satu antarmuka, Backoffice sangat rentan terhadap gangguan yang dihasilkan dari perubahan cara cookie pihak ketiga ditangani.

CNAME untuk penyesuaian penjual

Tray menggunakan data CNAME untuk mengintegrasikan halaman beranda dengan lancar.

Saat menyiapkan toko baru, penjual dapat menyiapkan CNAME untuk mengarahkan permintaan ke aplikasi yang dihosting di domain Tray's, tray.com.br. Artinya, saat pelanggan mengunjungi situs penjual (seperti example.com), data CNAME akan mengalihkan mereka ke domain Tray's sekaligus mempertahankan URL penjual di kolom URL. Hal ini akan memberikan pengalaman pengguna yang lancar karena konten akan ditayangkan langsung dari situs penjual.

Memahami CNAME

Data CNAME berfungsi mirip dengan penerusan panggilan di ponsel. Bayangkan Anda menelepon teman di 555-0199, tetapi dia tidak menjawab. Panggilan mungkin diteruskan ke pesan suara di nomor lain, seperti 555-0100. Namun, Anda, sebagai pemanggil, tetap tidak mengetahui pengalihan ini. Ponsel akan menghubungkan Anda dengan lancar, dan ucapan pesan suara masih menampilkan nomor asli teman Anda (555-0199).

CNAME berfungsi dengan cara yang sama untuk situs. Saat pengguna mengunjungi situs penjual (seperti example.com), data CNAME dapat mengalihkan permintaan mereka di balik layar ke server lain, seperti assets.example.com. Namun, dari perspektif pengguna dan browser, semuanya terjadi di example.com. Kolom alamat menampilkan URL penjual, dan pengguna berinteraksi dengan situs seolah-olah konten berasal langsung dari domain tersebut.

Menilai potensi gangguan

Tray's Analisis perubahan yang direncanakan pada penanganan 3PC mengungkapkan gangguan pada aplikasi Backoffice. Saat 3PC diblokir, masalah muncul saat memuat halaman dari domain yang berbeda dalam iframe yang disematkan di halaman backend. Hal ini berlaku untuk domain internal, yang merupakan milik layanan perusahaan sendiri, serta untuk partner eksternal yang mengembangkan aplikasi yang terintegrasi dengan Tray menggunakan API-nya.

Misalnya, bayangkan halaman di backoffice.merchant.example yang menyematkan konten yang dihosting oleh tray.com.br dan pihak ketiga lainnya. Browser akan memperlakukan konten tersemat ini sebagai pihak ketiga karena perbedaan domain, yang berpotensi membatasinya berdasarkan batasan 3PC.

Penyiapan ini dapat menyebabkan beberapa masalah:

  • Sesi rusak: 3PC yang diblokir dapat menyebabkan sesi yang terpengaruh rusak, sehingga memecah pengalaman pengguna dengan mengharuskan pengguna login beberapa kali, atau mengganggu atau menyebabkan inkonsistensi dalam halaman Backoffice karena iframe yang tidak berfungsi.
  • Tantangan integrasi: Aplikasi partner dan layanan internal yang terintegrasi dengan backend Tray's menggunakan API-nya dapat menghadapi kesulitan yang serupa karena pembatasan 3PC.

Gambar berikut mengilustrasikan skenario ini:

  • Pengguna mengakses aplikasi Backoffice yang dihosting di merchant.example.
  • Aplikasi tersemat berada di domain yang berbeda – beberapa di tray.com.br, yang dimiliki oleh Tray, dan lainnya di domain vendor pihak ketiga (third-party.example).
  • Perbedaan domain ini memicu batasan 3PC, yang berpotensi menyebabkan masalah pada aplikasi tersemat.
Diagram yang menunjukkan contoh CNAME: widget dari backoffice.merchant.example mewarisi CNAME sehingga semuanya SameSite ke situs penjual

Menguji perjalanan penting pengguna

Pengujian dan analisis Tray's bertujuan untuk meningkatkan performa situs dan pengalaman pengguna, dengan fokus pada integrasi pihak ketiga dan persiapan untuk masa depan saat banyak pengguna menjelajah tanpa 3PC.

Tray menggunakan Privacy Sandbox Analysis Tool (PSAT) dan Chrome DevTools untuk menganalisis alur penggunaan utama bagi pelanggan dan penjual. Hal ini mencakup pengujian pemuatan halaman dalam iframe, memeriksa apakah sesi pengguna tetap valid, dan memastikan aplikasi pihak ketiga terus berfungsi seperti yang diharapkan. Pengujian mencakup berbagai peran pengguna, perangkat, dan browser (termasuk Chrome, Firefox, dan Safari) untuk mengidentifikasi potensi masalah kompatibilitas lintas browser. Tray menggunakan PSAT dan Chrome Dev Tools untuk mengategorikan cookie dan menilai dampaknya terhadap pengalaman pengguna.

Analisis ini adalah langkah penting untuk memastikan pengalaman pengguna yang lancar dan konsisten, yang beradaptasi dengan masa depan saat cookie pihak ketiga mungkin dibatasi atau tidak tersedia.

Menganalisis solusi Privacy Sandbox

Storage Access API

Meskipun Storage Access API (SAA) berpotensi mengatasi gangguan Tray's dan didukung oleh semua browser utama, API ini bukan yang paling cocok untuk bisnis karena dua alasan utama:

  1. Konten tersemat hanya perlu mengakses cookie di origin tempat konten tersemat, bukan untuk mengakses cookie yang sama di beberapa situs.
  2. Permintaan browser yang terkait dengan SAA tidak ideal, terutama karena cookie tidak digunakan untuk melacak pengguna di seluruh situs.

CHIP

CHIPS menawarkan solusi yang kuat dengan pengalaman pengguna yang sangat baik untuk penyematan lintas situs. Atribut Partitioned mudah diterapkan dan tidak memiliki dampak yang jelas pada interaksi pengguna untuk pengguna di Chrome. CHIPS tidak didukung oleh browser utama lainnya saat Tray membuat perubahan pada layanannya, sehingga mereka memilih untuk memindahkan embed yang dimiliki dan dioperasikan ke situs yang sama dengan aplikasi tingkat teratas untuk memberikan pengalaman yang konsisten di seluruh browser. Konten tersemat pihak ketiga bergantung pada CHIPS di Chrome dan membuka jendela baru (konteks pihak pertama) di browser lain. Namun, sejak penerapan awal Tray's, Firefox telah mengonfirmasi rencana untuk segera mengirimkan CHIPS, dan Safari telah mulai menambahkan dukungan untuk atribut Partisi, dimulai dengan Pratinjau Teknologi mereka.

Kami menganggap CHIPS sebagai solusi yang elegan dan senang melihatnya diadopsi di beberapa browser. Kami memutuskan untuk mempertahankan solusi CHIPS selain memindahkan berbagai hal ke situs pihak pertama sehingga kami dapat mendukung semua browser bahkan sebelum mereka mengadopsi CHIPS.

— Takashi Tanaka, CTO Tray

Kompatibilitas browser, W3C, dan standar

Chrome berperan penting dalam komunitas standar. Partisipasi aktif dalam Kelompok Kerja dan Grup Komunitas W3C, seperti PrivacyCG, sangat penting untuk memengaruhi ekosistem browser yang lebih luas agar mengadopsi teknologi web baru.

Privacy Sandbox bekerja sama dengan ekosistem web untuk terus mengembangkan API seperti CHIPS berdasarkan masukan dan interaksi industri. Pendekatan transparan dan berbasis standar ini telah berperan penting dalam mendorong adopsi CHIPS di browser utama lainnya.

Tray mendukung penjual dan pelanggan mereka di semua jenis perangkat dan browser. Pendekatan berbasis CHIPS saja akan lebih disukai, tetapi perubahan tambahan juga dilakukan untuk mendukung browser lain yang tidak mendukung CHIPS pada saat itu.

Pendekatan Tray's untuk mengatasi gangguan yang disebabkan saat 3PC tidak tersedia melibatkan dua strategi utama.

1. Aplikasi internal

Layanan mikro Tray yang dioperasikan sepenuhnya—termasuk Live Shop, Dropshipping, dan Penerbit Faktur—diupdate sehingga sumber konten tersemat akan mewarisi CNAME yang disiapkan oleh penjual. Sederhananya, konten tersemat diperbarui menjadi pihak pertama dengan halaman yang menyematkannya—memastikan tidak ada gangguan akibat perubahan cookie pihak ketiga.

2. Aplikasi pihak ketiga

Untuk aplikasi pihak ketiga yang diakses melalui Backoffice, Tray menerapkan pendekatan yang lebih dinamis. Berikut caranya:

  • Implementasi atribut yang dipartisi: Implementasi atribut cookie Partitioned dipertahankan untuk vendor tepercaya, sehingga aplikasi pihak ketiga dapat menetapkan cookie secara efektif di browser yang mendukung CHIPS.
  • Jika cookie pihak ketiga diblokir: Jika browser pengguna memblokir 3PC, aplikasi pihak ketiga akan terbuka di jendela baru (pihak pertama). Hal ini menghindari masalah pembukaan dan memastikan operasi berlanjut, bahkan dengan pembatasan 3PC.
  • Jika cookie pihak ketiga diizinkan: Jika browser pengguna mengizinkan 3PC, aplikasi akan terus terbuka dalam iframe seperti sebelumnya.

Memvisualisasikan solusi

Gambar berikut mengilustrasikan solusinya. Dengan mewarisi domain utama store (merchant.example), semua aplikasi tersemat tampaknya berasal dari sumber yang sama. Hal ini membuat semua widget menjadi pihak pertama satu sama lain, yang berarti batasan 3PC tidak menjadi faktor. Karena semua frame ini menjadi pihak pertama satu sama lain, prinsip privasi mengikuti prinsip cookie pihak pertama lainnya: cookie ini hanya dapat diakses dalam konteks pihak pertama dan membatasi potensi pelacakan lintas situs.

Setiap layanan pihak ketiga yang tidak dimiliki oleh Tray menggunakan atribut Partitioned untuk menetapkan cookie CHIPS, yang berarti bahwa cookie tersebut juga hanya dapat diakses dalam konteks tempat cookie tersebut ditetapkan dan membatasi potensi pelacakan lintas situs.

Diagram yang menampilkan contoh CHIPS: widget yang dipindahkan ke domain pihak pertama dapat mengakses cookie jar pihak pertama; widget pihak ketiga menggunakan cookie jar yang dipartisi.

Kesimpulan

  • Tidak ada solusi satu ukuran untuk privasi di web; ada banyak cara untuk mencapai pengalaman pengguna yang lancar sekaligus menjaga privasi.
  • Menggabungkan resource ke dalam domain level teratas yang sama memungkinkan cookie berfungsi bahkan dengan pembatasan cookie pihak ketiga.
  • CHIPS mungkin merupakan solusi yang lebih mudah daripada memigrasikan semua resource ke situs tingkat atas yang sama.
  • Solusi Tray's andal dan berfungsi di seluruh browser. Saat browser tambahan menerapkan dukungan untuk CHIPS, CHIPS dapat dianggap sebagai solusi lintas browser yang andal untuk skenario seperti Tray's.