Bagaimana Canva Mengelola 25 Miliar Event per Hari dengan Data Pipeline yang Scalable dan Reliable
Di Canva, analytics bukan hanya alat pengukuran—ini adalah dasar dari pengambilan keputusan berbasis data. Dengan lebih dari 25 miliar event per hari atau setara 800 miliar event per bulan, arsitektur data pipeline Canva dirancang untuk reliability, scalability, dan cost efficiency. Artikel ini menjelaskan bagaimana tim engineering Canva membangun dan mengelola pipeline data yang mampu memenuhi kebutuhan skala besar dengan performa tinggi.
Tantangan Utama: Reliability, Cost Efficiency, dan Scalability
Mengelola miliaran event setiap hari bukan tanpa tantangan. Canva menghadapi tiga prioritas utama:
- Reliability: Menjamin uptime 99,999% agar sistem tetap berjalan tanpa gangguan.
- Cost Efficiency: Meminimalkan biaya operasional tanpa mengorbankan performa.
- Scalability: Sistem harus mampu bertumbuh seiring peningkatan jumlah pengguna dan kompleksitas data.
Komponen Utama Arsitektur Data Pipeline Canva
Pipeline data Canva terdiri dari beberapa komponen inti yang saling terintegrasi secara modular untuk fleksibilitas dan skalabilitas tinggi.
1. Schema Berbasis Protobuf
Setiap event yang masuk ke pipeline mengikuti schema yang terdokumentasi dengan baik menggunakan Protocol Buffers (Protobuf). Ini memungkinkan validasi tipe yang ketat dan kompatibilitas antar versi.
Contoh schema Protobuf:
syntax = "proto2";
import "datumgen/datumgen.proto";
package events.page;
option (datumgen.technical_owner) = "[email protected]";
option (datumgen.business_owner) = "[email protected]";
// Fired when the user visits a page.
message PageVisitedEventProperties {
option (datumgen.event_type) = "page_visited";
// The name of the page.
optional string page_name = 1;
// The flag indicates if the page is embedded in the iframe
optional bool is_iframe_embedded = 2;
}
Keuntungan menggunakan Protobuf:
- Backward & Forward Compatibility: Mendukung perubahan schema tanpa mengganggu data yang sudah ada.
- Validation at Compile Time: Meminimalkan error saat runtime dengan validasi sejak awal.
2. Datumgen: Alat Generasi Schema Otomatis
Untuk mempercepat pengelolaan schema, Canva membangun Datumgen, sebuah tool berbasis protoc untuk menghasilkan berbagai output, seperti:
- TypeScript untuk validasi di frontend.
- Java untuk backend processing.
- SQL untuk schema di Snowflake.
- Event Catalog untuk dokumentasi schema yang dapat diakses tim internal.
| Output | Deskripsi |
|---|---|
| TypeScript | Digunakan untuk validasi schema di frontend. |
| Java | Pengelolaan event processing di backend. |
| SQL | Digunakan untuk definisi tabel di data warehouse. |
| Event Catalog | UI untuk eksplorasi schema event. |
3. AWS Kinesis Data Stream (KDS) untuk Data Collection
Data pipeline Canva menggunakan AWS Kinesis Data Stream untuk ingestion data dengan throughput tinggi. Dengan kompresi zstd, Canva berhasil:
- Mengurangi ukuran payload hingga 10x.
- Menghemat hingga $600.000 per tahun dalam biaya AWS.
Selain itu, fallback ke SQS memastikan latensi tetap rendah dengan biaya tambahan hanya sekitar $100/bulan.
4. Router untuk Distribusi Data
Router mendistribusikan data ke konsumen seperti Snowflake, Elasticsearch, dan internal services lainnya. Konfigurasi ini sepenuhnya centralized, sehingga mudah menambahkan konsumen baru tanpa mengganggu konsumen yang sudah ada.
Keunggulan desain ini:
- Modular & Scalable: Routing logic dipisahkan dari worker utama.
- Dynamic Prioritization: Konsumen dengan prioritas lebih tinggi dapat diproses terlebih dahulu.
Optimasi Biaya dan Performa
Tim Canva melakukan berbagai optimasi untuk mencapai efisiensi biaya dan performa maksimal, di antaranya:
- Migrasi dari SQS/SNS ke KDS: Mengurangi biaya hingga 20x.
- Kompresi Data dengan zstd: Mengurangi bandwidth usage secara signifikan.
- Fallback ke SQS: Solusi hemat biaya untuk mengatasi latensi pada KDS.
Kesimpulan
Arsitektur data pipeline Canva menunjukkan bagaimana sistem yang scalable, reliable, dan cost-efficient dapat dibangun untuk menangani volume data skala besar. Dengan pendekatan berbasis schema, otomatisasi seperti Datumgen, dan optimasi biaya, Canva berhasil menciptakan ekosistem data yang menjadi backbone pengambilan keputusan berbasis data.
Jika Anda ingin membangun pipeline serupa, mulailah dengan desain berbasis schema yang solid, fokus pada modularitas, dan selalu optimalkan setiap tahap alur data.