Bir Mühendisin Gözünden Muhteşem Cuma’da Kesintisiz Ödeme Deneyimi

E-ticaret sektöründe çalışan bir yazılım mühendisi açısından “Singles’ Day”, “Black Friday” ve “Cyber Monday” gibi özel indirim günleri büyük önem taşır. Çünkü böyle günlerde ölçeklenebilirlik ve mühendislik açısından çok önemli deneyimler edinirsiniz. İndirim günlerinde e-ticaret trafiğinde çok yüksek, anlık patlamalar olur ve bu durumlarda donanım ve yazılım altyapıları riske girer. Yüksek risk bir mühendis için aynı zamanda bir fırsattır, çünkü tek bir günde edinebileceğiniz maksimum deneyimi edinirsiniz.

Mühendislik toplulukları genellikle e-ticaret sitelerindeki ölçeklenebilirlik konularına odaklanırlar. Ancak arka planda çok önemli bir alan olan ödeme sistemlerinin de böyle önemli günlerde ortaya çıkan yükü kaldırması gerekmektedir.

Bu makalede, Türkiye’nin en büyük ödeme sistemlerinden bir olan iyzico’da çalışan bir mühendis olarak, Muhteşem Cuma’da %300 daha fazla ödeme alma deneyimimden bahsedeceğiz.

Muhteşem Cuma Öncesi

Bu büyük indirim günü öncesinde ilk olarak büyük müşterilerimizden (Amazon, H&M, Zara, Pull&Bear, Nike vs.) indirim günlerini, saatlerini ve tahmin ettikleri dakikalık ödeme sayıları gibi bilgileri topladık. Amacımız saniyede maksimum kaç adet ödeme alacağımızı tahmin etmekti ve bu istatistiksel olarak veri bilimcilerimiz için tahmin etmesi çok zor bir sayıydı. Örneğin bu yıl büyük müşterilerimizden biri olan Zara, “Sepetlerinizi Hazırlayın” isimli kampanyasıyla müşterilerini sepetlerini önceden hazırlayıp kaydetmeye teşvik etti ve indirimin perşembe günü saat 22:00’da başlayacağını duyurdu. Ardından sitedeki sayaç geriye doğru saymaya başladı. Tüm müşteriler sepetini önceden hazırlamıştı ve saat 22:00’da aynı anda “Öde” butonuna tıklayacaklardı.

Tahmin etmemiz gereken bir diğer konu ise bankaların ve bağımlı olduğumuz diğer servislerin gecikme ve devre dışı kalma senaryolarıydı. Tüm bu senaryoları, yük testleri ve fonksiyonel testlerle test ortamlarımızda test ettik ve servislerimizde birçok iyileştirme gerçekleştirdik. Örneğin bir bankanın POS’unda problem varsa ve ödeme alamıyorsa, o ödemeyi otomatik olarak başka bankadan deneyen kodu yazdık. Bunun gibi birçok geliştirmeyi Muhteşem Cuma’dan önce yayına aldık.

Muhteşem Cuma Günü

Perşembe günü yazılım ekibi, devops ekibi, altyapı (infrastructure) ekibi ve operasyon ekibimizin yer aldığı bir “operasyon odası” hazırladık ve tüm sayısal metrikleri ekranlara yansıttık.

Muhteşem Cuma Operasyon Odası (23.11.2018)

Bir Mühendisin Gözünden Muhteşem Cuma’da Kesintisiz Ödeme Deneyimi

Perşembe günü saat 20:00’da Zara, Pull&Bear ve Amazon gibi birçok büyük müşterimiz kampanyalarını başlattılar ve trafik hızla artmaya başladı. Bunun sonucunda da ödeme servislerimiz, perşembeyi cumaya bağlayan gece tarihindeki en yüksek trafiği aldı.

Servislerin Aldığı Yük Miktarı

Saat 20:00’deki ödeme sayısı, günlük ortalama ödeme sayısının 5 kat fazlası oldu.

Saat 21:00’deki ödeme sayısı, günlük ortalama ödeme sayısının 10 kat fazlası oldu.

Saat 22:00’deki ödeme sayısı, günlük ortalama ödeme sayısının 6 kat fazlası oldu.

Ortalama ödeme sayısı, bir gün önceki ortalama ödeme sayısının 3 katı oldu.

Saniyedeki maksimum ödeme sayısı, bir yıl önceye göre 120 kat arttı.

Yaşanan Zorluklar

Binlerce kişi aynı anda internetten alışveriş yaptığı için Türkiye’deki birçok veri merkezinde (data center) gecikmeler yaşandı. Bir yerde gecikme varsa, donanım ve yazılım kaynakları genellikle tehlikeye girer. iyzico’nun altyapısı ise bu gecikmelere dayanıklı olarak tasarlandığı için müşterilerimiz bu durumdan etkilenmedi.

Binlerce kişi aynı anda “Öde” butonuna tıklayınca, bankalarda gecikmeler ve sistemsel problemler yaşandı. Bir banka ödeme alamadığı anda, sistemimiz otomatik olarak başka bir bankadan ödemeyi denediği için müşterilerimiz bu problemlerden etkilenmedi. Bu sayede ödemelerin %4.39’unu başarısız olacakken başarılıya döndürdük. Bu tür günlerde %4.39’luk oran, çok büyük bir gelir kazancı anlamına geliyor. Örneğin bir banka, sistemsel problemler nedeniyle 5 saat boyunca 3DS ödeme alamadı ve biz bu ödemeleri başka bankalara yönlendirdik. Böylece 3DS ödeme başarı oranı %18 arttı.

Sonuç

Donanım ve yazılım altyapımız, bu büyük günde saniyede 120 kat, dakikada 50 kat, saatte 10 kat ve günde 3 kat daha fazla ödeme aldı. iyzico mühendisleri açısından bu olağan dışı trafiği yönetmek ve problemsiz bir şekilde altyapının bu yüke dayanması, fazlasıyla gurur verici bir durum. Üstelik bu ölçeklenebilirlik deneyimini, bulut altyapıları (AWS, Google Cloud..vs.) kullanmadan kendi donanımlarımızla sağladık. Çünkü yasal zorunluluk sebebiyle ödeme kuruluşları bulut altyapılarını kullanamıyorlar. İlerleyen günlerde buradaki deneyimimizle ilgili teknik makaleleri de ilgili topluluklarla paylaşacağız.


iyzico Engineering Team

iyzico Engineering Team

Code with Passion