Blog AWS Indonesia

Strategi Tokopedia mengoptimalkan pengarsipan milyaran objek pada Amazon S3

Tentang Tokopedia

Tokopedia adalah perusahaan teknologi Indonesia yang memiliki bisnis utama dalam e-commerce. Didirikan pada tahun 2009, dengan visi mendukung kesetaraan ekonomi digital di Indonesia, kini Tokopedia melayani jutaan pengguna di seluruh Indonesia. Sebagai marketplace, Tokopedia memungkinkan pengguna untuk mendaftar sebagai penjual dan mengunggah produk untuk dijual secara online. File gambar yang diunggah oleh penjual Tokopedia disimpan di Amazon Simple Storage Service (Amazon S3).

Sejak didirikan, Tokopedia telah mengalami peningkatan signifikan dalam penggunaan penyimpanan Amazon S3. Alasan utama untuk ini adalah terus bertambahnya penjual di Tokopedia dimana setiap penjual mengupload gambar produk sehingga biaya penyimpanan juga ikut bertambah. Selain itu, terdapat regulasi dari pemerintah mengenai retensi data yang mengharuskan penyimpanan file minimal lima tahun sejak tanggal unggah. Menyesuaikan regulasi ini, Tokopedia perlu menyimpan file dalam jangka waktu yang lebih lama tetapi tetap menjaga biaya operasional agar tetap terkendali.

Tantangan

Awalnya, Tokopedia menggunakan Amazon S3 kelas Standard untuk menyimpan sebagian besar file, akan tetapi seiring dengan pertumbuhan eksponensial Tokopedia memiliki tujuan untuk memindahkan file-file yang tidak aktif ke Amazon S3 kelas Glacier Deep Archive, dimana pada kelas ini menawarkan penyimpanan arsip dengan biaya rendah di AWS. Selama proses perpindahan, Tokopedia dikenakan biaya pengambilan per-request saat menggunakan PUT, COPY, atau lifecycle rules untuk memindahkan data dari Amazon S3 kelas lama ke kelas penyimpanan Amazon S3 yang baru. Namun, karena jumlah file yang harus diarsipkan sangat tinggi, biaya transisi meningkat secara linier. Tokopedia menjajaki cara untuk mengurangi biaya pengarsipan untuk file-file yang tidak aktif tersebut.

 
Metrik Nilai
Volume yang diarsipkan 5 PB
Total objek yang diarsipkan 100,000,000,000 objek (100 milyar)
Ukuran rata-rata objek 50 KB

Gambaran Umum Solusi

Tokopedia telah memutuskan untuk menggabungkan file-dile kecil menjadi satu file yang lebih besar dan kemudian file yang sudah digabungkan ini di unggah ke Amazon S3. Teknik penggabungan file tersebut menggunakan teknik kompresi menjadi file zip. Strategi ini akan mengurangi biaya jumlah permintaan yang diperlukan dari request PUT yang diperlukan, sehingga menghemat waktu dan biaya. Diagram dibawah ini menggambarkan solusi tersebut:

Gambar diagram proses pengarsipan

Langkah pertama adalah men-download objek Amazon S3 ke instance Amazon Elasic Compute Cloud (Amazon EC2). Tindakan ini tidak ditarik biaya transfer data karena transfer data dari Amazon S3 ke region yang sama adalah gratis. Komponen biaya yang akan ditagihkan dari tindakan ini adalah request Amazon S3 GET. Langkah berikutnya adalah menggabungkan beberapa objek file yang kecil menjadi satu objek. Penggabungan objek ini dilakukan dalam beberapa batch dimana setiap batch akan mengabungkan beberapa ratus juta objek. Proses ini dijalankan di instance Amazon EC2 menggunakan script milik Tokopedia. Script tersebut juga membuat file manifest yang berisi daftar file yang telah dikompresi, file manifest ini akan digunakan untuk pengembalian arsip bila diperlukan. Langkah terakhir adalah mengupload objek yang telah digabungkan ke Amazon S3 Glacier.

Untuk proses pengembalian arsip, langkah pertama adalah mencari file manifest yang dihasilkan script di EC2 untuk mengidentifikasi batch arsip mana yang berisi file yang dimaksud. Kemudian, download objek yang diarsipkan dari Amazon S3 Glacier Deep Archive. Terakhir, decompress objek yang diarsipkan untuk mengambil file yang dimaksud. Proses ini melibatkan langkah tambahan dibandingkan dengan langsung mengambil file yang diarsipkan dari Amazon S3 Glacier Archive tanpa kompresi/dekompresi. Namun, kasus penggunaan proses kompresi/dekompresi ini merupakan skenario yang jarang terjadi, kemungkinan besar tidak akan dilakukan Tokopedia karena file tersebut dianggap tidak lagi digunakan dalam operasi bisnis dan disimpan hanya karena persyaratan regulasi. Oleh karena itu, langkah kompresi/dekompresi ini dapat diterima demi biaya pengarsipan yang lebih rendah.

Hasil

Sepanjang proyek ini, Tokopedia berhasil mengarsipkan 5 PB objek di Amazon S3 Glacier Deep Archive dalam serangkaian batch. Berikut ini adalah perhitungan biaya pengarsipan 1.000.000 objek (1 juta) dengan ukuran rata-rata 50 KB dalam satu batch – dengan ukuran total sebesar 50GB.

Untuk pendekatan pemindahan objek secara individu tanpa kompresi/dekompresi, kami menghitung total biaya pengarsipan menggunakan rumus: biaya S3 PUT (Glacier Deep Archive) dikalikan dengan jumlah objek. Menggunakan tarif di region Jakarta, perhitungannya adalah $0,06 per 1.000 permintaan * 1.000.000 objek = $60.

Untuk pendekatan pemindahan objek dengan kompresi/dekompresi, terdapat tiga komponen biaya: Amazon S3 GET request untuk mengambil objek dari Amazon S3 Standard, Compute untuk menjalankan proses pengambilan Amazon S3 dan kompresi objek, serta Amazon Elastic Block Storage (EBS) untuk menyimpan file sementara sebelum mengupload ke Amazon S3 Glacier Deep Archive. Dalam simulasi biaya ini, kami memperkirakan Compute memerlukan waktu 12 jam menggunakan instance c6g.4xlarge. Penyimpanan Amazon EBS sebesar 120 GB, yang merupakan dua kali lipat ukuran objek ditambah buffer penyimpanan cadangan. Kapasistas EBS dalam implementasi ini setidakny dua kali dari total ukuran objek untuk mengakomodir ukuran file awal ditambah ukuran file yang digabungkan. Di region Jakarta, perhitungannya adalah (EC2 Compute 12 jam ) + (EBS 120 GB * 12 jam) + (S3 1.000.000 GET Request) = $12,7.

Gambar diagram optimisasi biaya pengarsipan

Berdasarkan perhitungan ini, Tokopedia menghemat 78% dalam biaya pengarsipan dengan menerapkan solusi ini dibandingkan dengan mengarsipkan setiap file secara individu.

Pertimbangan

Dalam kasus penggunaan Tokopedia, solusi ini memberikan manfaat biaya yang signifikan. Pertimbangkan hal-hal berikut saat menerapkan solusi ini:

  • Amazon S3 Lifecycle bisa secara efektif untuk mengelola pengarsipan objek yang ada dan objek tidak aktif yang akan datang berdasarkan usia objek. Namun, Tokopedia mengidentifikasi objek sebagai tidak aktif berdasarkan proses bisnis e-commerce-nya, bukan berdasarkan usia objek. Misalnya, Tokopedia menganggap gambar produk populer yang berusia 10 tahun sebagai aktif, sementara gambar produk yang baru berusia 2 hari dianggap sebagai tidak aktif ketika produk tersebut dihapus.
  • Menerapkan Amazon S3 Intelligent Tier dapat secara otomatis mengidentifikasi objek tidak aktif berdasarkan pola akses. Ini sesuai dengan kebutuhan Tokopedia untuk mengarsipkan gambar produk yang dihapus. Namun, Tokopedia memprediksi bahwa pengembalian arsip file akan menjadi operasi yang jarang dilakukan; oleh karena itu, kemampuan monitoring dan automation dari Amazon S3 Intelligent Tier tidak diperlukan dalam kasus penggunaan ini.
  • Rata-rata ukuran file tidak aktif adalah 50 KB, yang tergolong kecil. Sehingga, biaya penyimpanan yang diperlukan untuk menyimpan objek yang di-download sementara dan mengarsipkannya juga minimal.

Ringkasan

Tokopedia secara signifikan mengurangi biaya penyimpanan Amazon S3 dengan menyimpan file objek tidak aktif ke Amazon S3 Glacier Deep Archive dalam skala besar. Strategi yang digunakan Tokopedia adalah menggabungkan beberapa file kecil menjadi lebih satu file terkompresi untuk mengurangi biaya transisi. Biaya transisi dari Amazon S3 Standard ke Amazon S3 Glacier Deep Archive dihitung berdasarkan jumlah Amazon S3 PUT request, dan menggabungkan file akan mengurangi jumlah PUT request sehingga biaya transisi lebih rendah. Solusi ini sesuai dengan pertimbangan bisnis dan teknis Tokopedia. Namun untuk situasi umum dimana jumlah object tidak banyak dan file berukuran besar, strategi pengabungan file ini tidak tepat. Pada situasi tersebut, Implementasi stategi lain lebih direkomendasikan sepeti menggunakan Amazon S3 Lifecycle berdasarkan usia objek dan Amazon S3 kelas Intelligent-Tiering berdasarkan pola akses.

Setelah proses pengarsipan, Tokopedia mencapai pengurangan biaya penyimpanan untuk menyimpan 5 PB data tidak aktif, dari $118.000,00 di Amazon S3 Standard menjadi $36.000,00. Kami menyarankan semua pengguna Amazon S3 untuk menggunakan S3 Glacier untuk penyimpan file yang tidak aktif. Pelari S3 Glacier lebih lanjut halaman AWS S3 Glacier.

Purnaresa Yuliartanto

Purnaresa Yuliartanto

Purnaresa "Resa" is a Senior Solutions Architect at AWS specializing in cloud security. Combine with his extensive background in software development, he now focuses on helping companies build secure cloud workloads. Resa holds certifications in cloud computing and cybersecurity, leveraging his expertise to solve complex problems in the field.

Dhika Isfahan

Dhika Isfahan

Dhika Isfahan is a Technical Account Manager at AWS Indonesia. He has over 17 years of experience working in networking and IT infrastructure. At AWS, Dhika focuses on building strong relationships with clients and ensuring they receive the best possible support and solutions for their needs.

Muhammad Faris Ghanianto

Muhammad Faris Ghanianto

Principal Engineer, Tokopedia

Adrianus Kevin Kusuma

Adrianus Kevin Kusuma

Engineering Manager, Tokopedia

Kristopel Martin Lumbantoruan

Kristopel Martin Lumbantoruan

Software Engineer Lead, Tokopedia