TUGAS 6 PPL A

     Nama : Christian Kevin Emor

NRP : 5025211153
Kelas : PPL A

High Level Design and Low Level Design untuk Aplikasi Persingkat URL (URL Shortner)


kelompok:
- Christian Kevin Emor 5025211153
- Gabriella Natasya Br Ginting 50252111081

link refrensi: Shortener Link

System Requirements

Functional requirements of URL Shortening service

  • Diberikan sebuah URL panjang, layanan ini harus menghasilkan sebuah alias yang lebih pendek dan unik untuknya.

  • Ketika pengguna mengklik tautan yang pendek, layanan harus mengalihkan ke tautan aslinya.

  • Tautan akan kadaluarsa setelah jangka waktu default yang ditentukan.


Non-Functional requirements URL Shortening service

  • Sistem harus tersedia secara tinggi. Ini sangat penting untuk dipertimbangkan karena jika layanan mengalami gangguan, semua pengalihan URL akan gagal.

  • Pengalihan URL harus terjadi secara real-time dengan latensi minimal.



LLD

  1. Encoding URLs:

Langkah pertama sistem adalah menerima URL panjang sebagai input. Selanjutnya, sistem memilih metode untuk menciptakan pengidentifikasi unik (UID):

  • MD5 Encoding Approach: URL dienkripsi menggunakan fungsi enkripsi MD5 untuk menciptakan string unik. Namun, perlu diingat bahwa metode ini tidak sepenuhnya aman dari kemungkinan dua URL yang berbeda menghasilkan nilai enkripsi yang sama.

  • Distributed Coordination Service Approach: Sistem berkomunikasi dengan layanan koordinasi terdistribusi, seperti ZooKeeper, untuk mendapatkan ID unik. Metode ini menjamin pembuatan URL yang tidak akan berpotensi tabrakan karena layanan menjamin hanya satu proses yang dapat menciptakan ID unik pada satu waktu.


  1. Shortening URLs:

Setelah UID tercipta, sistem mengkonversinya menjadi URL yang lebih singkat menggunakan Base62 encoding. Base62 encoding menggunakan 62 karakter (0-9, a-z, A-Z) untuk mewakili angka, sehingga memungkinkan penciptaan URL yang lebih padat daripada sistem basis-10 (desimal).


  1. Storing Shortened URLs:

URL yang telah dipendekkan, beserta URL aslinya, disimpan dalam basis data untuk diambil kembali nantinya.


  1. Retrieving Long URLs:

  • Ketika pengguna memasukkan URL yang telah dipendekkan ke dalam peramban web mereka, permintaan tersebut dikirim ke layanan pemendek URL.

  • Sistem kemudian mengambil URL yang telah dipendekkan dan URL aslinya yang sesuai dari basis data.

  • Jika terdapat kecocokan, pengguna akan diarahkan ke URL panjang aslinya.

  • Jika tidak ada kecocokan yang ditemukan, sistem mungkin akan memberikan pesan kesalahan.


Pertimbangan Tambahan:


Detail LLD (Low-Level Design) spesifik dapat bervariasi tergantung pada implementasi yang dipilih. Misalnya, sistem dapat memasukkan mekanisme penanganan kesalahan untuk mengatasi situasi seperti menemui URL yang tidak valid atau masalah database.

Langkah-langkah keamanan harus diterapkan untuk melindungi database dan mencegah akses tidak sah ke URL yang telah dipendekkan.


User Interface

Antarmuka pengguna memungkinkan pengguna untuk memasukkan URL panjang dan menerima tautan yang dipendekkan. Ini bisa berupa formulir web sederhana atau API RESTful.




HLD

Komponen


  • Antarmuka Pengguna/Klien Antarmuka pengguna memungkinkan pengguna untuk memasukkan URL panjang dan menerima tautan yang dipendekkan. Ini bisa berupa formulir web sederhana atau API RESTful.


  • Server Aplikasi Server aplikasi menerima URL panjang dari antarmuka pengguna dan menghasilkan sebuah alias atau kunci yang lebih pendek dan unik untuknya. Kemudian, server menyimpan alias dan URL asli ke dalam basis data. Server aplikasi juga melacak peristiwa klik pada tautan yang dipendekkan.


  • Load Balancer Untuk menangani jumlah permintaan yang besar, kita dapat menggunakan penyeimbang beban untuk mendistribusikan lalu lintas masuk ke beberapa instance server aplikasi. 

Load Balancer dapat ditambahkan di tiga tempat dalam layanan:

  • Antara Klien dan Server Aplikasi

  • Antara Server Aplikasi dan server basis data

  • Antara Server Aplikasi dan server Cache


  • Database Basis data menyimpan alias atau kunci dan URL asli. Basis data harus dapat diskalakan untuk menangani jumlah URL dan klik yang besar. Kita dapat menggunakan basis data NoSQL seperti MongoDB atau Cassandra, yang dapat menangani jumlah data besar dan dapat diskalakan secara horizontal.


  • Cache servers Karena membaca dari basis data bisa lambat dan membutuhkan banyak sumber daya, kita dapat menambahkan lapisan penyimpanan cache untuk mempercepat operasi baca. Kita dapat menggunakan cache di dalam memori seperti Redis atau Memcached untuk menyimpan URL yang paling sering diakses.


  • Cleanup Service Layanan ini membantu membersihkan data lama dari basis data.


  • Redirection Ketika seorang pengguna mengklik tautan yang dipendekkan, server aplikasi mencari URL asli dari basis data menggunakan alias atau kunci. Kemudian, server mengalihkan pengguna ke URL asli menggunakan kode status HTTP 301, yang merupakan pengalihan permanen.


  • Analitik Server aplikasi harus melacak peristiwa klik pada tautan yang dipendekkan dan memberikan analitik kepada pengguna. Ini termasuk jumlah klik, pengarah, peramban, dan perangkat yang digunakan untuk mengakses tautan.


  • Security Layanan harus dirancang untuk mencegah pengguna jahat membuat tautan pendek ke situs phising atau malware. Ini juga harus melindungi terhadap serangan DDoS dan serangan brute force. Kita dapat menggunakan firewall, pembatasan kecepatan, dan mekanisme otentikasi untuk memastikan keamanan layanan.


Server

Server aplikasi menerima URL panjang dari antarmuka pengguna dan menghasilkan sebuah alias atau kunci yang lebih pendek dan unik untuknya. Selanjutnya, server aplikasi menyimpan baik alias maupun URL asli ke dalam sebuah basis data. Selain itu, server aplikasi memantau peristiwa klik yang terkait dengan tautan yang disingkat.


Workflow:

  1. Klien Mengirim Permintaan: Seorang klien (pengguna) memulai proses dengan menyediakan URL panjang ke layanan pemendek URL.

  2. Permintaan Klien Didistribusikan ke Server: Penyeimbang beban mendistribusikan permintaan pengguna ke salah satu server aplikasi.

  3. Server Aplikasi Berinteraksi dengan Layanan Pembangkitan Kunci: Server aplikasi berkomunikasi dengan Layanan Pembangkitan Kunci untuk mendapatkan pengenal unik (UID) untuk URL panjang.

  4. UID Dikonversi menjadi URL yang Dipendekkan: Server aplikasi kemudian mengirimkan UID ke Layanan Pembangkitan Kunci URL yang Dipendekkan, yang mengonversi UID menjadi URL yang dipendekkan menggunakan Base62 encoding.

  5. URL yang Dipendekkan Disimpan: Server aplikasi menyimpan URL yang dipendekkan beserta URL panjang yang sesuai di basis data untuk referensi di masa mendatang.

  6. URL yang Dipendekkan Dikembalikan ke Klien: Server aplikasi mengirimkan kembali URL yang dipendekkan ke klien.

  7. Klien Menggunakan URL yang Dipendekkan: Klien sekarang dapat membagikan URL yang dipendekkan dengan orang lain.

  8. Pengguna Mengakses URL yang Dipendekkan: Ketika seorang pengguna memasukkan URL yang dipendekkan di peramban web mereka, itu dikirimkan ke layanan pemendek URL.

  9. Sistem Mengambil URL Panjang: Server aplikasi mengambil URL yang dipendekkan beserta URL panjang yang sesuai dari basis data atau cache (jika tersedia).

  10. Pengguna Dialihkan: Jika ada yang sesuai ditemukan, pengguna dialihkan ke URL panjang asli.


Komentar

Postingan populer dari blog ini