URL Kısaltıcılar Nasıl Çalışır? Pratik Sistem Mimarisi ve Altyapı Rehberi

TR

URL kısaltma servisleri (URL Shortener), yüzlerce karakterden oluşan karmaşık web adreslerini https://kisa.link/x7Y9a gibi kompakt formatlara indirgeyen ve kullanıcı bu adrese tıkladığında onu orijinal hedefe yönlendiren dağıtık sistemlerdir.

Gelişmiş analitikler, coğrafi hedefleme (geo-targeting), edge computing ve marka odaklı özel alan adları (vanity domain) modern link altyapılarının temel standardı haline gelmiştir. Tipik bir URL kısaltıcı, yazma işlemlerine oranla okuma yükünün katbekat yüksek olduğu (read-heavy, genellikle 10:1 ile 100:1 oranı arasında) asimetrik bir mimari üzerine kuruludur.

Temel Çalışma Mekanizması: Adım Adım Yaşam Döngüsü

Bir link kısaltma servisinin arka plan mimarisi iki temel veri akışından meydana gelir: Bağlantı oluşturma (yazma yolu) ve yönlendirme/çözümleme (okuma yolu).

1. Link Kısaltma (POST /api/shorten)

  • İstemci, hedef URL'yi servise iletir.
  • API katmanı, zararlı yazılım ve kimlik avı (phishing) filtrelerinden geçirilen URL için benzersiz bir kimlik (Unique ID) veya hash üretir.
  • Elde edilen tamsayı, URL-dostu bir alfabeye kodlanarak (Base62) kısa kod (x7Y9a) oluşturulur.
  • Eşleme veritabanına yazılır ve okuma gecikmesini önlemek adına bellek içi önbelleğe (Redis) eşzamanlı aktarılır.

2. Yönlendirme (GET /x7Y9a)

  • Kullanıcı kısa linki tıkladığında istek en yakın CDN Edge noktasına ulaşır.
  • Kod doğrudan önbellekte (L1 Edge veya L2 Redis) sorgulanır.
  • Eşleşen orijinal hedef URL bulunduğunda istemciye HTTP durum kodu ile birlikte yönlendirme başlığı (Location: https://...) döndürülür.
  • Tıklama bilgileri (IP, coğrafi konum, tarayıcı, referans site) yönlendirmeyi yavaşlatmamak için asenkron bir kuyruk yapısına (Kafka, AWS SQS vb.) aktarılır.

Benzersiz Kod Üretim Algoritmaları: Hash vs. Base62

URL kısaltıcı tasarımlarında en sık yapılan hata, klasik MD5 veya SHA-256 çıktısını ilk 7 karaktere kırparak doğrudan kullanmaktır. Bu yöntem doğum günü paradoksu (birthday paradox) nedeniyle kısa sürede çakışmalara (collision) yol açar.

Base62 Kodlaması

Kısa kodlar için en verimli alfabe kümesi Base62'dir:

  • Küçük harfler: a-z (26 karakter)
  • Büyük harfler: A-Z (26 karakter)
  • Rakamlar: 0-9 (10 karakter)
  • Toplam Alfabe Büyüklüğü: 26 + 26 + 10 = 62

Karakter uzunluğuna göre üretilebilecek benzersiz kombinasyon sayıları şu şekildedir:

  • 6 Karakter: 62^6 ≈ 56.800.000.000 (~56,8 Milyar kombinasyon) - Orta ölçekli servisler için yeterlidir.
  • 7 Karakter: 62^7 ≈ 3.521.614.606.208 (~3,52 Trilyon kombinasyon) - Küresel ölçek ve standart endüstri tercihidir.
  • 8 Karakter: 62^8 ≈ 218.340.105.584.896 (~218 Trilyon kombinasyon) - Onlarca yıllık devasa arşivleme için kullanılır.

Benzersiz ID Üretim Stratejileri

Base62'ye çevrilecek tamsayının dağıtık sistemlerde benzersiz olması şarttır. Bunun için üç ana mimari yaklaşım kullanılır:

  • Twitter Snowflake Mimarisi: 64-bit tamsayı üretir; 41 bit zaman damgası (milisaniye), 10 bit makine/veri merkezi ID'si ve 12 bit sıra numarasından (sequence) oluşur. Merkezi bir koordinatöre ihtiyaç duymadan düğümler bağımsız çalışır.
  • KGS (Key Generation Service): Arka planda çalışan bağımsız bir servis, rastgele Base62 dizilerini önceden üretip veritabanında "kullanılmamış" olarak saklar. Yeni bir link geldiğinde sıradaki hazır anahtar alınarak veriye atanır; böylece çalışma anında hesaplama yükü sıfıra iner.
  • Dağıtık Sayaç (Counter Range): Zookeeper veya etcd gibi bir koordinasyon servisi, API düğümlerine belirli aralıklar (örneğin 1-1.000.000 arası Sunucu A'ya, 1.000.001-2.000.000 arası Sunucu B'ye) tahsis eder. Sunucular kendi aralıkları bitene kadar yerel belleklerinde sayacı artırır.

HTTP Yönlendirme Protokolleri: 301 mi, 302 mi, 307 mi?

Yönlendirme yanıtı dönerken seçilen HTTP durum kodu hem SEO indekslemesini hem de analitik verilerin doğruluğunu doğrudan etkiler.

  • HTTP 301 (Moved Permanently): Tarayıcılar bu cevabı yerel disk önbelleğinde saklar. Kullanıcı linke ikinci kez tıkladığında kısaltıcı sunucusuna hiç uğramadan doğrudan orijinal sayfaya gider. Arama motoru örümcekleri (Googlebot vb.) link otoritesini (PageRank) doğrudan hedef sayfaya aktarır. Ancak kullanıcı istekleri sunucuya ulaşmadığı için sonraki tıklamaların analitiği kaydedilemez.
  • HTTP 302 (Found / Temporary Redirect) & 307 (Temporary Redirect): Tarayıcıya adresin geçici olarak taşındığını söyler. Tarayıcı adresi önbelleğe almaz; her tıklamada kısaltıcı sunucusuna istek atılır. Bu sayede her tıklama eksiksiz sayılır, sahtecilik ve bot filtrelemesi kusursuz çalışır.
  • Mühendislik Tavsiyesi: Analitik odaklı platformlarda HTTP 302 (veya HTTP/1.1 için 307), saf SEO link inşası ve kalıcı yönlendirmeler için ise HTTP 301 tercih edilmelidir.

SEO ve Coğrafi Hedefleme (Geo-Targeting / Geo-SEO)

URL kısaltıcılar artık yalnızca teknik yönlendirme araçları değildir; bölgesel arama motoru optimizasyonu (Local/Geo-SEO) ve yerel kullanıcı deneyiminin merkezinde konumlanırlar.

1. Akıllı Coğrafi Yönlendirme (Geo-Routing / Dynamic Routing)

Kullanıcının IP adresi üzerinden belirlenen lokasyon ve tarayıcının dil başlığı baz alınarak tek bir kısa link farklı dinamik sayfalara yönlendirilebilir:

  • Türkiye sınırları içinden tıklayan bir kullanıcı: https://brand.com/tr-tr/kampanya
  • Avrupa'dan tıklayan bir kullanıcı: https://brand.com/en-eu/campaign

Bu yaklaşım, tek bir pazarlama materyali veya sosyal medya biyografi linki üzerinden hedeflenmiş yerel arama deneyimi sunar.

2. Markalı Alan Adları (Branded & Vanity Domains)

Standart jenerik domainler yerine markaya özel kısa alan adları kullanmanın başlıca avantajları:

  • Tıklama Oranını (CTR) Artırır: Kullanıcılar nereye gideceklerini bildikleri için genel linklere göre %30'a varan oranda daha yüksek tıklama gösterir.
  • Marka Otoritesi: Arama motorlarının alan adı entity (varlık) ilişkilerini daha doğru kurmasını sağlar.
  • Güvenlik ve Phishing Koruması: Jenerik URL servislerinin spama bulaşması riskinden bağımsız, temiz bir IP/domain itibarı sunar.

3. Arama Motoru Botları İçin Canonical ve Index Yönetimi

Kısaltılmış linklerin kendisinin Google tarafından indekslenmesi istenmez; amaç hedef sayfanın indekslenmesidir. Bu nedenle:

  • Kısa link servisleri, kısa link sayfalarına HTTP yanıt başlığı olarak X-Robots-Tag: noindex, nofollow eklemelidir.
  • Hedef URL'deki standart rel="canonical" etiketi, arama motoruna asıl kaynağın neresi olduğunu bildirir.

Yüksek Ölçekli Sistem Mimarisi ve Dayanıklılık

Milyonlarca aktif yönlendirme trafiği alan bir sistemde gecikmeyi (p99 latency) 50ms altında tutmak için uygulanan ileri seviye stratejiler:

Önbellek Stratejisi (Cache Invalidation & LRU)

Pareto prensibine (80/20 kuralı) göre, oluşturulan kısa linklerin en popüler %20'si, gelen tıklama trafiğinin yaklaşık %80'ini oluşturur.

  • Bellek maliyetini optimize etmek için Redis üzerinde LRU (Least Recently Used) tahliye politikası kullanılır.
  • Var olmayan linkler için veritabanına doğrudan yük binmesini (Cache Penetration) engellemek adına önbelleğin önüne bir Bloom Filter yerleştirilir; filtrede yer almayan istekler veritabanına dahi sorulmadan 404 olarak reddedilir.

Asenkron Tıklama Analitiği

Yönlendirme yanıtı kullanıcıya ulaştırılırken aynı thread içinde veritabanına tıklama sayısı yazmak ciddi bir darboğaz oluşturur.

  • İstek detayları (coğrafi konum, referer, user-agent) Apache Kafka, RabbitMQ veya AWS Kinesis gibi bir olay akışına yazılır.
  • Tüketici servisler (Consumer) bu logları toplayarak ClickHouse veya Apache Druid gibi analitik odaklı OLAP sistemlerine yazar. Böylece analitik hesaplamaları yönlendirme gecikmesine hiçbir ek maliyet getirmez.

Kötüye Kullanım Önleme (Rate Limiting & Güvenlik)

  • Yazma Koruması: Belirli bir IP veya API anahtarından dakikada açılabilecek maksimum link sayısını sınırlamak için Token Bucket veya Leaky Bucket algoritmaları devreye alınır.
  • Hedef URL Doğrulama: Google Safe Browsing API veya yerel tehdit istihbaratı veritabanları ile hedef adres taranır; bilinen oltalama (phishing) veya kötü amaçlı yazılım kaynakları anında engellenir.

Modern bir URL kısaltma mimarisi; basit bir anahtar-değer (Key-Value) tablosu olmanın ötesinde, Base62 matematiksel kodlamasından CDN seviyesindeki yönlendirmelere ve asenkron veri hatlarına kadar dağıtık sistem mühendisliğinin temel ilkelerini bünyesinde barındırır.