System Design : My ITS Shortener
My ITS Shortener
URL shortener adalah layanan yang mengubah URL panjang menjadi tautan pendek yang lebih sederhana dan mudah diingat. Pengguna dialihkan ke URL asli ketika mereka mengunjungi tautan pendek ini.
Tujuan
URL shortener dapat mengonversi URL panjang menjadi tautan pendek yang lebih mudah dikelola, dibagikan, dan terlihat lebih rapi. Selain itu, beberapa layanan URL shortener menyediakan analitik untuk melacak klik dan aktivitas pengunjung yang bermanfaat untuk pemasaran dan analisis lalu lintas situs web.
Requirements
Sistem pemendekan URL kami harus memenuhi persyaratan berikut:
- Functional requirements
- Diberikan sebuah URL, layanan kami harus membuat alias yang lebih pendek dan unik untuk URL tersebut.
- Pengguna harus diarahkan ke URL asli ketika mereka mengunjungi tautan pendek.
- Tautan harus kedaluwarsa setelah rentang waktu default.
- Non-functional requirements
- Ketersediaan tinggi dengan latensi minimal.
- Sistem harus dapat diskalakan dan efisien
Estimation and Constraints
Trafc: Ini akan menjadi sistem yang sangat berat untuk dibaca, jadi mari kita asumsikan rasio baca/tulis 10:1 engan 1 juta tautan yang dihasilkan per bulan.
10 * 1 = 10 Juta/Bulan
Berapa Permintaan Per Detik (RPS) untuk sistem kami?
Bandwidth
Karena kita mengharapkan sekitar 1 URL setiap 3 detiknya, dan jika kita mengasumsikan setiap permintaan berukuran 500 byte, maka total data yang masuk untuk permintaan tulis adalah:
0.3 * 500 = 150 Kb/Detik
Demikian pula, untuk permintaan baca, karena kami memperkirakan sekitar 4K pengalihan, total data yang keluar adalah:
150 * 10 = 1.5 Mb/Detik
High-level estimate
- Writes (New URLs) : 0.3 Kb/Detik
- Reads (Redirection) : 30 Kb/Detik
- Bandwidth (Incoming) : 150 Kb/Detik
- Bandwidth (Outgoing) : 1.5 Mb/Detik
Design
Membuat URL baru
- Saat pengguna membuat URL baru, server API kami meminta kunci unik baru dari Layanan Pembuatan Kunci (KGS).
- Layanan Pembuatan Kunci memberikan kunci unik kepada server API dan menandai kunci tersebut sebagai kunci yang digunakan.
- Server API menulis entri URL baru ke basis data dan cache.
- Layanan kami mengembalikan respons HTTP 201 (Dibuat) kepada pengguna.
Mengakses URL
- Ketika klien menavigasi ke URL pendek tertentu, permintaan dikirim ke server API.
- Permintaan pertama-tama masuk ke cache, dan jika entri tidak ditemukan di sana, maka entri tersebut akan diambil dari basis data dan HTTP 301 (Pengalihan) dikeluarkan ke URL asli.
- Jika kunci masih tidak ditemukan di database, kesalahan HTTP 404 (Tidak ditemukan) dikirim ke pengguna.
DATA MODEL DESIGN
Skema Database
TABLES
Users
- Menyimpan detail pengguna seperti nama, email, createdAt, dll.
Urls
- Berisi properti URL pendek baru seperti expired, hash, originalURL, dan userID pengguna yang membuat URL pendek. Kita juga dapat menggunakan kolom hash sebagai indeks untuk meningkatkan kinerja kueri.
DATABASE
Karena datanya tidak terlalu relasional, database NoSQL seperti Amazon DynamoDB, Apache Cassandra, atau MongoDB akan menjadi pilihan yang lebih baik, jika kita memutuskan untuk menggunakan database SQL, maka kita bisa menggunakan Azure SQL Database atau Amazon RDS.
API DESIGN
Komentar
Posting Komentar