Azura Team • 2023-04-24
Ding dong! 🔔
How was your first week of fasting? Azura Labs is back with tech tea of the week untuk menemani waktu ngabuburit. Minggu ini, kami membawakan rahasia developer Discord dalam mengembangkan database data hingga biliunan hingga AI tools untuk membantu pekerjaan content creators makin sat set!
Tahun 2017, Bo Ingram, Senior Software Engineer Discord, dan rekannya menuliskan sebuah postingan blog berjudul “How we store billions of messages”. Mereka mengawali perjalanan dengan menggunakan MongoDB hingga akhirnya berpindah ke Cassandra dengan fitur yang lebih toleran akan kesalahan, terukur, dan perawatan yang cenderung lebih rendah. Seiring berjalannya waktu, Bo Ingram menemukan isu performa Cassandra yang membuatnya harus berupaya lebih untuk menjaga database.
Penyimpanan pesan dilakukan di database bernama “cassandra-messages”. Tahun 2017, Bo Ingram menjalankan 12 node Cassandra untuk menyimpan biliunan pesan, kemudian menjadi 177 node dengan biliunan pesan di 2022. Selama itu, berbagai masalah Bo Ingram dan rekannya temukan.
Pertama, mari kita lihat pesannya:
Pernyataan CQL di atas adalah contoh skema pesan yang paling sederhana. Setiap ID-nya menggunakan Snowflake yang dapat menyortir pesan sesuai urutan waktunya. Setelah diuji, fakta menunjukkan seluruh pesan pada channel dan buket akan disimpan bersamaan dan disalin melalui tiga node. Dalam penulisan pesan di atas, pesan ditambahkan dengan commit log yang ditulis ke dalam struktur memori yang disebut sebagai memtable. Memtable ini dibutuhkan dalam membaca data dan memunculkan potensi SSTables (file on-disk) dengan biaya operasional lebih mahal. Cassandra juga dapat menghadapi partisi panas yang sering kali mempengaruhi di seluruh klaster di database Cassandra.
Cluster pesan Discord, bukan satu-satunya yang berbasis data Cassandra. Bo Ingram pernah menaruh ketertarikan di ScyllaDB, database kompatibel dengan Cassandra yang ditulis dalam C++. ScyllaDB dapat meningkatkan performa, lebih cepat diperbaiki, dan isolasi beban kerja melalui arsitektur shard-per-core yang lebih kuat.
Meskipun ada isu yang muncul, ScyllaDB tidak memiliki fitur pengumpulan sampah karena ditulis dalam C++, bukan Java. Belajar dari pengalaman sebelumnya, tim Bo Ingram menemukan banyak permasalahan dari fitur pengumpulan sampah di Cassandra. Setelah melalui eksperimen, tim Bo Ingram memberikan keputusan untuk memigrasikan semua database ke ScyllaDB kecuali cassandra-messages. Database tersebut memiliki biliunan pesan dengan nyaris 200 node, butuh upaya yang sangat besar dalam proses pemindahannya.
Bo Ingram dan kadang juga mengalami kesulitan dengan partisi panas di Cassandra. Database dilindungi dengan mengatur jumlah traffic pada partisi panas. Data ditulis dengan bahasa Rust. Performa C/C++ dapat meningkat tanpa harus mengorbankan keamanan data. Selain itu, terdapat ekosistem Tokio yang merupakan sebuah pondasi dalam membangun sistem I/O asinkron dengan bahasa yang mendukung driver Cassandra dan ScyllaDB. Layanan data berada di antara API dan cluster ScyllaDB. Berikut adalah kelebihan dari Rust, mudah ditulis dengan kode berulang dengan aman.
Dengan layanan data ini, lonjakan traffic pada database dapat berkurang secara signifikan. Selain itu, perutean yang berbasis hash yang konsisten ke layanan data dapat memungkinkan penggabungan yang lebih efektif sehingga membantu mengurangi beban pada database.
Upaya-upaya di atas memang tidak mampu mengatasi semua masalah, tetapi sangat membantu beban dari partisi panas dan peningkatan latensi klaster Cassandra Discord.
Persyaratan dalam migrasi bisa dibilang cukup mudah, yang harus dilakukan adalah
Langkah pertama, menentukan klaster ScyllaDB baru dengan teknologi penyimpanan super disk menggunakan SDD lokal. Dimulai dengan dual-writing data baru ke Cassandra dan ScyllaDB secara bersamaan dengan mulai menyediakan migrator Spark ScyllaDB. Tim Bo Ingram memilih meme-driven engineering dan menulis ulang migrator data pada Rust.
Setelah itu, pustaka layanan data diperluas dengan melakukan migrasi dalam skala besar via SQLite dengan kecepatan hingga 3,2 juta per detik. Validasi data otomatis dilakukan dengan mengirimkan sebagian kecil bacaan ke kedua database dan membandingkan hasilnya. Hasilnya, klaster tersebut bertahan dengan baik dengan lalu lintas produksi penuh, sedangkan untuk Cassandra sendiri semakin sering mengalami masalah latensi. Dengan ini, ScyllaDB berhasil menjadi database utama Discord!
Bulan Mei 2022, pengalihan database pesan telah usai. Database menjadi jauh lebih efisien, dari 177 node Cassandra menjadi 72 node ScyllaDB. Ada satu hal yang menarik perhatian ketika hiruk pikuk World Cup 2022 di seluruh dunia, yaitu gol yang dicetak pemain dapat muncul di grafik pemantauan seperti di bawah ini.
Masing-masing dari sembilan lonjakan dalam grafik tersebut mewakili satu kejadian dalam pertandingan.
Dengan layanan data berbasis Rust dan ScyllaDB, Discord dapat memikul traffic ini. Bo Ingram dan tim telah berhasil membangun sistem yang dapat menampung biliunan pesan.
Setelah badai COVID-19 melanda, penggunaan media sosial dan teknologi secara umum semakin diandalkan. Kebutuhan sekolah hingga pekerjaan tidak sedikit masih dilakukan secara online. Tools kecerdasan buatan gratis berikut bisa membuat content creator lebih sat set!
Masih bingung formula apa yang perlu digunakan di Sheets? Atau masing bingung dengan fungsi-fungsi dari tiap formula di Excel? Sheet+ is the answer for you! Dengan pemakaian 10 kali per akun secara gratis, it’s time to say goodbye to pusing ngafalin rumus Excel dan Google Sheets.
Laman Simplified cocok untuk orang-orang yang produktif di bidang marketing maupun media sosial. All-in-one, dalam laman ini pengguna dapat mengakses beragam fitur meliputi desain, editing video, pengelola media sosial, dan bantuan copywriting dari AI.
Meeting secara daring dapat menghilangkan batasan jarak dengan waktu yang lebih efektif. Namun, tidak dapat dihindari kerap ada gangguan suara dari sekitar. Ketenangan dan suara yang jernih menjadi tantangan tersendiri. Krisp hadir menjawab permasalahan tersebut. Tidak perlu lagi khawatir dengan suara tetangga yang lagi renov rumah, ayam tetangga, echo, dan intervensi lainnya ketika meeting sedang berlangsung.
Bingung menentukan keputusan dalam bisnis atau perkerjaan? Let this AI help you. Dengan menuliskan pertimbangan yang masih belum bisa diputuskan, AI Rationale akan membantu pengguna menentukan pilihan yang tepat melalui analisis pro kontra, SWOT, dan analisis multi-kriteria atau klausal yang membantu untuk tahu keputusan mana yang terbaik.
Foto menjadi elemen penting dalam penyusunan konten. Namun, dalam pencarian foto terbaik tidaklah mudah bagi content creator. Adanya Lexica menjadi game changer. Masukkan parameter atau deskripsi foto yang diinginkan, foto kualitas HD akan muncul.
Hadirnya beragam fitur AI memudahkan kita dalam menyelesaikan pekerjaan. Waktu yang semula harus diluangkan untuk riset secara manual bisa dipangkas untuk melanjutkan pekerjaan selanjutnya. Ditambah lagi, kemudahan yang ditawarkan AI dapat menjadi peluang bisnis baru.
Hope these news give you new insights. Have a wonderful week, and happy fasting!
Azura Labs
PT. INSAN MEMBANGUN BANGSA
Jl. Lumbungsari V no 3 Kel. Kalicari, Kec. Pedurungan, Kota Semarang, Kode Pos 50198