High Level Design

 

 Nama : Muhamad Faiz Fernanda

 NRP   : 5025211186

 Kelas  : PPL-A

 High Level Design

    Desain tingkat tinggi (high-level design) adalah tahap dalam proses pengembangan perangkat lunak yang berfokus pada penentuan struktur dan arsitektur umum sistem. Pada fase ini, gambaran umum sistem dikembangkan dengan mengidentifikasi komponen-komponen utama, modul-modul, dan interaksi antar bagian-bagian tersebut tanpa masuk ke detail implementasi. High-level design mencakup pembuatan diagram arsitektur, diagram modul, dan deskripsi komponen yang menjelaskan fungsi dan tanggung jawab utama masing-masing komponen. Tujuan utama dari tahap ini adalah untuk memberikan pemahaman yang jelas tentang cara sistem akan diorganisasikan dan bagaimana elemen-elemen utamanya akan berinteraksi satu sama lain untuk memenuhi persyaratan fungsional dan non-fungsional.

Pentingnya desain tingkat tinggi terletak pada kemampuannya untuk membangun fondasi yang solid bagi pengembangan dan desain yang lebih detail. Dengan mendefinisikan struktur dasar sistem, high-level design membantu mengidentifikasi potensi masalah arsitektural sejak dini, mengurangi risiko dan biaya perubahan pada fase-fase selanjutnya. Selain itu, desain tingkat tinggi memberikan panduan bagi pengembang dan tim teknis lainnya, memastikan bahwa semua anggota tim memiliki pemahaman yang sama mengenai tujuan dan struktur sistem. Ini juga memfasilitasi komunikasi antara berbagai pemangku kepentingan, memastikan bahwa visi dan tujuan proyek dipahami secara konsisten oleh semua pihak yang terlibat.

Pada tugas pertemuan kali ini, saya akan menganalisis desain tingkat tinggi dari aplikasi Twitter berdasarkan referensi video yang telah diberikan.



Twitter adalah platform media sosial yang memungkinkan pengguna berbagi pemikiran, informasi, dan berita dalam bentuk pesan pendek yang dikenal sebagai "tweet". Diluncurkan pada tahun 2006, Twitter telah menjadi salah satu platform komunikasi online paling populer di dunia, dengan jutaan pengguna aktif setiap hari. Pengguna dapat mengirim dan menerima tweet hingga 280 karakter, yang dapat berisi teks, gambar, video, dan tautan. Twitter juga menawarkan fitur seperti retweet, like, dan balasan untuk berinteraksi dengan tweet pengguna lain. Selain itu, fitur-fitur seperti hashtag dan trending topics memungkinkan pengguna menemukan dan berpartisipasi dalam percakapan yang sedang tren di platform ini.

Persyaratan Sistem

Persyaratan Fungsional:

Pengguna dapat membuat dan membagikan tweet, serta menghapusnya jika diperlukan. Mereka juga dapat berinteraksi dengan tweet lain dengan membalas, menyukai, me-retweet, dan membagikannya. Pengguna dapat mengikuti atau berhenti mengikuti akun lain. Saat mengakses timeline, pengguna melihat daftar tweet dari akun yang mereka ikuti, disusun berdasarkan relevansi. Pengguna juga dapat mencari tweet menggunakan kata kunci, hashtag, atau nama pengguna melalui kolom pencarian. Selain itu, mereka dapat melihat topik yang sedang tren di wilayah mereka di bagian tren.

Persyaratan Non-Fungsional:

Aplikasi perlu memastikan tingkat ketersediaan yang tinggi, skalabilitas yang memadai untuk menangani sejumlah besar pengguna, serta performa yang cepat dan responsif.


Estimasi Kapasitas untuk Desain Sistem Sosial Media

Untuk memperkirakan kapasitas sistem, kita perlu menganalisis perkiraan tingkat klik harian.

Estimasi Lalu Lintas:

Misalkan kita memiliki 800 juta pengguna total dengan 150 juta pengguna aktif harian (DAU), dan rata-rata setiap pengguna men-tweet 4 kali sehari. Ini memberi kita 600 juta tweet per hari.

                                        150 juta pengguna×4 tweet=600 juta tweet/hari150 \text{ juta pengguna} \times 4 \text{ tweet} = 600 \text{ juta tweet/hari}


Tweet juga dapat berisi media seperti gambar atau video. Kita dapat berasumsi bahwa 15 persen tweet adalah file media yang dibagikan oleh pengguna, yang memberi kita tambahan 90 juta file yang perlu disimpan.

                                        15%×600 juta=90 juta/hari15\% \times 600 \text{ juta} = 90 \text{ juta/hari}

Untuk Permintaan Sistem per Detik (RPS) kita adalah:

            600 juta permintaan per hari diterjemahkan menjadi sekitar 7.000 permintaan per detik.

                                  600 juta/(24 jam×3600 detik)=7.000 permintaan/detik600 \text{ juta} / (24 \text{ jam} \times 3600 \text{ detik}) = 7.000 \text{ permintaan/detik}

Estimasi Penyimpanan:

Misalkan setiap pesan rata-rata berukuran 150 byte, kita akan membutuhkan sekitar 90 GB penyimpanan basis data setiap hari.

                                                            600 juta×150 byte=90 GB/hari600 \text{ juta} \times 150 \text{ byte} = 90 \text{ GB/hari}

15 persen dari pesan harian kita (90 juta) adalah file media sesuai persyaratan kita. Misalkan setiap file rata-rata berukuran 75 KB, kita akan membutuhkan 6.75 TB penyimpanan setiap hari.

                                                            90 juta×75 KB=6.75 TB/hari90 \text{ juta} \times 75 \text{ KB} = 6.75 \text{ TB/hari}

Untuk 10 tahun membutuhkan 24.6675 PB penyimpanan.

                            (6.75 TB+0.09 TB)×365 hari×10 tahun=24.6675 PB(6.75 \text{ TB} + 0.09 \text{ TB}) \times 365 \text{ hari} \times 10 \text{ tahun} = 24.6675 \text{ PB}

Estimasi Bandwidth:

Karena sistem kita menangani 6.84 TB data masuk setiap hari, kita akan membutuhkan bandwidth minimal sekitar 79 MB per detik.

                                                6.84 TB/(24 jam×3600 detik)=79 MB/detik6.84 \text{ TB} / (24 \text{ jam} \times 3600 \text{ detik}) = 79 \text{ MB/detik}


Use Case Diagram

Pada diagram tersebut, pengguna akan mengakses Halaman Twitter mereka dan diarahkan ke halaman utama. Di halaman utama ini, terdapat tiga sub-halaman utama: Halaman Beranda, Halaman Pencarian, dan Halaman Pemberitahuan.

  • Halaman Beranda: Pengguna akan menemukan tweet terbaru serta memiliki opsi untuk memposting gambar atau video. Setiap tweet baru akan dilengkapi dengan tombol suka, tidak suka, komentar, serta tombol ikuti atau berhenti mengikuti.
  • Pengguna tamu: Hanya dapat melihat tweet tanpa akses untuk berinteraksi.
  • Pengguna terdaftar: Memiliki akses untuk melihat dan memposting tweet, serta dapat mengikuti atau berhenti mengikuti pengguna lain. Selain itu, mereka juga dapat membuat tweet baru.



Kami telah menerapkan arsitektur layanan mikro untuk platform Twitter kami, yang memisahkan layanan-layanan inti untuk mendukung penskalaan horizontal dan pengelolaan yang lebih baik terhadap model data masing-masing layanan. Pertama-tama, terdapat Layanan Pengguna yang bertanggung jawab atas otentikasi dan informasi pengguna, termasuk Halaman Login, Halaman Pendaftaran, Halaman Profil, dan Halaman Beranda. Selanjutnya, Layanan Umpan Berita mengurus pembuatan dan publikasi umpan berita pengguna. Kami juga mengimplementasikan Layanan Tweet yang menangani segala aspek terkait tweet, seperti memposting tweet dan menambahkan ke favorit. Selain itu, terdapat Layanan Pencarian yang mengurus fungsi pencarian, seperti mencari postingan teratas dan terbaru. Layanan Media didedikasikan untuk mengelola unggahan media seperti gambar, video, dan berkas lainnya. Kami juga menambahkan Layanan Analisis untuk melacak metrik dan analitik terkait penggunaan platform. Terakhir, kami memperkenalkan Algoritma Pemeringkatan untuk memberi peringkat tweet berdasarkan relevansinya bagi setiap pengguna.

Data Model 


Kesimpulan

Twitter menangani ribuan tweet per detik sehingga Anda tidak bisa hanya memiliki satu sistem atau tabel besar untuk menangani semua data sehingga harus ditangani melalui pendekatan terdistribusi. Twitter menggunakan strategi sebar dan kumpulkan dengan menyiapkan beberapa server atau pusat data yang memungkinkan pengindeksan. Saat Twitter mendapatkan kueri (katakanlah #geeksforgeeks), Twitter mengirimkan kueri tersebut ke semua server atau pusat data dan menanyakan setiap shard Early Bird . Semua early bird yang cocok dengan kueri akan mengembalikan hasilnya. Hasilnya dikembalikan, diurutkan, digabungkan, dan diberi peringkat ulang. Pemeringkatan dilakukan berdasarkan jumlah retweet, balasan, dan popularitas tweet. 


Komentar

Postingan populer dari blog ini

Low Level Design

Evaluasi Akhir Semester

Estimasi Kapasitas Sistem