Tugas 6
Nama : Fauzi Rizki Pratama
NRP : 5025211220
Low Level Design (LLD) adalah tahap dalam pengembangan perangkat lunak di mana konsep-konsep yang telah diidentifikasi dalam desain tingkat tinggi (High Level Design atau HLD) diimplementasikan menjadi rancangan teknis yang lebih mendetail. Tahap ini dilakukan setelah spesifikasi fungsional telah ditetapkan dan menjelaskan secara rinci bagaimana setiap fitur atau komponen akan diwujudkan. Fokus utama dalam desain tingkat rendah adalah pada aspek teknis dan implementasi konkret dari perangkat lunak yang sedang dikembangkan, seperti pemilihan struktur data, algoritma, desain antarmuka, dan implementasi rinci fitur-fitur yang direncanakan sebelumnya.
Low Level Design Twitter
Untuk Pemilihan Database
Dalam memilih arsitektur database yang sesuai, sistem manajemen basis data relasional (RDBMS) seperti SQL menjadi pilihan utama untuk tabel-tabel yang menyimpan informasi kritis seperti detail pengguna, tweet, dan media terkait. Kepatuhan SQL terhadap properti ACID (Atomicity, Consistency, Isolation, Durability) memastikan integritas data yang tinggi dan keandalan operasional, sangat penting dalam konteks Twitter yang melibatkan jutaan interaksi setiap hari.
Untuk data yang memerlukan persyaratan konsistensi yang lebih fleksibel, seperti metrik dan analisis terkait tweet, penggunaan basis data NoSQL seperti MongoDB adalah pilihan yang tepat. Basis data NoSQL yang menerapkan konsep BASE (Basically Available, Soft state, Eventually consistent) memungkinkan skala yang lebih besar dan fleksibilitas dalam menangani data tidak terstruktur yang diperlukan untuk analisis besar-besaran.
Komunikasi dengan Server
Menggunakan API RESTful untuk Twitter membuktikan keunggulan karena kesederhanaan, antarmuka seragam, dan keadaan tanpa keadaan (statelessness). Pendekatan RESTful yang langsung dengan metode HTTP standar memfasilitasi interoperabilitas di berbagai platform dan bahasa pemrograman, mendukung skalabilitas horizontal untuk menangani lalu lintas tinggi dari jutaan pengguna aktif.
Microservices Used
- Klien: Pengguna Twitter berinteraksi dengan layanan melalui aplikasi mobile, web, atau desktop untuk membuat, mengedit, dan mengeksplorasi tweet serta interaksi sosial lainnya.
- Pengimbang Beban: Mengelola distribusi lalu lintas ke server-server backend, mengoptimalkan ketersediaan dan kinerja sistem secara keseluruhan.
- Layanan Otentikasi: Mengelola proses otentikasi pengguna untuk akses yang aman ke platform.
- Layanan Basis Data: Menyimpan tweet, profil pengguna, dan metadata dalam format yang optimal untuk pencarian dan analisis cepat.
- Layanan Pencarian: Memfasilitasi pencarian tweet berdasarkan kriteria seperti tagar atau lokasi, menggunakan teknologi pencarian yang efisien seperti ElasticSearch.
- Layanan Penempatan Pesanan: Mengelola siklus hidup tweet dari pembuatan hingga penghapusan, dengan antrian pesan untuk memastikan pengolahan yang efisien.
- Layanan Notifikasi: Mengelola pengiriman notifikasi kepada pengguna tentang interaksi dan update penting.
- Layanan Media: Menyimpan dan mengelola media terkait tweet seperti gambar dan video, menggunakan layanan CDN untuk pengiriman yang cepat.
Alur Kerja Sistem
Proses langkah demi langkah untuk penggunaan Twitter mencakup:
1. Pengguna membuat atau menanggapi tweet melalui antarmuka klien.
2. Tweet disimpan dalam basis data terdistribusi dan diindeks untuk pencarian cepat.
3. Layanan notifikasi menginformasikan pengguna tentang interaksi dan pembaruan terkait tweet mereka.
4. Pengguna dapat memanfaatkan layanan pencarian untuk menemukan tweet berdasarkan kriteria tertentu.
5. Layanan media memastikan konten multimedia terkait tweet diakses dengan cepat melalui CDN.
6. Layanan penempatan pesanan mengatur siklus hidup tweet dari pembuatan hingga penghapusan, memastikan integritas dan konsistensi data.
Optimalisasi lebih lanjut untuk sistem
Untuk meningkatkan efisiensi Twitter, beberapa langkah optimalisasi dapat dipertimbangkan:
- Implementasi strategi caching untuk mempercepat akses data yang sering diminta.
- Penggunaan teknologi pemrosesan asinkron untuk menangani tugas-tugas yang tidak memerlukan waktu nyata.
- Penggunaan pengindeksan yang efisien dan strategi sharding untuk mendukung kinerja skala besar.
- Penggunaan pemantauan kinerja sistem secara teratur untuk mengidentifikasi dan mengatasi bottleneck yang potensial.
Dengan demikian, desain tingkat rendah untuk Twitter menggambarkan implementasi teknis yang mendetail dari desain tingkat tinggi, memastikan bahwa setiap aspek operasional dan teknis platform terpenuhi dengan optimal.
Komentar
Posting Komentar