Latar belakang
- Wafris adalah perusahaan firewall aplikasi web open source yang menyediakan klien middleware Rails
- Klien v1 awal memerlukan penyimpanan data Redis lokal, tetapi kini mereka merilis klien v2 yang menggunakan SQLite
- Artikel ini membahas proses pengambilan keputusan migrasi dari Redis ke SQLite, pertimbangan performa, dan perubahan arsitektur
Ringkasan
- SQLite, Redis, dan RDBMS tradisional (Postgres/MySQL) masing-masing memiliki kelebihan dan kekurangan
- Penyimpanan data ini tidak bisa saling menggantikan begitu saja, dan mencobanya dapat menimbulkan masalah
- Artikel ini menjelaskan proses merancang ulang klien v1 berbasis Redis menjadi klien v2 berbasis SQLite
Mengapa perubahan ini dipaksakan?
- Tujuan Wafris adalah memudahkan developer melindungi situs mereka
- Klien v1 menggunakan penyimpanan data Redis, tetapi banyak pengguna mengalami masalah saat melakukan deployment Redis
- Mereka beralih ke SQLite untuk mengurangi beban pengguna agar tidak perlu menjadi administrator Redis
Apa itu kecepatan?
- Redis lebih cepat dibanding RDBMS tradisional, tetapi tetap ada banyak hal yang harus dikelola
- Di lingkungan cloud, latensi jaringan menjadi masalah besar
- SQLite dapat memberikan performa lebih cepat dengan mengurangi waktu round-trip jaringan
Asumsi monolitik
- Banyak aplikasi terdistribusi mengalami masalah saat menggunakan Redis
- Arsitektur ditinjau ulang untuk mengurangi kompleksitas penggunaan Redis
Mengadopsi SQLite
- SQLite mengurangi bottleneck network IO
- SQLite bersaing dengan membuka file (
fopen()), bukan dengan database client/server
Benchmark SQLite dan Redis
- SQLite sekitar 3 kali lebih cepat daripada Redis pada use case tertentu
- Bahkan tanpa memperhitungkan latensi jaringan, SQLite tetap lebih cepat
Hal yang tidak tercakup di grafik
- Bahkan jika performa SQLite lebih buruk dalam benchmark, di lingkungan nyata SQLite bisa lebih cepat karena latensi jaringan
- SQLite memudahkan scale-out secara horizontal serta mengurangi beban instalasi dan konfigurasi bagi pengguna
Membangun arsitektur sinkronisasi
- Di v1 (Redis), saat pengguna memperbarui aturan, pembaruan diterapkan ke penyimpanan data Redis
- Di v2 (SQLite), klien secara berkala memeriksa aturan yang diperbarui lalu mengunduh database SQLite yang baru
Arsitektur terdistribusi SQLite
- Masalah bottleneck database diatasi dengan menyinkronkan DB SQLite ke setiap instance komputasi
Kesimpulan
- Arsitektur v2 berbasis SQLite membantu banyak situs bertahan dari serangan dan tetap online
- Memberikan beban yang lebih kecil kepada pengguna serta menghadirkan internet yang lebih aman dan lebih terlindungi
Ringkasan GN⁺
- Artikel ini menjelaskan proses migrasi dari Redis ke SQLite dan alasan di baliknya
- SQLite meningkatkan performa dengan mengurangi latensi jaringan serta menurunkan beban instalasi dan konfigurasi bagi pengguna
- Arsitektur terdistribusi SQLite menyelesaikan masalah bottleneck database
- Artikel ini memberikan wawasan tentang cara menerapkan firewall aplikasi web dengan mudah dan membuatnya berjalan cepat
1 komentar
Komentar Hacker News
Tertarik pada model di mana setiap server aplikasi menyalin file database SQLite dan menggantinya secara berkala
Latensi baca/tulis Redis sebanding dengan jumlah key yang di-query
Dataset-nya terlihat berisi 1,2 juta item, tetapi sebenarnya tidak besar
mmap, akan lebih baik memakai daftar IP secara langsungDalam hackathon internal Neon, ada yang menulis server Node.js yang mengubah protokol Redis menjadi query Postgres
Di RailsWorld 2023 ada suasana yang negatif terhadap Redis
SQLite tampak seperti kasus penggunaan niche yang bekerja baik di sisi server tanpa replikasi
Ada proyek bernama Redka yang mengimplementasikan Redis dengan SQLite
Kutipan terbaik: "SQLite does not compete with client/server databases. SQLite competes with fopen()."
Redis lebih cepat dibanding RDBMS tradisional, tetapi tetap perlu dikelola
Benchmarking adalah seni gelap untuk menipu diri sendiri dengan angka yang sangat presisi