Intip Rahasia Discord & Content Creator Sat Set! | 7-Days Wrap Up

Azura Team2023-04-24

7-Days Wrap Up

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!


Rahasia Discord Simpan Hingga Biliunan Pesan

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.

Isi Konten

  1. Masalah dari Cassandra
  2. Pergantian arsitektur cluster pesan
  3. Layanan data dalam penyajian data Discord
  4. Migrasi data besar-besaran
  5. Beberapa bulan kemudian…

Masalah dari Cassandra

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.

Pergantian arsitektur cluster pesan

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.

Layanan data dalam penyajian data Discord

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.

Migrasi data besar-besaran

Persyaratan dalam migrasi bisa dibilang cukup mudah, yang harus dilakukan adalah

  • Memigrasikan milyaran pesan tanpa henti
  • Dilakukan dengan cepat ketika situasi Cassandra membaik.

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!

Beberapa bulan kemudian…

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.

  1. Tendangan penalti oleh Messi, dan skor Argentina menjadi 1-0.
  2. Argentina mencetak gol kembali, skor naik 2-0.
  3. Memasuki halftime, Ada dataran tinggi lima belas menit berkelanjutan saat pengguna Discord membicarakan pertandingan.
  4. Lonjakan besar di grafik setelah Mbappe mencetak gol untuk Prancis dan mencetak gol lagi 90 detik kemudian
  5. Ini adalah akhir dari peraturan dan pertandingan sengit ini akan berlanjut ke extra time
  6. Tidak banyak yang terjadi di paruh pertama extra time, tetapi saat ini mencapai halftime dan pengguna tengah mengobrol melalui chat
  7. Messi mencetak gol lagi, dan Argentina memimpin
  8. Mbappe menyerang balik untuk mengejar ketertinggalan Prancis
  9. Akhir dari extra time menuju ke tendangan penalti
  10. Kegembiraan dan stress bertambah sepanjang akhir pertandingan hingga akhirnya tendangan Prancis meleset dan Argentina berhasil menyalip. Argentina pun menang!

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.


Finish Your Job Faster, 7 AI Platform untuk Content Creator

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!

Isi Konten

  1. Sheet+ : Ketahui Formula Excel dalam Sekejab
  2. Simplified : Lebih Mudah dalam Penyusunan Konten
  3. Krisp : Bantu Meeting Tanpa Gangguan Audio
  4. Rationale : AI Teman Buat Keputusan
  5. Lexica : Cari Foto HD sesuai Kebutuhan

1. Sheet+

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.

2. Simplified

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.

3. Krisp

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.

4. Rationale

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.

5. Lexica

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


See More Posts

background

Ternyata, Begini di Balik Layar Algoritma Twitter! | Azura’s 7-Days Wrap Up

background

Kenapa Programmer Harus Bisa Bahasa Inggris? | Azura’s 7-Days Wrap Up

background

Intip Rahasia Discord & Content Creator Sat Set! | 7-Days Wrap Up

Show more