Tugas 4 - High Level Design
Nama: Sekar Ambar Arum
NRP: 5025211041
PPL-A
Tugas 4 - High Level Design (Twitter)
Pada pertemuan kali ini, mahasiswa berlatih membuat High Level Design dari Video Twitter yang telah dilampirkan.
Referensi: Design Twitter
Description
Twitter adalah platform media sosial yang memungkinkan pengguna untuk berbagi pemikiran, informasi, dan konten dalam bentuk pesan singkat yang disebut "tweet." Dengan batas karakter 280, pengguna dapat membuat tweet berisi teks, gambar, video, atau tautan, dan berinteraksi dengan pengguna lain dengan menyukai, membalas, dan membagikan kembali tweet. Fitur notifikasi, timeline, dan trending topics memberikan pengalaman yang dinamis, sementara privasi yang dapat disesuaikan dan kebijakan keamanan melindungi pengguna dari konten tidak diinginkan. Twitter juga menyediakan analitik, verifikasi akun, dan reputasi, menjadikannya platform yang sangat berpengaruh untuk menyampaikan ide, berita, dan terhubung dengan audiens global.
Requirements & Goals of the System
Dalam merancang sistem Twitter, terdapat beberapa persyaratan perancangan yang harus dipertimbangkan:
Dalam merancang sistem Twitter, terdapat beberapa persyaratan perancangan yang harus dipertimbangkan:
Functional Requirements:
- Pengguna harus dapat membuat dan mengedit profil, termasuk gambar profil dan informasi pribadi.
- Pengguna dapat membuat, mengedit, dan menghapus tweet.
- Fitur pencarian untuk mencari tweet, tagar (#), dan pengguna lain.
- Timeline yang menampilkan tweet dari pengguna yang diikuti oleh pengguna tersebut.
- Interaksi seperti menyukai (like), membalas, dan membagikan kembali (retweet) tweet.
- Notifikasi untuk memberi tahu pengguna tentang interaksi dengan tweet mereka.
- Sistem pengikut (followers) dan pengikut (following) untuk mengelola jaringan sosial pengguna.
Non-Functional Requirements:
- Kinerja dan Skalabilitas: Sistem harus mampu menangani beban kerja tinggi dan skalabilitas horizontal untuk memperluas kapasitas secara linier saat jumlah pengguna meningkat.
- Keamanan: Perlindungan data pengguna, autentikasi aman, enkripsi data, dan kontrol akses yang ketat.
- Kemampuan untuk menangani lonjakan lalu lintas, pertumbuhan pengguna, dan memberikan respons sistem yang cepat.
Estimasi kapasitas Twitter adalah proses untuk menentukan ukuran dan kemampuan infrastruktur yang diperlukan untuk menangani beban kerja yang dihasilkan oleh pengguna Twitter.
- Traffic Estimation
Estimasi trafik Twitter adalah proses perkiraan jumlah penggunaan dan interaksi yang terjadi di platform Twitter dalam periode waktu tertentu. Estimasi ini penting dalam merencanakan infrastruktur dan kapasitas sistem untuk menangani beban kerja yang dihasilkan oleh pengguna.
Data usage (penggunaan data) di Twitter merujuk pada jumlah data yang dikonsumsi atau ditransfer oleh pengguna saat menggunakan platform tersebut. Penggunaan data bisa bervariasi tergantung pada aktivitas pengguna, seperti membuat tweet, mengunggah gambar atau video, melihat timeline, mengecek notifikasi, dan melakukan interaksi lainnya.
Frontend (Antarmuka Pengguna):
- Web Interface: Antarmuka web yang digunakan oleh pengguna untuk membuat tweet, mengikuti pengguna lain, dan berinteraksi dengan konten.
- Aplikasi Mobile: Aplikasi mobile untuk platform iOS dan Android yang menyediakan fungsionalitas serupa dengan antarmuka web.
Backend Services:
- API Gateway: Mengelola permintaan pengguna dan meneruskannya ke layanan yang sesuai dalam arsitektur backend.
- Authentication Service: Menangani proses autentikasi pengguna dan pembuatan sesi.
- User Service: Mengelola informasi pengguna, termasuk profil, pengaturan, dan relasi jaringan sosial (followers, following).
- Tweet Service: Menangani operasi terkait tweet, seperti pembuatan, pengeditan, dan penghapusan tweet.
- Media Service: Menyimpan dan mengelola media yang diunggah oleh pengguna, seperti gambar dan video.
- Search Service: Menyediakan layanan pencarian untuk tweet, tagar (#), pengguna, dan topik tertentu.
- Notification Service: Mengelola pengiriman notifikasi kepada pengguna tentang interaksi dengan tweet mereka.
- Analytics Service: Menyediakan analisis data tentang penggunaan platform, tren topik, dan perilaku pengguna.
Data Storage:
- Database Server: Digunakan untuk menyimpan data pengguna, tweet, metadata, dan informasi lainnya. Dapat terdiri dari basis data relasional (misalnya MySQL, PostgreSQL) dan basis data NoSQL (misalnya Cassandra, MongoDB).
- File Storage: Digunakan untuk menyimpan media yang diunggah oleh pengguna, seperti gambar dan video.
Caching Layer:
- Memcached/Redis: Digunakan untuk caching data yang sering diakses atau data yang membutuhkan akses cepat, seperti profil pengguna, timeline, dan hasil pencarian.
Message Broker:
- Kafka/RabbitMQ: Digunakan sebagai penghubung antara layanan dalam arsitektur sistem, memfasilitasi pertukaran pesan dan pengiriman asinkron.
Monitoring & Logging:
- Monitoring Tools: Digunakan untuk memantau kinerja sistem secara real-time, mendeteksi masalah, dan melacak metrik kunci seperti lalu lintas, waktu respons, dan penggunaan sumber daya.
- Logging System: Digunakan untuk mencatat aktivitas sistem, kesalahan, dan peristiwa penting lainnya untuk analisis dan pemecahan masalah.
Infrastructure:
- Server Cluster: Sejumlah server fisik atau virtual yang menjalankan berbagai layanan dalam arsitektur sistem.
- Load Balancer: Mengelola distribusi lalu lintas di antara server untuk memastikan kinerja yang seimbang dan responsif.
- Containerization/Orchestration: Penggunaan teknologi kontainer seperti Docker dan manajemen orkestrasi seperti Kubernetes untuk memudahkan pengelolaan dan penskalaan aplikasi.
Security Layer:
- Firewall: Melindungi sistem dari serangan jaringan dan akses yang tidak sah.
- Encryption: Mengenkripsi data yang disimpan dan data yang ditransfer antara pengguna dan sistem untuk keamanan tambahan.
- Access Control: Memastikan bahwa hanya pengguna yang diotorisasi yang dapat mengakses data dan layanan tertentu.
Flow of posting a Tweet and Building the Newsfeed
Alur umum dari proses posting sebuah tweet di Twitter:
- Autentikasi Pengguna: Pengguna harus sudah terautentikasi ke akun Twitter mereka melalui antarmuka pengguna (web atau aplikasi mobile). Ini memastikan bahwa hanya pengguna yang terotentikasi yang dapat membuat tweet.
- Antarmuka Pembuatan Tweet: Pengguna masuk ke antarmuka pembuatan tweet yang menyediakan kotak teks atau ruang untuk memasukkan konten tweet.
- Penulisan Tweet: Pengguna menulis pesan atau konten yang ingin mereka tweet. Batasan panjang tweet adalah 280 karakter, meskipun ada kemungkinan tweet lebih panjang dengan menggunakan fitur penggabungan tweet (threading).
- Penggunaan Media (Opsional): Pengguna dapat melampirkan media seperti gambar, video, atau GIF ke dalam tweet mereka. Media-media ini dapat diunggah langsung dari perangkat pengguna atau dipilih dari galeri media pengguna.
- Menambahkan Tagar (Hashtag): Pengguna dapat menambahkan tagar (#) untuk mencantumkan topik tertentu atau mengikuti percakapan yang sedang tren di platform.
- Menyertakan @NamaPengguna: Pengguna dapat menyertakan tag @NamaPengguna untuk menyebut pengguna lain dalam tweet mereka atau untuk membalas tweet pengguna lain.
- Menyematkan Tautan: Pengguna dapat menyematkan tautan ke situs web, artikel, atau konten eksternal lainnya dalam tweet mereka.
- Pemformatan Teks: Pengguna dapat menggunakan pemformatan teks seperti huruf tebal, miring, atau garis baru (line break) dengan menggunakan kode format yang sesuai.
- Preview dan Koreksi: Sebelum mengirim tweet, pengguna dapat melihat pratinjau tweet untuk memeriksa konten, tautan, tagar, dan pemformatan teks. Jika diperlukan, pengguna dapat mengoreksi atau mengedit tweet mereka.
- Mengirim Tweet: Setelah puas dengan tweet mereka, pengguna dapat mengklik tombol "Tweet" atau "Kirim" untuk memposting tweet mereka ke platform Twitter.
- Pengiriman dan Tampilan: Setelah tweet dikirim, itu akan ditampilkan di timeline pengguna, timeline pengikut pengguna, dan dapat dilihat oleh pengguna lain di platform Twitter.
- Interaksi: Pengguna dan pengguna lain dapat berinteraksi dengan tweet tersebut melalui like, retweet, balasan, atau membagikan tweet ke pengikut mereka.
APIs
API Twitter adalah antarmuka pemrograman aplikasi (Application Programming Interface) yang disediakan oleh Twitter untuk memungkinkan pengembang membuat aplikasi, mengintegrasikan layanan Twitter ke dalam aplikasi mereka, dan mengakses data dan fungsionalitas dari platform Twitter. API Twitter memberikan akses yang terstruktur dan aman kepada berbagai fitur dan data yang tersedia di platform tersebut.
Beberapa fitur dan fungsi yang dapat diakses melalui API Twitter antara lain:
- Mengambil Data Pengguna: Informasi tentang profil pengguna, termasuk nama, foto profil, bio, lokasi, dan pengaturan akun.
- Mengakses Timeline: Mendapatkan tweet dari timeline pengguna, timeline pengikut pengguna, atau timeline hashtag tertentu.
- Interaksi dengan Tweet: Melakukan tindakan seperti like, retweet, reply, dan membagikan tweet.
- Pencarian Tweet: Melakukan pencarian tweet berdasarkan kata kunci, hashtag, atau filter lainnya.
- Pengelolaan Daftar dan Pengikut: Mengelola daftar pengguna yang diikuti, daftar pengikut, serta melakukan operasi seperti follow/unfollow.
- Mengunggah Media: Memungkinkan pengguna untuk mengunggah gambar, video, dan media lainnya ke Twitter melalui API.
- Notifikasi: Mendapatkan notifikasi tentang interaksi dengan tweet pengguna, pengikut baru, atau aktivitas penting lainnya.
- Analytics: Mengakses data analisis dan statistik penggunaan Twitter, seperti jumlah retweet, like, impresi, dan lainnya.
Data Model Design
Berikut adalah entitas-entitas yang dibutuhkan oleh sistem dan atribut-atribut dari setiap entitas.
- Pengguna (User): Pengguna adalah entitas utama yang mewakili individu atau akun di Twitter. Mereka memiliki fungsi untuk membuat, mengedit, dan menghapus tweet. Pengguna juga dapat mengikuti pengguna lain, diikuti oleh pengguna lain, menyukai tweet, dan berinteraksi dengan konten lainnya dalam platform.
- ID Pengguna: Primary key yang mengidentifikasi setiap pengguna di platform Twitter.
- Nama Pengguna: Nama yang digunakan pengguna untuk login dan ditampilkan di profil mereka.
- Nama Lengkap: Nama lengkap pengguna.
- Bio: Deskripsi singkat tentang pengguna atau profil mereka.
- Lokasi: Informasi lokasi geografis pengguna.
- Gambar Profil: URL gambar profil pengguna.
- Tweets: Daftar tweet yang diposting oleh pengguna.
- Pengikut (Followers): Daftar pengguna lain yang mengikuti pengguna ini.
- Mengikuti (Following): Daftar pengguna lain yang diikuti oleh pengguna ini.
- Tweet: Tweet adalah entitas yang mewakili pesan atau konten yang dibagikan oleh pengguna di Twitter. Fungsi utamanya adalah sebagai media untuk berbagi informasi, pemikiran, atau konten kreatif dengan pengikut dan pengguna Twitter lainnya. Pengguna dapat mengedit, menghapus, menyukai, dan retweet tweet.
- ID Tweet: Primary key yang mengidentifikasi setiap tweet yang diposting.
- Konten: Isi dari tweet, berupa teks, gambar, video, atau media lainnya.
- Waktu Pembuatan: Waktu ketika tweet diposting.
- Like: Jumlah pengguna yang menyukai tweet.
- Retweet: Jumlah retweet atau berbagi kembali tweet oleh pengguna lain.
- Balasan: Jumlah balasan atau komentar pada tweet.
- Tagar (Hashtag): Daftar tagar (#) yang digunakan dalam tweet.
- Mentions: Daftar pengguna yang disebutkan dalam tweet.
- Media: Media adalah entitas yang mewakili gambar, video, atau media lain yang dilampirkan atau digunakan dalam tweet. Fungsi media adalah untuk memberikan konten visual atau multimedia yang memperkaya pengalaman pengguna dalam mengekspresikan dan berbagi konten di Twitter.
- ID Media: Primary key untuk setiap media (gambar, video, dll.).
- Tipe Media: Jenis media seperti gambar, video, GIF, dll.
- URL Media: URL media untuk ditampilkan di tweet.
- Tagar (Hashtag): Tagar adalah entitas yang mewakili tagar atau kata kunci tertentu yang digunakan dalam tweet. Fungsi tagar adalah untuk mengelompokkan tweet berdasarkan topik atau tema tertentu, memfasilitasi pencarian dan keterlibatan dalam percakapan yang terkait dengan topik tersebut.
- ID Tagar: Primary key untuk setiap tagar.
- Nama Tagar: Nama tagar (#nama_tagar) yang digunakan dalam tweet.
- Notifikasi: Notifikasi adalah entitas yang mewakili pemberitahuan atau pemberitahuan kepada pengguna tentang aktivitas atau interaksi yang terjadi pada akun mereka, seperti like, retweet, balasan, dan sebagainya. Fungsi notifikasi adalah untuk memberi tahu pengguna tentang aktivitas yang relevan dan memicu respons atau interaksi lebih lanjut.
- ID Notifikasi: Primary key untuk setiap notifikasi.
- Jenis Notifikasi: Jenis notifikasi seperti like, retweet, balasan, dll.
- Pengguna Sumber: Pengguna yang melakukan tindakan yang menyebabkan notifikasi.
- Pengguna Tujuan: Pengguna yang menerima notifikasi.
- Interaksi: Interaksi adalah entitas yang mewakili tindakan atau aktivitas yang dilakukan oleh pengguna terhadap tweet atau konten di Twitter, seperti like, retweet, balasan, dan sebagainya. Fungsi interaksi adalah untuk memfasilitasi keterlibatan, respons, dan interaksi antara pengguna dengan konten dan pengguna lainnya di platform.
- ID Interaksi: Primary key untuk setiap interaksi.
- Jenis Interaksi: Jenis interaksi seperti like, retweet, balasan, dll.
- Pengguna: Pengguna yang melakukan interaksi.
- Tweet: Tweet yang menjadi objek dari interaksi tersebut.
- Daftar (List): Daftar adalah entitas yang mewakili daftar atau kelompok pengguna yang dibuat oleh pengguna. Fungsi daftar adalah untuk mengorganisir dan mengelompokkan pengguna berdasarkan kriteria tertentu, memudahkan pemantauan, interaksi, atau keterlibatan dengan kelompok pengguna tertentu.
- ID Daftar: Primary key untuk setiap daftar yang dibuat oleh pengguna.
- Nama Daftar: Nama daftar yang ditentukan pengguna.
- Anggota Daftar: Daftar pengguna yang termasuk dalam daftar tersebut.
- Pesan Langsung (Direct Message): Pesan Langsung adalah entitas yang mewakili komunikasi pribadi atau pesan antara pengguna satu sama lain di Twitter. Fungsi pesan langsung adalah untuk memungkinkan pengguna berkomunikasi secara langsung, pribadi, dan tidak publik di dalam platform Twitter.
- ID Pesan: Primary key untuk setiap pesan langsung.
- Pengirim: Pengguna yang mengirim pesan langsung.
- Penerima: Pengguna yang menerima pesan langsung.
- Waktu Pengiriman: Waktu ketika pesan langsung dikirim.






Komentar
Posting Komentar