🍿

Migrasi Netflix ke GraphQL: Zero Downtime dengan AB Testing, Replay Testing, dan Sticky Canary

January 20258 min readTechnology

Pada tahun 2022, Netflix memulai langkah besar dengan migrasi aplikasi iOS dan Android mereka dari framework API internal ke GraphQL. Ini adalah proses yang menyentuh ratusan juta pengguna di seluruh dunia. Yang luar biasa, migrasi ini dilakukan dengan zero downtime.

Artikel ini mengupas strategi engineering yang digunakan Netflix, termasuk penerapan AB Testing, Replay Testing, dan Sticky Canary untuk memastikan transisi berjalan mulus. Jika kamu seorang software engineer yang menghadapi tantangan serupa, atau sekadar penasaran dengan proses migrasi skala besar, artikel ini adalah panduan yang layak dipelajari.


Era Sebelum GraphQL di Netflix

Sebelum menggunakan GraphQL, Netflix mengandalkan Falcor, framework API internal yang kuat namun monolith. Pendekatan ini menghadirkan beberapa tantangan besar:

  • Centralized Ownership: Satu tim bertanggung jawab atas seluruh API, yang sering menjadi bottleneck.
  • Difficult to Scale: Menambahkan fitur baru memerlukan koordinasi yang intensif antar tim.

Untuk mengatasi masalah ini, Netflix mengadopsi pendekatan Federated GraphQL, di mana setiap tim domain memiliki API mereka secara independen. Namun, perubahan ini membutuhkan strategi migrasi yang hati-hati dan tanpa gangguan.


Framework Migrasi

Migrasi Netflix dibagi ke dalam dua fase utama:

Fase 1: GraphQL Shim Layer

Pada 2020, Netflix memperkenalkan GraphQL Shim Service sebagai perantara antara client dan API Falcor yang sudah ada. Ini memungkinkan tim untuk:

  1. Bereksperimen dengan query GraphQL.
  2. Mengatasi tantangan caching dan normalisasi data.
  3. Melakukan transisi secara bertahap tanpa mengubah backend.

Fase 2: Federated GraphQL

Setelah Shim Layer terbukti efektif, Netflix mulai beralih ke arsitektur Federated GraphQL sepenuhnya. Langkah-langkah yang dilakukan meliputi:

  • Menghapus Falcor secara bertahap.
  • Memindahkan kepemilikan API ke tim domain.
  • Menggunakan testing strategy untuk mengurangi risiko.

Tiga Pilar Strategi Migrasi

Netflix menggunakan tiga pendekatan utama untuk memastikan migrasi berjalan mulus tanpa error besar:

1. AB Testing

Dengan AB Testing, Netflix dapat mengukur metrik performa tingkat tinggi dengan membagi pengguna menjadi dua grup:

  • Control Group: Tetap menggunakan API Falcor.
  • Experiment Group: Menggunakan GraphQL Shim.

Workflow:

  • Membagi 1 juta pengguna ke dalam dua kelompok.
  • Memantau metrik seperti latensi, error rate, dan cache hit ratio.
  • Mengidentifikasi peluang optimasi, misalnya dengan mengatur ulang cache TTL.

Pelajaran Penting: Versi awal GraphQL tidak langsung menyamai performa Falcor. Perbaikan berulang kali akhirnya mencapai performa yang setara.

2. Replay Testing

Replay Testing menjadi kunci untuk memastikan konsistensi data antara Falcor dan GraphQL. Strategi ini sangat efektif untuk API yang idempotent.

Workflow:

  1. Menggunakan direktif @override GraphQL untuk Federation.
  2. Menggunakan query yang sama terhadap Falcor dan Shim.
  3. Membandingkan hasil response untuk memastikan paritas.

Pelajaran Penting: Replay Testing membantu menemukan perbedaan lebih awal, memungkinkan engineer untuk menyelaraskan response.

Batasan:

  • Kurang efektif untuk API non-idempotent.
  • Query manual bisa melewatkan edge cases.

3. Sticky Canary

Sticky Canary mensimulasikan kondisi real case untuk memvalidasi business metrics dan scalability.

Workflow:

  • Mengarahkan sebagian trafik pengguna ke dua cluster:
    • Satu menggunakan GraphQL Shim.
    • Satu lagi menggunakan Falcor.
  • Membandingkan metrik Quality of Experience (QoE) seperti error rate dan engagement.

Pelajaran Penting: Sticky Canary membantu mengidentifikasi masalah scalability lebih awal tanpa mengganggu mayoritas pengguna.

Risiko: Bug di cluster canary dapat memengaruhi pengguna.


Perbandingan Strategi

StrategiFokusKelebihanTantangan
AB TestingMetrik performa tingkat tinggi

Memvalidasi user experience dalam skala besar; mendeteksi bug lebih awal

Tidak menemukan akar masalah
Replay TestingKonsistensi dataMemastikan data tetap konsisten; ideal untuk API idempotentTerbatas untuk operasi idempotent
Sticky CanaryBusiness metrics & scalabilityIdeal untuk skenario dunia nyata; mengungkap masalah scalabilityRisiko berdampak pada pengguna

Pelajaran untuk Software Engineer

Migrasi Netflix menawarkan blueprint untuk menghadapi transisi skala besar:

  1. Arsitektur Paralel: Gunakan lapisan transisi (seperti GraphQL Shim) untuk bereksperimen tanpa mengganggu sistem yang ada.
  2. Iterasi Berbasis Data: Gunakan metrik dari AB Testing dan Sticky Canary untuk panduan optimasi.
  3. Validasi Menyeluruh: Gunakan Replay Testing untuk menangkap inkonsistensi sebelum menyentuh pengguna.
  4. Kepemilikan Terdistribusi: Arsitektur federasi memberdayakan tim untuk scaling secara independen.

Penutup

Migrasi ke GraphQL bukan hanya upgrade teknologi untuk Netflix; ini adalah redefinisi cara tim berkolaborasi dan membangun sistem yang tangguh. Dengan menggabungkan AB Testing, Replay Testing, dan Sticky Canary, Netflix berhasil melakukan migrasi dengan zero downtime.

Bagi para software engineer yang menghadapi tantangan serupa, strategi ini memberikan peta jalan untuk meminimalkan risiko dan memaksimalkan keberhasilan.