in Eski Blog Yazılarım

Bankaların sanal pos hizmetleri sandığınız kadar stabil değil.

Goldmaster firması için yaptığımız bayi tahsilat sistemini nihayet bitirdik ve bayilerin kullanımına açtık. Her projede olduğu gibi bu porjede’de öngörülemeyen sorunlar hemen kendini gösterdi.

Bu sorunlardan en önemlisi sistemin bankalarla haberleşen modülü ile ilgiliydi.
Sistemi kullanıma açtıktan sonra tahminimden fazla sanal pos transaction’ı gerçekleşmeye başladı ve sıklıkla "operation time-out" hataları ile karşılaşır oldum.

İşlemi debug edip simule ettiğimde ise bankanın sanal pos API’lerine erişim kurarken kullandığım HttpRequest sınıfının time out özelliğinin süresini 8 saniye verdiğimden kaynaklandığnı gördüm ve http isteğinin zaman aşım süresini 15 saniye olarak yeniden düzenledim ve publish ettim.
Sonuç, "Operation Time-out" hataları gözle görülecek şekilde azaldı fakat yinede işlemlerin %5’i time-out’a düşüyordu. Durumdan sıkılıp sanal pos modülün muhatap olduğu tüm sanal pos Uri’lerini monitor etmeye başladım.
Monitor’u şirket içinde kullandığımız PRTG programına devrettim. Bir kaçgün http üzerinden tüm web serverları geriye döndürdükleri cevap sürelerine göre izledim ve çok stabil olmayan bir tablo ile karşılaştım.

Bankaların sanal pos hizmeti verdikleri sunucuları gün içinde bir çok kez ya erişilemiyordu yada olağan dışı erişim süreleri ile hizmet vermeye çalışıyorlardı. Aksi daha detaylı incelemelerimde ise çok önemli bir sorunla karşılaştım. Şöyle ki;

Sanal Pos modülüm bankaya "parayı çek" emri gönderdikten sonra banka emri alıp işliyor fakat bana çok geç cevap verdiği için veya web sunucusunda ki anlık kesintilerden dolayı herhangi bir cevap dönemiyordu.
Böyle olunca işlemi banka gerçekleştiriyor ve müşterinin kredi kartından para çekiyor fakat bizim sistemin haberi olmuyordu! arkasından sistem müşteriye para çekilemedi hatası döndürüyordu. Nedeni de "Operation time-out"!

Konu ile ilgili bir kaç banka ile görüştüm. Durumu açıkladığımda hepsi bana cross-check yapabilirsiniz dedi. Yani gün sonunda bendeki ve bankada ki kayıtları karşılaştırıp farklıları bulduktan sonra sisteme ekleyeceğim?
Bunun işime yaramayacağını anlatım çünkü müşteriye işlemin sonucu kesin olarak işlem sonunda anlık bildirmem gerekiyordu. "Time-out exeption’ına düştüğümüzde kullanabileceğimiz bir validasyon yönteminiz var mı?" diye sorduğumda. Bu durum için geliştirdikleri bir tasarımlarının olmadıklarını söylediler.

Bana çok ilginç geldi… Böyle bir sorun varsa, bu kadar teknolojik bankaların bu sorunu bu zamana kadar çözebilmiş olduklarını düşünürdüm hep.
Halbuki işlemin doğrulamasını farklı bir sunucudan yaptırabilirlerdi veya başka sunucu benim sunucuma bir http post geçebilirdi (Paypal bunu yapıyor)
Bunun için sanal pos hizmetlerine ek ücret bile ekleyebilirlerdi ama hala bir çözüm üretemediklerine göre kredi kartı faizlerinden çok para kazandıklarından olsa gerek para saymaktan böyle şeyleri düşünecek vakitleri yok sanırım.

Sonuçta banka Uri’lerini izlemeyi 31 gün boyunca sürdürdüm ve sonuç olarak aşağıdaki gibi bir tablo çıktı karşıma.

Sanal Pos Uptime Süreleri

Tabloyu yorumlayacak olursak;

İlk üç bankanın downtime süreleri kabul edilebilir nitelikte olduğunu düşünüyorum. Bir saatin üzerindeki downtime oranları insanı biraz düşündürüyor. Fakat 8 saat ve üzeri kesinti ile hizmet veren bankalardan kesinlikle uzak durulması gerekiyor diye düşünüyorum.

Farklı bir yönden bakarsak olaya  bankaların Uptime’ları (Sürekli Açık Kalma Durumları) %97‘nin üzerinde. Doğru kulağa çok yüksek bir rakam geliyor ama %97.91 ile en berbat uptime süresine sahip Deniz Bank bile 31 günde 15 saat 58 dakika  15 saniye kapalı kalmış. Bu çok kabul edilebilir dir durum değil. Tabi bütün suçu bankaya yüklememek gerekiyor bağlı oldukları internet servis sağlayıcısının çeşitli ağ problemleride neden olmuş olabilir ama bunların hepsi günümüzde çözülmü olan problemler.

30 günlük izlemeye göre Türkiye’de en stabil ve hızlı sanal pos hizmetini Yapı Kredi bankası veriyor. Sana Pos API’lerininde kod tarafından yönetilebilir ve kolay entegre edilebilir olduğu düşüncesindeyim.

Yapı Kredi’nin 30 günlük http grafiği aşağıdaki gibi. En yüksek erişim süresi olarak 1.413ms görünüyor, en düşük 14ms. (Bu web server’ın client’a cevap verdiği süredir.)

Tabi en iyi bankayı söyledik. En berbat bankayıda söylemeden geçmeyelim.
Deniz Bank’ın sanal pos hizmeti gerçekten berbat. Umarım bu durumu en kısa sürede düzeltirler ve insanlardan aldıkları paraların hakkını verirler.

Aşağıdaki grafikte’de görüldüğü gibi kapalı olmadığı zamanlarda web server’ın cevap verme süresi 7.445 milisaniye’ye kadar çıkmış en iyi cevap verme süresi ise 37 milisaniye, bu zaten diğer bankaların ortalama rakamı. :)

Ek olarak bankaların sanal pos hizmeti verdikleri web serverların kapalı olmadıkları zamanda cevap verme sürelerininde daha iyi olduğu düşünülebilir ama o kadarda iyi değil. Aşağıdaki grafik tüm bankaları grupladığından çok anlaşılır değil ama yinede istek ve yüzde olarak fikir verebilir.

Sonuç olarak bu 30 günlük verilere göre’de konuşmak doğru olmaz ama duruma şöyle bir anlık bakış attığımızı düşünürsek dikkat çekici bir husus.
Daha farklı raporlar almakta mümkün ama benim ilgilendiklerim bunlardı. İlgilenen olursa XML veri dosyalarını gönderebilirim, zaman bazlı daha ayrıntılı raporlarda alınabilir.

Yorum Bırak

Comment