TUGAS 4 PPL

 HIGH LEVEL DESIGN (TWITTER)

                                                                                                                Nama    : Danno Denis Dhaifullah
                                                                                                                NRP      : 5025211027

High Level Design

High Level Design (HLD) adalah pandangan menyeluruh mengenai struktur dan konsepsi suatu sistem atau aplikasi. Ini memberikan gambaran umum tentang arsitektur yang akan diadopsi tanpa terlalu memperhatikan detail-detail implementasi. HLD biasanya diterapkan pada tahap awal pengembangan perangkat lunak, sebelum Low Level Design (LLD) mulai dibentuk.

Dalam proses pembuatan HLD, fokus utamanya adalah mengidentifikasi komponen-komponen kunci dari sistem serta hubungan dan interaksi di antara mereka. Ini termasuk pemetaan kebutuhan fungsional dan non-fungsional, identifikasi aliran data, serta penggambaran arsitektur secara keseluruhan.

HLD bertujuan untuk memberikan pemahaman yang jelas tentang bagaimana sistem akan beroperasi secara menyeluruh, sehingga memungkinkan tim pengembang untuk memahami tujuan dan tantangan yang akan dihadapi sepanjang siklus pengembangan. Dengan demikian, HLD menjadi landasan penting bagi pembentukan rancangan lebih rinci dalam tahap berikutnya dari proses pengembangan perangkat lunak.

Persyaratan Sistem Desain Twitter

Persyaratan Fungsional

  1. Pengguna memiliki kemampuan untuk membuat dan membagikan tweet baru, yang dapat berupa teks, gambar, video, dan berbagai jenis media lainnya.
  2. Fitur lain yang tersedia adalah kemampuan pengguna untuk mengikuti pengguna lainnya, memungkinkan mereka untuk melihat konten yang dibagikan oleh pengguna yang mereka ikuti.
  3. Selain itu, pengguna juga diberikan kemampuan untuk melakukan pencarian terhadap tweet yang dibagikan oleh pengguna lain, memudahkan mereka dalam menemukan konten yang relevan dengan minat mereka.
  4. Setiap pengguna memiliki akses ke sebuah umpan berita yang terdiri dari tweet-tweet yang dibagikan oleh pengguna yang mereka ikuti di platform Twitter, memastikan bahwa mereka tetap terhubung dengan aktivitas terbaru dari jaringan sosial mereka.

Persyaratan Non Fungsional

  1. Ketersediaan tinggi dengan latensi rendah
  2. Sistem harus efisien dan terukur

Persyaratan yang Diperpanjang

  1. Analitik dan Metrik
  2. Tweet Favorit
  3. Fungsi Retweet

Perkiraan Kapasitas Untuk Sistem Desain Twitter

Perkiraan Traffic

Mari kita bayangkan kita memiliki total 1 miliar pengguna, dengan 200 juta di antaranya adalah pengguna aktif harian (Daily Active User). Jika kita mengasumsikan bahwa setiap pengguna aktif mengirimkan rata-rata 5 tweet per hari, maka jumlah total tweet yang dihasilkan setiap harinya akan mencapai 1 miliar tweet.


Tweet juga dapat memuat media seperti gambar atau video. Jika kita berasumsi bahwa 10 persen dari semua tweet mengandung file media yang dibagikan oleh pengguna, maka kita akan memiliki tambahan 100 juta file media yang perlu disimpan setiap harinya.


Dari data yang sudah kita asumsikan, permintaan sistem kita per-detik akan menjadi:


Perkiraan Penyimpanan

Mari kita asumsikan bahwa setiap pesan memiliki ukuran rata-rata 100 Byte. Dengan demikian, kita akan memerlukan ruang penyimpanan database sekitar 100 GB setiap harinya untuk menyimpan semua pesan tersebut.


Selain itu, 10 persen dari pesan harian tersebut (yakni 100 juta pesan) adalah file media yang dibagikan oleh pengguna. Jika kita asumsikan setiap file media memiliki ukuran rata-rata 50 KB, maka kita akan memerlukan tambahan ruang penyimpanan sebesar 5 TB setiap harinya untuk file-file media tersebut.


Untuk menyimpan data selama 10 tahun, kita akan membutuhkan total ruang penyimpanan sekitar 19 PB.



Perkiraan Bandwith

Karena sistem kita harus menangani aliran data sebesar 5,1 TB setiap harinya, kita akan memerlukan bandwidth sekitar 60 MB per detik untuk mengelola volume data tersebut.


Use Case Design untuk Sistem Desain Twitter


Pada diagram di atas:
  1. Saat pengguna mengklik halaman Twitter mereka, mereka akan diarahkan ke halaman utama. Di dalam halaman utama ini terdapat beberapa subhalaman: Halaman Beranda, Halaman Pencarian, dan Halaman Notifikasi.
  2. Pada Halaman Beranda, terdapat opsi untuk melihat Tweet baru serta untuk memposting Gambar atau Video.
  3. Di setiap Tweet baru, terdapat tombol untuk menyukai, tidak menyukai, memberikan komentar, serta tombol untuk mengikuti atau berhenti mengikuti pengguna lain.
  4. Pengguna Tamu hanya memiliki akses untuk melihat tweet apa pun tanpa bisa berinteraksi lebih lanjut.
  5. Pengguna Terdaftar memiliki kemampuan untuk melihat dan memposting tweet, serta untuk mengikuti dan berhenti mengikuti pengguna lain.
  6. Pengguna Terdaftar juga dapat membuat tweet baru.

High Level Design untuk Sistem Desain Twitter



Arsitektur

Dalam implementasi Twitter kami, kami memilih untuk menerapkan arsitektur layanan mikro karena ini memungkinkan skala horizontal yang lebih mudah dan memisahkan fungsionalitas layanan kami. Setiap layanan akan bertanggung jawab atas model datanya sendiri. Kami merencanakan untuk membagi sistem kami menjadi beberapa layanan inti yang akan mengelola fungsi-fungsi yang berbeda. 

Dengan membagi sistem menjadi layanan-layanan yang terpisah, kami dapat mengelola dan mengembangkan setiap bagian dengan lebih efisien. Hal ini juga memungkinkan kami untuk melakukan penyesuaian dan pemeliharaan tanpa mengganggu operasi keseluruhan dari platform Twitter kami.

Layanan Pengguna

Layanan ini bertugas mengatasi berbagai masalah terkait pengguna, termasuk proses otentikasi dan penyimpanan informasi pengguna. Fitur-fitur seperti Halaman Login, Halaman Pendaftaran, Halaman Profil, dan Halaman Beranda akan disertakan ke dalam lingkup layanan Pengguna. 

Selain mengelola proses masuk dan keluar pengguna, layanan ini juga akan memperbarui dan menyimpan informasi pengguna secara teratur, memastikan bahwa data pengguna tetap aman dan terkini. Dengan mengkonsolidasikan fungsi-fungsi penting ini dalam satu layanan, pengelolaan dan pemeliharaan sistem akan menjadi lebih efisien.

Layanan Umpan Berita

Layanan ini bertugas mengelola proses pembuatan dan penyebaran umpan berita pengguna. Kami akan menjelaskan secara mendalam mengenai konsep newsfeed. Meskipun terlihat sederhana untuk diimplementasikan, terdapat banyak faktor yang dapat memengaruhi keberhasilan atau kegagalan fitur ini. Oleh karena itu, kami akan membagi permasalahan ini menjadi dua bagian untuk dipelajari lebih lanjut:

Generation

Bayangkan kita ingin menyusun feed untuk pengguna A. Prosesnya akan seperti ini:

  1. Pertama, kita perlu mengumpulkan ID dari semua pengguna dan entitas terkait seperti tagar dan topik yang relevan.
  2. Selanjutnya, kita akan menerapkan algoritme yang sesuai untuk menilai dan memeringkat tweet-tweet tersebut berdasarkan sejumlah parameter, seperti relevansi dan manajemen waktu.
  3. Kemudian, algoritme pemeringkatan akan digunakan untuk memberi peringkat kepada tweet-tweet tersebut berdasarkan faktor-faktor seperti relevansi, waktu, tingkat keterlibatan, dan lain-lain.
  4. Setelah itu, data tweet yang telah diberi peringkat akan dikembalikan kepada pengguna melalui antarmuka klien, dengan paginasi yang sesuai.
Proses pembuatan feed ini merupakan tugas yang memakan waktu, terutama untuk pengguna yang mengikuti banyak akun. Untuk meningkatkan efisiensi, kita dapat menyusun feed terlebih dahulu dan menyimpannya dalam cache. Selanjutnya, kita dapat menerapkan mekanisme yang memungkinkan feed diperbarui secara berkala dan algoritma pemeringkatan diaplikasikan pada tweet-tweet baru yang masuk.

Penerbitan

Proses penerbitan merupakan tahap di mana kami mengirimkan data feed kepada setiap pengguna sesuai dengan preferensi yang telah ditentukan oleh masing-masing. Ini dapat menjadi tugas yang cukup menuntut, terutama ketika pengguna memiliki jutaan teman atau pengikut. Untuk mengatasi tantangan ini, kami mengadopsi tiga pendekatan yang berbeda:
  • Model Tarik
    • Ketika seorang pengguna mengirimkan sebuah tweet, dan pengikutnya memuat kembali umpan berita mereka, umpan tersebut secara otomatis dibuat dan disimpan dalam memori sistem kami.
    • Feed terbaru hanya akan dimuat saat pengguna secara aktif meminta untuk melihatnya. Pendekatan ini dirancang untuk mengurangi frekuensi operasi penulisan yang dilakukan pada basis data kami, sehingga mengoptimalkan kinerja sistem secara keseluruhan.
    • Namun, pendekatan ini memiliki kelemahan di mana pengguna tidak akan dapat melihat update terbaru pada feed mereka kecuali mereka secara eksplisit memperbarui data dari server kami. Hal ini dapat meningkatkan jumlah operasi baca yang terjadi di sisi server, yang perlu dipertimbangkan secara cermat dalam merancang strategi manajemen feed yang efektif.

  • Model Dorong
    • Dalam pendekatan ini, setelah seorang pengguna membuat sebuah tweet, tweet tersebut secara otomatis akan didistribusikan ke semua feed pengikutnya.
    • Pendekatan ini memiliki keunggulan dalam mencegah sistem untuk melakukan pengecekan pada seluruh daftar pengikut pengguna guna mencari pembaruan. 
    • Namun, ada kelemahan yang perlu diperhatikan dalam pendekatan ini, yaitu peningkatan jumlah operasi penulisan yang terjadi pada database. Hal ini perlu dipertimbangkan secara hati-hati dalam merancang sistem agar tidak memberikan beban tambahan pada sisi database.

  • Model Hibrida
    • Salah satu pendekatan yang diusulkan adalah sebuah model hibrida yang menggabungkan elemen-elemen dari model tarik dan model dorong.
    • Model ini mengintegrasikan kelebihan-kelebihan yang dimiliki oleh kedua model sebelumnya, dengan tujuan memberikan pendekatan yang seimbang dan terintegrasi.
    • Model hibrida ini membatasi pengguna dengan jumlah pengikut yang lebih sedikit untuk menggunakan model dorong, sementara untuk pengguna dengan jumlah pengikut yang lebih besar, seperti para selebriti, mereka menggunakan model tarik.
    • Melalui pendekatan ini, diharapkan dapat menciptakan pengalaman yang optimal bagi semua pengguna, dengan mempertimbangkan skala dan kompleksitas dari jaringan sosial mereka.

Layanan Tweet

Layanan tweet berguna untuk menangani kasus penggunaan terkait tweet seperti mengunggah tweet, favorit, dll.

Retweet

Retweet menjadi salah satu fitur tambahan yang ingin kita terapkan. Untuk menerapkan fitur ini, langkahnya cukup sederhana. Kita hanya perlu membuat sebuah tweet baru dengan mencantumkan ID pengguna dari pengguna yang melakukan retweet terhadap tweet asli tersebut. Selanjutnya, kita perlu memodifikasi properti jenis enum dan konten dari tweet baru tersebut agar dapat terhubung dengan tweet asli yang di-retweet. 

Proses ini memungkinkan kita untuk secara efisien mengimplementasikan fitur retweet dengan memanfaatkan struktur yang sudah ada dalam platform, sehingga memberikan pengalaman pengguna yang lebih kaya dan interaktif.

Layanan Pencarian

Layanan ini memiliki tanggung jawab utama dalam mengelola berbagai fungsi yang berkaitan dengan pencarian. Di dalam layanan pencarian, kita dapat mengakses berbagai jenis konten seperti postingan terpopuler, unggahan terbaru, dan sebagainya. Kemampuan untuk menyajikan konten-konten ini kepada pengguna didasarkan pada peringkat. 

Selain memberikan akses kepada konten-konten tersebut, layanan ini juga bertugas untuk memastikan bahwa konten-konten yang disajikan sesuai dengan preferensi dan kebutuhan pengguna. Ini mencakup proses peringkat yang cermat dan terukur untuk menghadirkan pengalaman pencarian yang optimal bagi pengguna.

Layanan Media

Layanan ini berguna untuk menangani unggahan media (file, gambar, video, dll.)

Layanan Analisis

Layanan ini berguna untuk kasus penggunaan analitik dan metrik.

Algoritma Pemeringkatan

Kami memerlukan algoritme pemeringkatan untuk memberi peringkat setiap tweet berdasarkan relevansinya bagi setiap pengguna tertentu.

Contoh: Facebook dulu menggunakan algoritma EdgeRank. Di sini, peringkat setiap item feed dijelaskan oleh:


  1. Afinitas: Parameter yang mengukur kedekatan antara pengguna dengan pembuat konten. Ketika pengguna secara konsisten berinteraksi dengan konten yang diproduksi oleh pembuat konten tertentu melalui tindakan seperti menyukai, berkomentar, atau mengirim pesan, maka afinitasnya akan meningkat. Peningkatan afinitas ini kemudian mempengaruhi peringkat postingan yang dihasilkan oleh pembuat konten tersebut.
  2. Bobot: Nilai yang diberikan untuk mengukur signifikansi setiap jenis interaksi pengguna terhadap konten. Sebagai contoh, sebuah komentar mungkin memiliki bobot yang lebih tinggi daripada sekadar suka, sehingga postingan yang menerima lebih banyak komentar memiliki kemungkinan lebih besar untuk mendapatkan peringkat yang lebih tinggi.
  3. Peluruhan: Konsep yang menggambarkan penurunan nilai seiring berjalannya waktu dari sebuah interaksi antara pengguna dan konten. Semakin lama waktu berlalu sejak interaksi terakhir, semakin kecil nilai peluruhan tersebut, yang pada akhirnya dapat menyebabkan penurunan peringkat konten tersebut.
Algoritme saat ini telah menjadi lebih kompleks, di mana proses pemeringkatan dilakukan menggunakan model pembelajaran mesin yang mampu mempertimbangkan ribuan faktor, termasuk namun tidak terbatas pada afinitas, bobot, dan peluruhan. Model ini memungkinkan platform untuk memperhitungkan secara akurat preferensi dan perilaku pengguna untuk memberikan pengalaman yang lebih personal dan relevan.

Layanan Pencarian

  1. Terkadang, Database Management System (DBMS) yang tradisional tidak mampu mengatasi kebutuhan kinerja yang tinggi. Dalam situasi di mana kita perlu menyimpan, mencari, dan menganalisis data dalam jumlah besar dengan cepat dan hampir secara real-time, serta memberikan hasil dalam hitungan milidetik, kita memerlukan solusi yang lebih canggih. Elasticsearch hadir sebagai solusi yang tepat untuk skenario penggunaan semacam itu.
  2. Elasticsearch merupakan sebuah platform yang berfungsi sebagai mesin pencarian dan analisis yang didistribusikan. Yang menarik, platform ini tersedia secara gratis dan bersifat open source, dan dapat menangani segala jenis data, baik itu data tekstual, numerik, geospasial, terstruktur, maupun tidak terstruktur. Dibangun di atas Apache Lucene, Elasticsearch menawarkan kemampuan pencarian dan analisis yang kuat serta scalable, menjadikannya pilihan yang ideal untuk berbagai keperluan aplikasi.

Bagaimana Kami Mengidentifikasi Topik yang Sedang Trend?

  1. Fitur-fitur terkini didasarkan pada fungsi pencarian yang paling populer saat ini.
  2. Untuk mengoptimalkan pencarian, kami mengimplementasikan strategi penyimpanan yang efisien. Query, tagar, dan topik yang paling sering dicari disimpan dalam cache setiap n detik dan secara berkala diperbarui setiap m detik melalui mekanisme batch processing.
  3. Kami juga menerapkan algoritma pemeringkatan yang canggih untuk meningkatkan relevansi topik yang sedang tren. Dengan memberikan bobot yang lebih tinggi dan personalisasi yang lebih baik, kami berupaya untuk memberikan pengalaman pencarian yang lebih memuaskan bagi pengguna kami.

Layanan Pemberitahuan

  1. Notifikasi push menjadi salah satu elemen penting dalam ekosistem setiap platform media sosial.
  2. Dalam mengelola notifikasi push, sebuah solusi yang sering digunakan adalah dengan memanfaatkan teknologi antrian pesan atau perantara pesan, seperti Apache Kafka. Teknologi tersebut memungkinkan untuk mengirimkan permintaan notifikasi ke Firebase Cloud Messaging (FCM) atau Apple Push Notification Service (APNS). Dari sana, sistem notifikasi akan mengelola pengiriman notifikasi push ke perangkat pengguna.

Kesimpulan

Twitter menghadapi tantangan besar dalam mengelola aliran tweet yang terus menerus mengalir setiap detiknya. Karena volumenya yang besar, satu sistem tunggal atau tabel besar tidak cukup untuk menangani semuanya. Oleh karena itu, Twitter mengadopsi pendekatan terdistribusi yang kompleks. Mereka memanfaatkan strategi sebar dan kumpulkan dengan mengoperasikan beberapa server atau pusat data yang tersebar di berbagai lokasi.

Ketika sebuah kueri, seperti misalnya #geeksforgeeks, diterima oleh Twitter, sistem secara otomatis mengirimkannya ke semua server atau pusat data yang tersedia. Setiap server atau pusat data, yang dikenal dengan sebutan shard Early Bird, kemudian diminta untuk mengembalikan hasil pencarian yang relevan dengan kueri tersebut. Proses ini memungkinkan Twitter untuk mencari dan menyaring tweet yang sesuai dengan kriteria yang diinginkan dengan cepat dan efisien.

Setelah hasil dari setiap shard dikumpulkan, langkah selanjutnya adalah mengurutkan, menggabungkan, dan memberikan peringkat ulang kepada tweet-tweet yang telah ditemukan. Proses pemberian peringkat ini didasarkan pada berbagai faktor, termasuk jumlah retweet, jumlah balasan, dan tingkat popularitas tweet tersebut.

Dengan pendekatan ini, Twitter dapat memberikan pengalaman pencarian yang cepat dan relevan bagi penggunanya, bahkan di tengah aliran informasi yang begitu besar dan dinamis di platform mereka.

Comments

Popular posts from this blog

Tugas 11 PPB

Tugas 7 PPB

Tugas 8 PPB