Blog
March 26, 2026

URL Kısaltıcı Sistem Tasarımı: Bağlantı Kısaltıcıları Arka Planda Nasıl Çalışır

"Bir URL kısaltıcısı tasarla" en popüler sistem tasarımı mülakat sorularından biridir — ve haklı bir nedenle. Hashing, veritabanları, önbellekleme, yük dengeleme ve dağıtık sistemlere dokunur, hepsi aldatıcı şekilde basit bir üründe.

Bu kılavuzda, URL kısaltıcılarının gerçekten nasıl çalıştığını, temel tasarım kararlarını ve ölçekte ilgili değişimleri inceleyeceğiz.

Temel Akış

Bir URL kısaltıcısı iki şey yapar:

  1. 1
    Kısalt: Uzun bir URL alın ve kısa bir kod oluşturun
  2. 2
    Yönlendir: Birisi kısa URL'yi ziyaret ettiğinde, onları orijinale yönlendirin

İşte yüksek seviyeli akış:

Kullanıcı kısa bağlantı oluşturur:
  Uzun URL → Kısa kod oluştur → Eşlemeyi depola → Kısa URL döndür

Kullanıcı kısa bağlantıyı tıklar:
  Kısa URL → Kodu ara → Uzun URL bul → 301 Yönlendir

Kısa Kodlar Oluşturma

Temel zorluk, benzersiz, kısa kodlar oluşturmaktır. Birkaç yaklaşım vardır:

Yaklaşım 1: Base62 Kodlaması

Otomatik artan bir kimliği [a-zA-Z0-9] karakterlerini kullanarak Base62 dizesine dönüştürün:

  • ID 11
  • ID 6210
  • ID 238,328ZZZ

7 karakterli bir Base62 kodu 62^7 = 3,5 trilyon benzersiz URL'yi destekler.

Avantajlar: Basit, öngörülebilir uzunluk, çarpışma yok Dezavantajlar: Sıralı kimlikler tahmin edilebilir (kullanıcılar diğer kısa URL'leri tahmin edebilir)

Yaklaşım 2: Hashing

Uzun URL'ye bir hash işlevi (MD5, SHA-256) uygulayın ve ilk N karakteri alın:

SHA256("https://example.com/very/long/url") → "a3f2b8c1..." Kısa kod: "a3f2b8c"

Avantajlar: Aynı giriş her zaman aynı çıktıyı üretir (tekilleştirme) Dezavantajlar: Hash çarpışmaları işlenmeyi gerektirir; sabit hash uzunluğu alan harcayabilir

Yaklaşım 3: Rastgele Oluşturma

Rastgele bir alfasayısal dize oluşturun ve benzersizliği kontrol edin:

Avantajlar: Basit, tahmin edilemeyen Dezavantajlar: Her oluşturmada çarpışma kontrolü gerektirir; veritabanı dolduğunca yavaşlar

Hangi Yaklaşımı Kullanmalı?

Çoğu üretim sistemi, dağıtılmış bir kimlik oluşturucuyla Base62 kodlaması kullanır. Basit, çarpışmasız ve performanslıdır. Linkly'de benzer bir yaklaşım kullanıyoruz — daha az teknik bir genel bakış için URL kısaltıcılarının nasıl çalıştığını okuyabilirsiniz.

Veritabanı Tasarımı

Temel tablo basittir:

urls ├── id (birincil anahtar, otomatik artan) ├── short_code (benzersiz dizin) ├── long_url (hedef) ├── created_at (zaman damgası) ├── user_id (onu kimler oluşturdu) └── click_count (denormalize sayaç)

SQL vs. NoSQL

SQL (PostgreSQL, MySQL): ACID uyumluluk, güçlü tutarlılık, orta ölçekte iyi. Çoğu URL kısaltıcısı burada başlar.

NoSQL (DynamoDB, Cassandra): Milyarlarca URL için daha iyi yatay ölçekleme. Sonuç tutarlılığı bu kullanım durumu için kabul edilebilir.

Hibrit: SQL URL eşlemeleri için (yönlendirmeler için güçlü tutarlılık gerekli), NoSQL veya zaman serisi veritabanı tıklama analitikleri için (yüksek yazma hacmi, sonuç tutarlılığı iyidir).

Yönlendirmeleri İşleme

Bir kullanıcı kısa bir bağlantıyı tıkladığında, sistem şunları yapmalıdır:

  1. 1
    URL'den kısa kodu ayrıştırın
  2. 2
    Karşılık gelen uzun URL'yi arayın
  3. 3
    HTTP yönlendirme yanıtı döndürün

301 vs. 302 Yönlendirmeler

  • 301 (Kalıcı): Tarayıcı yönlendirmeyi önbelleğe alır. Daha az sunucu isteği, ancak tekrar tıklamalar hakkında görünürlük kaybedersiniz.
  • 302 (Geçici): Tarayıcı her seferinde sunucuyla kontrol eder. Daha fazla istek, ancak daha iyi tıklama izleme.

Çoğu URL kısaltıcısı tıklama izleme doğruluğu için 302 yönlendirmelerini kullanır, ardından SEO kullanım durumları için 301'i seçenek olarak sunar. Bu ayrım hakkında daha fazla bilgi için 301 yönlendirmeler kılavuzumuza bakın.

Önbellekleme

Yönlendirmeler hızlı olması gerekir — gecikmenin her milisaniyesi kullanıcı deneyimini etkiler. Önbellekleme kritiktir:

Bellek İçi Önbellek (Redis/Memcached)

short_code → long_url eşlemesini bellekte önbelleğe alın:

GET /abc123 → "abc123" için Redis'i kontrol et → Önbellek isabet? Hemen yönlendir döndür → Önbellek kaçırma? Veritabanını sorgula, sonucu önbelleğe al, yönlendir döndür

Küçük bir Redis örneği milyonlarca URL eşlemesini önbelleğe alabilir. Çoğu trafik nispeten az sayıda popüler bağlantıya gittiğinden, %90'ın üzerinde önbellek isabet oranları yaygındır.

CDN Önbellekleme

301 yönlendirmeler için, CDN kenar düğümleri yönlendirme yanıtını önbelleğe alabilir, bunu kaynak sunucunuzu hiç ulaştırmadan kullanıcıya en yakın konumdan sunabilir.

Analitik ve Tıklama İzleme

Tıklama verilerini kaydetmek, yönlendirmeyi yavaşlatmaması gereken yazma ağır bir işlemdir:

Asenkron İşleme

  1. 1
    Kullanıcı kısa bağlantıyı tıklar
  2. 2
    Sistem hemen yönlendirmeyi döndürür
  3. 3
    Tıklama olayı bir ileti kuyruğuna gönderilir (Kafka, RabbitMQ, SQS)
  4. 4
    Arka plan işçi olayı işler: kullanıcı aracısını ayrıştırır, IP'yi coğrafi konumlandırır, analitikleri depolar

Bu, hızlı yönlendirme yolunu daha yavaş analitik boru hattından ayırır.

Yakalanacak Veriler

  • Zaman damgası
  • IP adresi (coğrafi konum için)
  • Kullanıcı aracısı (cihaz/tarayıcı tespiti için)
  • Yönlendirici başlığı
  • Ülke, şehir (IP coğrafi konumlandırmadan)

Ölçekleme Değerlendirmeleri

Okuma Ağır İş Yükü

URL kısaltıcıları son derece okumalıdır. Tipik bir oran 100:1 okuma yazma olabilir. Bu şu anlama gelir:

  • Yönlendirme yolunu her şeyden önce optimize edin
  • Önbelleklemeyi agresif bir şekilde kullanın
  • Veritabanı okuma kopyaları

Dağıtılmış Kimlik Oluşturma

Birden fazla sunucu üzerinde otomatik artan kimlikler kullanıyorsanız, çarpışmaları önlemeniz gerekir. Seçenekler:

  • Snowflake Kimliği: Twitter'ın yaklaşımı — zaman damgası, makine kimliği ve sıra numarası gömün
  • UUID: Evrensel olarak benzersiz ama daha uzun
  • Kimlik aralıkları: Her sunucuya ayırmak için bir kimlik aralığı atayın

Coğrafi Dağıtım

Yönlendirme sunucularını birden fazla bölgede dağıtın. Tokyo'daki bir kullanıcı, Virginia'daki bir sunucuya yönlendirme için gidiş dönüş yapmamalıdır.

Güvenlik Değerlendirmeleri

URL kısaltıcıları kimlik avı ve kötü amaçlı yazılım dağıtımı için kötüye kullanılabilir. Üretim sistemleri şunları gerektirir:

  • URL taraması — hedefleri kötü amaçlı yazılım ve kimlik avı veritabanlarına karşı kontrol edin
  • Hız sınırlaması — kötü amaçlı kısa bağlantıların toplu oluşturulmasını önleyin
  • İhlal bildirimi — kullanıcıların şüpheli bağlantıları bildirmesine izin verin
  • Önizleme sayfaları — isteğe bağlı olarak kullanıcılara yönlendirmeden önce bir bağlantının nereye gittiğini gösterin

Bağlantı güvenliği ve tıklama dolandırıcılık koruması hakkında daha fazla bilgi edinin.

Ek Özellikler

Temel kısaltma ve yönlendirmenin ötesinde, üretim URL kısaltıcıları şunları ekler:

Sonuç

URL kısaltıcı sistem tasarımı harika bir alıştırmadır çünkü basit başlar ancak karmaşıklığın katmanlarını ortaya çıkarır: kod oluşturma, veritabanı tasarımı, önbellekleme, analitik boru hatları ve kötüye kullanımı önleme. Bu temelleri anlamak, mülakat hazırlığında olsanız da kendi araçlarınızı oluşturuyor olsanız da yardımcı olur.

Bir tane oluşturmadan üretim URL kısaltıcısı kullanmak ister misiniz? Linkly ile başlayın — yukarıda açıklanan tüm mimari, özel etki alanları, analitik ve gelişmiş özellikleri içeren ve kullanıma hazır.

100 kısa bağlantı edinin ve aylık 500 tıklamayı ücretsiz olarak takip edin.