Yapay Zekayla Geliştirdiğin Uygulaman Öne Çıktı. Trafik Patlamasını Atlatabilecek mi?
Biri uygulamanı paylaştı ve aynı anda binlerce kişi ortaya çıktı. İşte yapay zekayla geliştirdiğin uygulamanın, önemli günün arifesinde her şeyi yeniden inşa etmek zorunda kalmadan bir trafik patlamasını nasıl atlatacağı.
Kötü bir günün iyi versiyonunu hayal et. Yapay zekayla geliştirdiğin uygulamanı parçası olduğun bir toplulukta paylaştın ya da büyük bir takipçi kitlesi olan biri onu deneyip paylaştı ya da hiç başvurmadığın bir forumun ana sayfasına düştü. Birden, alışık olduğun damla damla ziyaretçi akışı bir sele dönüştü. Bin kişi, hepsi aynı saat içinde etrafa tıklıyor.
İşte bu, o şeyi uğruna geliştirdiğin an. Aynı zamanda yapay zekayla geliştirilen pek çok uygulamanın sessizce çöktüğü an: yavaş sayfalar, dönüp duran yükleyiciler, gönderilmeyen bir kayıt formu. Sonunda ortaya çıkan insanlar bir duvara toslayıp gidiyor ve çoğu bir daha denemek için geri dönmüyor.
İyi haber: bir trafik patlamasını atlatmak, çoğunlukla patlama gerçekleşmeden önce alabileceğin bir avuç sıkıcı karara dayanıyor. Mühendis olmana gerek yok. Hangi köşeleri kesmeyeceğini bilmen yeterli.
Trafik Sıçradığında Gerçekte Ne Bozulur
Uygulamanı aynı anda alışılmışın yüz katı insan kullandığında, işler rastgele bozulmaz. Öngörülebilir bir sırayla bozulur ve neredeyse her zaman aynı üç yerden bozulur.
Veritabanı bunalır. Biri bir sayfayı her yüklediğinde, uygulaman genellikle veritabanına bir soru sorar: “bu kullanıcının verisi nedir?” Bir kişinin sorması hiçbir şey değil. Bin kişinin aynı dakikada aynı soruyu sorması, veritabanının yanıtlayabileceğinden daha hızlı birikebilir ve herkesin sayfası kaplumbağa hızına düşer.
Uygulamanın dışındaki bir şey yavaşlar. Yapay zekayla geliştirilen uygulamaların çoğu başka servislere yaslanır — e-posta göndermek, ödeme işlemek, bir yapay zeka modelini çağırmak. Bu servisler genellikle onları ne kadar hızlı çağırabileceğini sınırlar. Normal trafikte bu sınırı asla fark etmezsin. Bir patlama sırasında uygulaman ona çarpar ve birden o servise dokunan her işlem takılır.
Uygulama aynı pahalı işi tekrar tekrar yapar. Ana sayfan biri her ziyaret ettiğinde ağır bir hesaplama çalıştırıyorsa — bir liste çekip, sıralayıp, biçimlendiriyorsa — bu on ziyaretçi için sorun değil ama bin kişi için acımasız olur. O iş zaten hep israftı. Düşük trafik sadece onu gizledi.
Örüntüyü fark et: bunların hiçbiri yeni hata değil. Patlama hiçbir şeyi bozmadı. Düşük trafiğin altında sessizce duran, hâlihazırda var olan zayıflıkları ortaya çıkardı.
En Ucuz Çözüm: Değişmeyen Şeyleri Önbelleğe Al
Önbelleğe alma (caching) teknik bir şey gibi geliyor ama fikir basit: bir sorunun cevabı herkes için aynıysa ve nadiren değişiyorsa, onu her ziyaretçi için yeniden yapmak yerine bir kez hesapla ve yeniden kullan.
Ana sayfan muhtemelen ona giren 1.000 kişinin hepsine birebir aynı görünüyor. Peki neden veritabanından onu 1.000 kez yeniden oluşturmasını isteyesin? Bir kez oluştur, sonucu birkaç dakika sakla ve o kayıtlı kopyayı herkese sun. Az önce bin pahalı veritabanı yolculuğunu bire dönüştürdün.
Yapay zeka oluşturucuna tam olarak şunu söyle: “Ana sayfayı ve herkese açık ürün listesini beş dakika önbelleğe al ki her ziyarette veritabanına gitmeyelim.” Herkes için aynı olan ve saniyesi saniyesine güncel olması gerekmeyen her şey — bir fiyatlandırma sayfası, herkese açık bir liste, bir blog dizini — önbelleğe alma adayıdır. Kişiselleştirilmiş şeyler (birinin kendi paneli, hesap ayarları) aynı şekilde önbelleğe alınamaz ama bir patlama sırasında bu genellikle trafiğin küçük bir dilimidir. İnsanların çoğu aynı birkaç herkese açık sayfaya bakıyordur.
İnsanları Daha Sonra Olabilecek Şeyler İçin Bekletme
İşte yapılması kolay ve düzeltilmesi kolay bir hata. Diyelim ki biri kaydoldu ve uygulaman ona bir hoş geldin e-postası gönderiyor. Eğer uygulaman onu, e-posta tamamen gönderilene kadar kayıt sayfasında beklettirir se, yavaş bir e-posta servisi tam da en çok insanın kaydolduğu anda kaydını yavaşlatır.
Çözüm, yavaş işlerin arka planda olmasına izin vermek. Kişi anında “İçeridesin!” görür ve e-posta birkaç saniye sonra, kimse beklemeden çıkar. Aynı sonuç ama ziyaretçi, üç şirket ötedeki bir e-posta sunucusu ağırdan alırken bir yükleyiciye bakıp durmuyor.
Oluşturucuna sor: “Hoş geldin e-postasını arka planda gönder ki kayıt onun için beklemesin.” Aynı mantık, kişi devam edebilmek için bitmesi gerekmeyen her şey için geçerli — bir rapor oluşturmak, başka bir araca senkronize etmek, bir bildirim göndermek. Kullanıcının sonuca şu an ihtiyacı yoksa, onu bunun için bekletme.
Bir “Çok Fazla İnsan” Planın Olsun
Bazen patlama, hazırlandığın her şeyden daha büyük olur ve dürüst hamle, çökmek yerine zarif bir şekilde geri çekilmektir. Hâlâ çalışan yavaş bir uygulama, bozuk bir uygulamayı döver.
Bunun birkaç basit versiyonu:
- Dostça bir bekleme mesajı. Bir şey gerçekten aşırı yüklenmişse, “Şu an çok fazla ziyaretçimiz var — bir an verin” göstermek, boş bir ekrandan ya da ham bir hatadan çok daha iyidir. İnsanlar yoğun bir uygulamayı affeder. Bozuk bir uygulamayı affetmezler.
- En ağır özelliği geçici olarak kapat. Bir özellik pahalı olansa — diyelim her tıklamada gerçek para ve zaman harcayan bir yapay zeka üretimi — onu bir dalgalanma sırasında gizleyip uygulamanın geri kalanını hızlı tutabilirsin. Bir patlama sırasında ziyaretçilerin çoğu zaten en zorlayıcı özelliğini değil, göz gezdiriyordur.
- Faturanın nereden geldiğini bil. Uygulaman her ziyarette ücretli bir yapay zeka modelini çağırıyorsa, bin ziyaretçi sadece yavaş bir sayfa değil, sürpriz bir ödeme anlamına gelebilir. Hangi işlemlerin para harcadığını bilmek, neyi önceden sınırlayacağına karar vermeni sağlar.
Otuz Dakikalık Bir Prova
Zayıf noktalarını bulmak için süslü araçlara ihtiyacın yok. Birkaç arkadaşa ve yarım saate ihtiyacın var.
Beş altı kişiden aynı anda uygulamanı açmasını ve birkaç dakika boyunca sıkı sıkı etrafa tıklamasını iste — kaydolsunlar, ana özelliği kullansınlar, yoğun sayfaları yüklesinler. Kaba bir yöntem ama bariz şeyleri hızla yüzeye çıkarır. Uygulama altı kişi onu hırpalarken bile yavaş hissettiriyorsa, bin kişi onu yere serer. Hızlı kalıyorsa, en azından düşük çıtayı aşmışsın demektir.
Onlar tıklarken hangi sayfanın en yavaş hissettirdiğini izle. O yavaş sayfa, gerçek bir trafik patlamasının en çok zarar vereceği yerdir ve ilk önbelleğe almaya ya da sadeleştirmeye değecek şeydir. Bin kullanıcıyı simüle etmeye çalışmıyorsun. Altı kişide bile zaten zorlanan o tek sayfayı bulmaya çalışıyorsun.
Asıl Hedef
Uygulamanı sonsuza dek kurşun geçirmez yapamazsın ve buna ihtiyacın da yok. Hedef, ilk viral anında on bin kişiyi kusursuzca karşılamak değil. Sonunda ortaya çıkan birkaç yüz kişinin önünde rezil olmamak — çekmek için bu kadar çok çalıştığın insanların dönen bir tekerlek yerine çalışan bir uygulama almasını sağlamak.
Değişmeyen sayfaları önbelleğe al. Yavaş işleri arka plana taşı. “Çok fazla insan” için bir planın olsun. İhtiyaç duymadan önce beş arkadaşla bir prova yap. Bunların hiçbiri kendi başına kod yazmanı gerektirmiyor — sadece yapay zeka oluşturucundan doğru şeyleri istemeyi bilmeni gerektiriyor.
Sonra, anın geldiğinde, çılgınca hata ayıklamak yerine onun tadını çıkarabilirsin. İşte bu hafta üzerine düşünmeye değer soru: yarın bin kişi ortaya çıksa, ilk hangi sayfa bozulurdu — ve bunu zaten biliyor musun?