Uber Perbarui Sistem Database MySQL



Uber Perbarui Sistem Database MySQL - credit for: infoq - pibitek.biz - Instruksi

credit for: infoq


336-280
TL;DR
  • Uber berhasil memperbarui sistem database MySQL dari versi 5.7 ke 8.0.
  • Pembaruan ini meningkatkan performa dan keamanan sistem database secara signifikan.
  • Tim teknisi menghadapi tantangan dalam mengelola replikasi dan kueri kompleks.

pibitek.biz -Uber, perusahaan transportasi daring yang terkenal, baru-baru ini menyelesaikan proses pembaruan besar-besaran pada sistem database MySQL-nya. Pembaruan ini melibatkan migrasi dari versi 5.7 ke versi 8.0, sebuah langkah penting yang bertujuan untuk meningkatkan performa dan keamanan sistem database Uber. Proses pembaruan yang kompleks ini memakan waktu lebih dari satu tahun dan melibatkan lebih dari 2.100 cluster dan 16.000 node yang tersebar di 19 zona produksi di tiga wilayah berbeda. Jumlah ini merupakan tantangan yang besar, mengingat sistem database Uber menyimpan data dalam skala petabyte dan memproses lebih dari 3 juta permintaan per detik.

Tim teknisi Uber menyadari bahwa meminimalkan gangguan selama proses pembaruan adalah prioritas utama. Untuk mengatasi hal ini, mereka mengembangkan sistem otomatis untuk memandu setiap cluster melalui proses pembaruan bertahap yang tidak memerlukan intervensi manual. Tim teknisi Uber memutuskan untuk menggunakan strategi pembaruan sisi-demi-sisi, bukan pembaruan di tempat. Strategi ini dipilih karena kemampuannya untuk meminimalkan downtime, mengurangi risiko, dan memungkinkan pengujian yang lebih menyeluruh.

Proses pembaruan sisi-demi-sisi dilakukan melalui beberapa tahap. Pada tahap awal, tim teknisi menambahkan node replika MySQL 8.0 yang sesuai di wilayah atau zona yang sama untuk setiap node MySQL 5.7 dalam sebuah cluster. Setelah node replika MySQL 8.0 ditambahkan, dilakukan periode pemantauan selama satu minggu untuk mengamati kinerja sistem dan mendeteksi potensi masalah. Setelah periode pemantauan ini selesai, tim teknisi mengalihkan lalu lintas dari node replika 5.7 dan mempromosikan node MySQL 8.0 ke status utama untuk setiap cluster.

Langkah terakhir dalam proses pembaruan adalah menghapus semua node MySQL 5.7 dari cluster, yang menandai selesainya transisi ke versi 8.0. Stabilitas sistem dan integritas data merupakan hal yang sangat penting selama proses pembaruan. Tim teknisi merencanakan untuk segera melakukan rollback ke MySQL 5.7 jika terjadi penurunan kinerja layanan. Rollback ke versi 5.7 hanya dimungkinkan sebelum node MySQL 8.0 dipromosikan ke status utama. Setelah node MySQL 8.0 menjadi node utama, rollback tidak lagi dimungkinkan.

Pembaruan ini tidak selalu berjalan mulus. Setelah diupgrade ke MySQL 8.0, beberapa cluster mengalami perubahan dalam rencana eksekusi kueri, yang mengakibatkan peningkatan latensi dan konsumsi sumber daya. Tim teknisi Uber bekerja sama dengan Percona, perusahaan software database, untuk mengidentifikasi dan menerapkan perbaikan untuk cluster yang terpengaruh. Masalah lain yang muncul selama proses pembaruan termasuk kesulitan dalam mengelola replikasi antara versi MySQL yang berbeda, kesulitan dalam menjalankan kueri yang kompleks, dan kesalahan yang terkait dengan penggunaan data dalam jumlah besar.

Uber bukanlah satu-satunya perusahaan yang menghadapi tantangan dalam mengelola pembaruan skala besar ke MySQL 8.0. GitHub, platform berbagi kode sumber terbuka yang terkenal, juga menghadapi sejumlah kesulitan serupa saat melakukan pembaruan dari versi 5.7 ke 8.0. Salah satu kesulitan yang dihadapi GitHub adalah masalah replikasi mundur dari 8.0 ke 5.7 yang berhenti berfungsi saat digunakan oleh klien yang menggunakan kerangka kerja dan bahasa yang berbeda. Masalah ini mengurangi durasi waktu rollback yang memungkinkan.

GitHub juga mengalami bug replikasi dan kegagalan sistem saat menjalankan kueri dengan nilai WHERE IN yang besar. Percona, perusahaan software database, juga memberikan panduan tentang cara menghindari bencana saat melakukan pembaruan ke MySQL 8.0. Percona menekankan bahwa sulit untuk menguji beban kerja terkait penulisan sebelum pembaruan dan bahwa potensi risiko yang terkait dengan pembaruan ini meliputi hilangnya data, kueri yang lambat, potensi downtime, dan ketidakcocokan aplikasi klien. Percona juga menjelaskan cara melakukan downgrade jika diperlukan.

Beberapa organisasi lain juga telah mendapat manfaat dari pembaruan ke MySQL 8.0. Jyoti Ranjan Parida dari Arzooo, sebuah perusahaan e-commerce, menjelaskan beberapa manfaat dari pembaruan ini, termasuk peningkatan performa, peningkatan keamanan, dan fitur baru yang inovatif. Parida juga menyoroti beberapa hal yang perlu diperhatikan saat melakukan pembaruan, termasuk melakukan tindakan pra-syarat seperti membuat cadangan data, menguji pembaruan di lingkungan yang terisolasi, dan memeriksa kompatibilitas aplikasi klien.

Meskipun menghadapi beberapa tantangan, pembaruan Uber ke MySQL 8.0 menghasilkan peningkatan kinerja yang signifikan. Benchmark server-side menunjukkan peningkatan latensi 29% untuk penyisipan, 33% untuk pembacaan, dan 47% untuk pembaruan, semuanya pada tingkat konkurensi yang tinggi. Pada sisi klien, beberapa kueri menjadi 78% lebih cepat, dan waktu penguncian database secara keseluruhan berkurang 94%. Pembaruan sistem database merupakan tugas yang kompleks dan menantang, bahkan bagi perusahaan teknologi besar seperti Uber.

Meskipun proses pembaruan membutuhkan waktu dan upaya yang signifikan, peningkatan yang dihasilkan dalam hal performa dan keamanan membuat upaya ini sepadan. Pembaruan ke MySQL 8.0 telah membawa Uber ke tingkat baru dalam pengelolaan data, memperkuat kemampuannya untuk memberikan layanan yang andal dan efisien kepada jutaan penggunanya di seluruh dunia.