Sigorta acentelerine hizmet veren bir yazılım platformu, aynı altyapıyı yüzlerce farklı kullanıcı ve ekiple paylaşır. Bu paylaşımın verimli olması, herkesin makul ölçüde kaynak kullanmasına bağlıdır. Bir acentenin entegrasyon betiğindeki bir hata, saniyede yüzlerce gereksiz istek gönderebilir. Toplu bir yenileme çalışması, kısa sürede binlerce sorgu başlatabilir. Bu yoğunluklar kontrol altına alınmazsa diğer acentelerin kullanıcıları yavaşlık ve hatalarla karşılaşır. Hız sınırlama ve kota yönetimi, ortak altyapının adil ve öngörülebilir biçimde paylaşılmasını sağlar.
Hız sınırı ile kota arasındaki fark
Bu iki kavram sıklıkla birbirine karıştırılır ama farklı amaçlara hizmet eder:
- Hız sınırı: Kısa zaman aralığında yapılabilecek istek sayısını sınırlar. Amacı anlık yük patlamalarını önlemek ve sistemi korumaktır. Örneğin saniye veya dakika başına istek limiti.
- Kota: Daha uzun bir dönemde kullanılabilecek toplam kaynak miktarını belirler. Genellikle ticari bir anlam taşır ve abonelik planıyla ilişkilidir. Örneğin aylık sorgu hakkı.
Sağlıklı bir platform ikisini birlikte kullanır: Hız sınırı altyapıyı korurken kota, kaynak kullanımını abonelik modeliyle uyumlu tutar.
Yaygın algoritmalar
Sabit pencere
Zaman, sabit aralıklara bölünür ve her aralıkta belirli sayıda isteğe izin verilir. Uygulaması en basit yöntemdir. Ancak pencere sınırlarında sorun yaşanır: Bir pencerenin son saniyesinde ve bir sonrakinin ilk saniyesinde limit kadar istek gönderilirse, çok kısa sürede limitin iki katı istek geçer.
Kayan pencere
Her istek anında, geriye doğru belirli bir süre içindeki istekler sayılır. Sabit penceredeki sınır sorununu çözer ve daha dengeli bir sınırlama sağlar. Bellek kullanımı biraz daha yüksektir; ancak yaklaşık hesaplama yöntemleriyle bu maliyet düşürülebilir.
Token kovası
Her istemci için bir kova düşünülür. Kova sabit bir hızla jetonlarla dolar ve belirli bir kapasiteye kadar jeton biriktirebilir. Her istek bir jeton harcar; kova boşsa istek reddedilir. Bu algoritmanın en önemli avantajı kısa süreli patlamalara izin vermesidir. Bir süre sessiz kalan bir istemci, biriken jetonlarla kısa bir yoğunluğu sorunsuz karşılayabilir. Ortalama hız ise uzun vadede sınırlı kalır. Kullanıcı davranışına en uygun düşen algoritma genellikle budur.
Sınırlamanın boyutları
Çok kiracılı bir platformda hız sınırı tek bir boyutta uygulanmamalıdır. Katmanlı bir yapı önerilir:
- Kullanıcı başına: Tek bir kullanıcının veya cihazın aşırı istek göndermesini engeller.
- Acente başına: Bir acentenin toplam kullanımını sınırlar; böylece bir acente bütün kapasiteyi tüketemez.
- Uç nokta başına: Maliyetli işlemler için ayrı ve daha sıkı limitler tanımlanır. Bir müşteri listesini okumak ile çoklu şirket sorgusu başlatmak aynı maliyette değildir.
- Dış servis başına: Sigorta şirketi servislerine giden toplam istek, karşı tarafın kapasitesini aşmayacak şekilde sınırlanır.
Son madde özellikle önemlidir. Platformun kendi hız sınırları ne kadar cömert olursa olsun, sigorta şirketlerinin kendi sınırları vardır. Bu sınırlar aşıldığında yalnızca bir acente değil, platformu kullanan herkes o şirketten yanıt alamaz hale gelebilir.
Maliyete göre ağırlıklandırma
Her isteği bir birim saymak yerine, işlemin maliyetine göre farklı ağırlıklar vermek daha adil bir model sunar. Basit bir kayıt okuma bir birim harcarken, birden fazla şirkete giden bir kasko sorgusu daha fazla birim harcayabilir. Trafik, kasko ve DASK sorguları farklı sayıda dış çağrı ve farklı işleme süreleri gerektirdiğinden branş bazında farklı ağırlıklar tanımlanabilir. Bu yaklaşım, kaynak tüketimini gerçeğe daha yakın yansıtır.
Sınıra takılan istemciye ne söylenmeli?
Hız sınırına takılan bir isteğe verilecek yanıt, istemcinin doğru davranmasını sağlayacak bilgileri içermelidir:
- İsteğin hız sınırı nedeniyle reddedildiğini belirten standart yanıt kodu
- Ne kadar süre sonra yeniden denenebileceğini belirten başlık
- Mevcut limit, kalan hak ve limitin sıfırlanma zamanı bilgileri
Bu bilgiler başarılı yanıtlarda da gönderilirse istemciler limite yaklaştıklarını önceden fark edip kendi hızlarını ayarlayabilir.
Limit aşımının kullanıcıya anlatılması
Hız sınırları çoğunlukla API entegrasyonları için düşünülür; ancak web paneli ve mobil uygulama da aynı API'yi kullanıyorsa kullanıcılar da sınırlara takılabilir. Normal kullanımda bir insanın sınırlara ulaşması pek olası değildir; yine de olursa arayüz teknik bir hata yerine anlaşılır bir mesaj göstermelidir. Kota tarafında ise acente yöneticisinin mevcut dönemdeki kullanımını ve kalan hakkını panelden görebilmesi, sürprizleri önler.
Dağıtık ortamda uygulama
Platform birden fazla sunucuda çalışıyorsa hız sınırı sayaçlarının tüm sunucular arasında paylaşılması gerekir. Aksi halde her sunucu kendi sayacını tutar ve gerçek limit sunucu sayısıyla çarpılmış olur. Paylaşılan sayaçlar için hızlı bir bellek içi veri deposu yaygın tercihtir. Sayaç güncellemelerinin atomik yapılması, eşzamanlı isteklerde sayımın doğru kalması için şarttır.
Sınırları belirlemek ve gözden geçirmek
Limitler, tahminle değil gözlemle belirlenmelidir. İlk aşamada sınırlar yalnızca ölçüm modunda çalıştırılabilir: İstekler reddedilmez, yalnızca limiti aşanlar kaydedilir. Bu veri, normal kullanım profilini ortaya koyar ve gerçekçi limitlerin belirlenmesini sağlar. Limitler devreye alındıktan sonra da düzenli olarak gözden geçirilmeli, sık takılan meşru kullanım senaryoları varsa ayarlanmalıdır.
İstisnalar ve geçici limit artışları
Bazı meşru senaryolar standart limitlerin üzerine çıkmayı gerektirebilir. Bir acentenin eski sisteminden veri taşıması veya dönem başındaki toplu yenileme hazırlığı bunlara örnektir. Bu durumlar için limitleri kalıcı olarak gevşetmek yerine, belirli bir süreyle sınırlı ve kayıt altına alınmış geçici artışlar tanımlamak daha güvenlidir. Geçici artışın süresi dolduğunda limitler otomatik olarak eski değerlerine döner. Böylece istisnalar unutulup kalıcı bir açığa dönüşmez.
InsureHub'da adil kaynak paylaşımı
InsureHub, sigorta acentelerine yazılım sağlayan çok kiracılı bir platform olarak her acentenin kendi iş yoğunluğunu diğerlerini etkilemeden yaşayabilmesini önemser. Abonelik ve modül yetkileriyle uyumlu kota yönetimi ile katmanlı hız sınırları, sigorta acentesi yazılımı deneyiminin öngörülebilir kalmasına ve sigorta teklif programı tarafında sigorta şirketi servislerinin korunmasına katkı sağlar.