Tugas 6 - Perancangan Perangkat Lunak (A)

Nama Kelompok 

1. Yusna Millaturrosyidah (5025211254)

2. Tsabita Putri Ramadhany (5025211130)

Kelas : Perancangan Perangkat Lunak (A)

ZOOM SYSTEM DESIGN


Zoom adalah platform komunikasi visual yang memungkinkan pengguna untuk melakukan pertemuan virtual, konferensi video, dan kolaborasi online. Dengan meningkatnya kebutuhan akan kerja jarak jauh dan komunikasi virtual, Zoom telah menjadi salah satu platform yang seringkali digunakan. Tujuan dari sistem desain Zoom adalah untuk menyediakan platform yang  aman dan mudah digunakan bagi jutaan pengguna di seluruh dunia. Ini melibatkan membangun infrastruktur yang mampu menangani jumlah pengguna yang besar, menyediakan kualitas layanan yang tinggi, dan menjaga keamanan data pengguna.

I. Functionally Requirements

1. One-to-one calling feature : Platform harus mendukung jika satu orang melakukan panggilan kepada orang lain.
2. Support Group video calling : Platform harus mendukung panggilan video grup sehingga sekelompok orang dapat berkumpul dalam panggilan video grup atau panggilan audio dan dapat melihat layar orang lain.
3. Audio/Video/Screen share : Platform harus mendukung panggilan yang dapat berupa panggilan audio atau video, dan orang-orang juga diperbolehkan untuk berbagi layar. Di sini, berbagi video dan layar adalah hal yang sama yang diimplementasikan secara fundamental dengan cara yang sama. Ini hanya aliran konten video yang sumber masukannya sekarang berbeda.
4. Recording the video : Platform harus dapat merekam panggilan video sehingga rekaman akan tersedia bagi pengguna sehingga mereka dapat melihatnya kemudian.

II. Non-Functionally Requirements

1. Super Fast(High Latency) : Sistem harus responsif dengan sangat cepat, bahkan di bawah kondisi jaringan yang buruk. Ketika berbicara tentang panggilan video, kita tidak bisa memiliki jeda yang terlalu lama karena itu akan membuat pengalaman pengguna menjadi buruk. Jadi, penting untuk memastikan bahwa platform memiliki kecepatan tinggi dan respons yang cepat agar pengguna merasa puas.
2. High availability : Sistem harus tersedia sepanjang waktu. Perangkat keras harus tahan terhadap kegagalan dan tersebar di berbagai lokasi geografis untuk mengurangi waktu respons dan meningkatkan ketahanan. Jadi, meskipun ada masalah di satu lokasi, sistem masih bisa diakses dari tempat lain dengan sedikit atau tanpa gangguan.
3. Data loss : Toleransi terhadap kehilangan data berarti dalam beberapa situasi, kehilangan sedikit informasi tidak terlalu berpengaruh. Misalnya, saat menonton video atau melakukan panggilan video, kehilangan beberapa bagian kecil dari konten tidak akan terlalu terasa bagi pengguna. Jadi, sistem dapat mempertimbangkan untuk mengorbankan sedikit data demi kinerja atau efisiensi yang lebih baik.

III. Capacity Estimation 

Capacity Estimation memberikan gambaran tentang kebutuhan infrastruktur untuk menangani penggunaan aplikasi Zoom dengan skala besar. Dengan 1 miliar pengguna dan 100 juta panggilan video grup setiap hari, aplikasi perlu menangani sekitar 58.000 permintaan per detik untuk backend yang dapat diskalakan.

1. Storage Estimation : sekitar 2,32 GB per hari untuk menyimpan data aktivitas pengguna, pesan, dan rekaman video. Dengan penggunaan video rekaman hingga 100 MB dan 100.000 rekaman video, diperlukan 10 TB penyimpanan video per hari.
2. Traffic Estimation : panggilan grup dengan hingga 100 orang membutuhkan sekitar 10 TB per hari. Hal ini diperlukan untuk menangani kebutuhan bandwidth yang tinggi.
3. Bandwith Estimation : mencakup latency sekitar 100 ms, dengan upaya untuk mencapai latensi serendah mungkin dengan jalan yang optimal. Jika dapat dicapai, waktu tempuh satu arah sekitar 64 ms dan waktu tempuh bolak-balik sekitar 128 ms.
4. Memory Estimation : sekitar 1 GB per jam untuk konektivitas normal, atau sekitar 24 GB per hari. Ini adalah perkiraan rata-rata untuk kebutuhan memori pengguna.

HIGH LEVEL DESIGN

High-Level Design dari sistem Zoom menggambarkan infrastruktur yang kokoh. Ini termasuk fitur-fitur utama seperti Zoom Client, pusat data terdistribusi, dan web design.


I. Zoom Client : bagian dari aplikasi yang digunakan oleh user untuk mengakses sesi virtual. Dengan fokus pada kemudahan penggunaan dan integrasi lintas platform, Zoom Client memastikan bahwa user dapat dengan mudah terhubung tanpa kesulitan teknis.

II. Distributed data centers : Zoom menggunakan pusat data terdistribusi untuk mengelola pemrosesan dan penyimpanan data yang besar. Pendekatan ini memberikan fleksibilitas yang tinggi dan mengurangi risiko gangguan pada layanan. Selain itu, Zoom dapat dengan cepat memperluas infrastruktur pusat data untuk menanggapi peningkatan jumlah user, menjaga kualitas layanan yang optimal.

III. Web design : Infrastruktur web Zoom mendukung aplikasi klien dengan memberikan pengalaman yang konsisten di berbagai browser. Dengan memperkuat infrastruktur jaringannya, Zoom dapat menangani lonjakan traffic, memastikan akses yang tidak terganggu bagi user di seluruh dunia.

IV. Security Infrastructure : Zoom perlu memiliki infrastruktur keamanan yang kuat untuk melindungi data sensitif pengguna dan menjaga privasi dalam sesi virtual. Ini mungkin mencakup enkripsi end-to-end, dan sistem otentikasi ganda.

V. Quality of Service (QoS) Optimization : Zoom harus memprioritaskan kualitas layanan untuk memastikan pengalaman user yang optimal. Ini melibatkan pengoptimalan jaringan, manajemen bandwidth, dan deteksi kegagalan serta penanganan darurat yang cepat.

VI. Cross-Platform Compatibility : Selain dukungan untuk berbagai browser, Zoom juga perlu memastikan bahwa aplikasinya kompatibel dengan berbagai perangkat, termasuk desktop, smartphone, tablet, dan sistem operasi yang berbeda. Ini memungkinkan user untuk terhubung dari mana saja dan kapan saja.

Desain tingkat tinggi ini menunjukkan bagaimana Zoom telah membangun fondasi teknologi yang kuat dan adaptif untuk mengatasi tantangan dan memenuhi kebutuhan penggunaannya yang terus berkembang.

LOW LEVEL DESIGN

Desain tingkat rendah (low-level design) dari sistem Zoom menggambarkan bagaimana komponen-komponen backend bekerja bersama untuk mendukung fungsionalitas panggilan video dan audio secara efisien.


I. Database

Database dari desain sistem Zoom tersebut memiliki struktur yang terorganisir untuk mengelola informasi pengguna, pertemuan, dan rekaman, serta sumber daya pendidikan dalam lingkungan yang terdistribusi.

Struktur Database:

1. Users Table : Menyimpan informasi penting tentang pengguna, seperti nama, alamat email, dan kredensial. Digunakan untuk mengotentikasi pengguna saat login dan untuk mengelola izin akses.
2. Meetings Table :Berisi rincian tentang pertemuan yang dijadwalkan, seperti waktu, tempat, dan peserta.Memiliki foreign key yang merujuk ke tabel Pengguna untuk tuan rumah pertemuan.
3. Recordings Table :Menyimpan informasi terkait rekaman pertemuan yang telah dilakukan. Terhubung ke tabel Pertemuan melalui foreign key untuk melacak hubungan antara rekaman dan pertemuan yang berkaitan.
4. Educational Resources Table :Berisi informasi tentang materi pendidikan, seperti nama, deskripsi, dan tautan. Memiliki kolom uploader_id yang merujuk ke tabel Pengguna untuk mengetahui siapa yang mengunggah materi tersebut.

II. WebSocket Handler

- Bertanggung jawab untuk menjaga koneksi langsung (live) dengan pengguna aktif dan memfasilitasi komunikasi dua arah antara pengguna dan server.
- Menggunakan teknologi WebSocket untuk koneksi yang persisten dan mengelola pesan masuk untuk mengarahkannya ke penerima yang sesuai.
- Dapat dideploy beberapa Penangan WebSocket pada load balancer untuk mendistribusikan koneksi masuk secara merata.

III. WebSocket Manager

- Mengelola pemetaan antara mesin Penangan WebSocket dan pengguna.
- Memastikan pengiriman pesan yang tepat antara pengguna dan Penangan WebSocket.
- Menggunakan penyimpanan data terdistribusi untuk menyimpan pemetaan dengan efisien dan menggunakan algoritma hash konsisten atau algoritma lain untuk mendistribusikan pemetaan secara merata.

IV. Signalling Service

- Memulai dan mengoordinasikan komunikasi antara pengguna.
- Memeriksa kondisi panggilan dan berkoordinasi dengan Layanan Pengguna (User Service) serta mengimplementasikan API untuk memulai, mengakhiri, dan memperbarui status panggilan.
- Memastikan layanan dapat menangani permintaan panggilan yang bersamaan secara efisien.

V. User Service

- Menjadi repositori untuk data pengguna, termasuk otentikasi, otorisasi, dan kontrol akses.
- Menggunakan database untuk menyimpan informasi pengguna dengan aman dan mengimplementasikan API untuk registrasi pengguna, login, dan pengelolaan profil.
- Dirancang untuk dapat diskalakan secara horizontal untuk menangani pertumbuhan pengguna.

VI. STUN Server

- Membantu pengguna menemukan alamat IP publik mereka untuk mendukung pembentukan koneksi peer-to-peer.
- Mengimplementasikan protokol STUN untuk penemuan alamat IP dan terintegrasi dengan Penanganan WebSocket dan Layanan Sinyal untuk komunikasi.

VII. Handshake

- Menukar informasi tentang bitrate yang tersedia, codec support, dan bandwidth antara pengguna.
- Mendefinisikan protokol dan format pesan untuk pertukaran detail koneksi guna memastikan kompatibilitas antara klien dan perangkat yang berbeda.

VIII. Establishing Peer-to-Peer Connection

- Membangun koneksi langsung antara pengguna untuk komunikasi real-time dengan memanfaatkan teknologi WebRTC.
- Mengimplementasikan teknik traversing NAT untuk koneksi konfigurasi jaringan yang berbeda.

IX. Fallback to TURN Server

- Bertindak sebagai perantara untuk meneruskan pesan antara pengguna ketika koneksi peer-to-peer gagal.
- Memastikan instansi TURN Server ditempatkan secara terdistribusi geografis untuk latency yang rendah.

X. Handling Bandwidth Changes

- Merekam peristiwa ke Kafka untuk pemrosesan saat bandwidth berfluktuasi selama panggilan.
- Mengimplementasikan Kafka producers untuk mempublikasikan events dan strategi partisi dan replikasi untuk toleransi kesalahan dan ketersediaan tinggi.

*Kafka adalah platform open-source yang digunakan untuk untuk mengelola aliran data real-time yang besar yang terjadi selama panggilan video dan audio dalam aplikasi zoom. Ini memungkinkan aplikasi untuk mengirim, menyimpan, dan memproses data secara cepat.

Microservices used in Zoom System Design

Dalam Desain Sistem Zoom, terdapat beberapa Microservice yang berperan penting antara lain :
1. User Management Service : Layanan ini bertanggung jawab atas otentikasi pengguna, registrasi, dan profil pengguna.
2. Meeting Scheduler Service : Layanan ini memfasilitasi penjadwalan dan organisasi pertemuan. Pengguna dapat menggunakan layanan ini untuk membuat jadwal pertemuan, mengundang peserta, dan menentukan detail lainnya.
3. Video Streaming Service : Layanan ini memungkinkan komunikasi audio dan video real-time selama pertemuan. Ini memungkinkan peserta untuk melihat dan mendengar satu sama lain secara langsung saat pertemuan berlangsung.
4. Chat Service : Layanan ini mendukung pesan dan kolaborasi real-time di antara peserta. Pengguna dapat mengirim pesan teks, emoji, dan file kepada peserta lainnya selama pertemuan.
5. Recording Management Service : Layanan ini mengelola fungsi perekaman untuk pertemuan dan webinar. Ini termasuk merekam pertemuan, menyimpan rekaman, dan memberikan akses kepada pengguna yang membutuhkannya.
6. Notification Service : Layanan ini mengirimkan pemberitahuan dan pengingat untuk pertemuan serta pembaruan lainnya kepada pengguna. Ini membantu pengguna untuk tetap terinformasi tentang jadwal pertemuan dan perubahan yang terjadi.

Kesimpulan

Desain Zoom meliputi banyak komponen dan strategi untuk memastikan layanan komunikasi video yang lancar dan dapat diskalakan untuk basis pengguna yang luas. Fokus utamanya pada efisiensi, toleransi kesalahan, dan adaptabilitas menempatkan Zoom sebagai platform terkemuka dalam konferensi video modern, memberikan pengalaman komunikasi yang luar biasa.

Referensi : klik_disini

Komentar

Postingan Populer