poles.id – Yandex baru saja meluncurkan YaFF (Yet another Flat Format), yang merupakan format wire terbuka dan efisien untuk Protobuf. YaFF menjadi sorotan karena menawarkan solusi baru dalam dunia serialisasi data dengan fokus pada performa tinggi di sistem backend. Dengan lisensi Apache 2.0, YaFF hadir sebagai alternative solusi tanpa melakukan penggandaan skema serta tetap mempertahankan semantik Protobuf.
Apa itu YaFF?
YaFF bukanlah pengganti Protobuf, melainkan format alternatif untuk pesan Protobuf. Dalam sistem ini, file .proto tetap menjadi sumber kebenaran, sedangkan format YaFF hanya mengubah bagaimana data disimpan dalam memori. Hal ini menghasilkan proses pembacaan yang lebih cepat, dengan pengurangan langkah parsing yang umum dilakukan dalam proses Protobuf. Untuk sebagian besar kode yang tidak sensitif terhadap performa, konversi dua arah memungkinkan adopsi YaFF dalam proyek yang telah ada tanpa harus memodifikasi seluruh sistem.
Masalah yang Dihadapi oleh YaFF
Protobuf parsing sering menghabiskan proporsi yang signifikan dari CPU dalam backend dengan beban tinggi, yang dapat berpengaruh besar pada skala dengan ribuan inti fisik. Meskipun FlatBuffers, yang juga merupakan produk dari Google, menawarkan opsi nol salinan untuk pembacaan data, masalah muncul karena kebutuhan untuk merawat skema yang berbeda dan layer konversi yang tidak selalu kompatibel dengan Protobuf. YaFF berupaya mengisi celah ini dengan menawarkan pembacaan nol salinan sambil memastikan semantik Protobuf tetap terjaga.
Cara Kerja Layouts dalam YaFF
Dalam YaFF, layout menentukan bagaimana pesan disimpan dalam buffer. Ini hanya mengubah representasi fisik tanpa mengubah skema atau antarmuka yang dihasilkan. YaFF memiliki empat jenis layout: Fixed, Flat, Sparse, dan Dynamic. Layout Fixed adalah struktur yang menyimpan data dengan dan tanpa header, sementara layout Flat mendukung evolusi skema. Layout Sparse dirancang untuk menangani skema yang jarang, dan layout Dynamic dipilih saat runtime sesuai keperluan. Dengan mekanisme ini, YaFF memberikan fleksibilitas dalam membaca data sambil mempertahankan kecepatan tinggi.
Benchmark dan Performa YaFF
Yandex telah menyediakan suite benchmark yang dapat direproduksi untuk menguji performa YaFF. Hasil pengujian menunjukkan bahwa layout Flat YaFF mampu membaca data dalam waktu sekitar 9,79 nanodetik, jauh lebih cepat dibandingkan FlatBuffers yang membutuhkan 37,30 nanodetik dan Protobuf yang memerlukan hingga 219,35 nanodetik. Pengujian ini menunjukkan bahwa YaFF tidak hanya cepat, tetapi juga efisien dalam penggunaan memori, yang menjadi kritikal di lingkungan dengan volume data yang besar.
Rincian Aliasing Compiler
Salah satu tantangan dalam menggunakan format pembacaan seperti YaFF dan FlatBuffers adalah bagaimana compiler menangani akses memori. Tindakan pembacaan yang dilakukan oleh kedua format dapat mengakibatkan analisis alias yang konservatif dari LLVM, membuat compiler tidak dapat membuktikan bahwa akses ulang aman untuk digunakan. Namun, YaFF menambahkan anotasi dalam kode yang dihasilkannya, sehingga compiler lebih dapat memanfaatkan rantai akses, berpotensi meningkatkan efisiensi pembacaan data.
Di Mana YaFF Diterapkan: Kasus Penggunaan
YaFF dirancang untuk sistem di mana baik produsen maupun konsumen dikelola secara bersamaan. Sektor yang paling jelas untuk penerapan YaFF adalah di backend rekomendasi dan iklan, di mana Yandex sendiri melaporkan penghematan CPU antara 10% hingga 20% saat diterapkan pada skala produksi. Selain itu, indeks yang dapat di-memory-map juga menjadi tempat yang cocok untuk YaFF, mengingat ukuran data lokal yang bisa mencapai puluhan gigabyte dan memperpanjang umur indeks tanpa perlu mem-parsing ulang setiap kali layanan di-restart.
Kesimpulan
Dengan peluncuran YaFF, Yandex menghadirkan pendekatan baru dalam menangani masalah serialisasi data di sistem backend. Solusi ini tidak hanya menawarkan peningkatan performa tetapi juga menjaga keselarasan dengan Protobuf, sehingga memberikan fleksibilitas yang dibutuhkan oleh tim pengembang dalam menghadapi tantangan di era big data. Semakin banyak tim yang mengadopsi format ini diharapkan bisa memperoleh manfaat signifikan dari penghematan sumber daya dan peningkatan kecepatan akses data.