Dosya Yükleme Örneği: Web Uygulamalarında Uzun Süren İşlemleri Nasıl Yönetiriz?

Yazan

içinde

Bir web uygulaması geliştirdiğinizi varsayalım, bu sitemde büyük bir dosya yüklenecek örneğin sipariş verisi. Sizden istenen sistem bu sipariş verisinin öncelikle yüklenmesi ve sonrasında işlenerek veritabanına aktarılmasını sağlamak.

Bu süreçte hangi sorunlar ile karşılaşacaksınız ve ne tür çözümler bulacaksınız?

Bu yazının amacı teknik bilgiden çok(zaten yapa zeka yapıyor) bir yazılımcı olarak bu süreci nasıl yönetirsiniz, hangi sorunlar iler karşılaşırsınız ve hangi teknolojileri kullanabilirsiniz bundan bahsedeceğim.

Hemen başlayalım

Problem

Problem, bir web isteğinde içe aktarılamayacak kadar büyük bir verinin sisteme yüklenmeye çalışmasıdır.

Eğer bu işlemi normal bir form şeklinde yaparsak kullanıcıyı bekleteceğiz yani tarayıcısı açık kalacak ve bu süreçte bu kişiye hiç bir bilgilendirmede bulunmayacağız?

Çözüm Nedir?

Burada sistemsel bir karar vermemiz gerekiyor, dosyayı yüklerken ve işlerken aynı zamanda kullanıcıya dönüş yapmalı ve bunu yaparken de olası kullanıcı bağlantı kopma ve tarayıcı kapatma durumlarının işlemi etkilemesini engellemeliyiz.

Burada kullanıcı deneyimini ve sistem kısıtlarını göz önünde bulundurarak çözüm üretmeliyiz.

Burada ilk yapılması gereken işi iki ayrı parçaya bölmek.

İlk Aşama Dosya Yükleme Aşaması

Öncelikle sistemi dosya yükleme ve işleme olmak üzere iki aşamaya bölmeliyiz.

Birinci aşama olan dosya yükleme aşamasında kullanıcı tabiki tarayıcısını açık tutmalıdır.

Burada neler yapabiliriz?

  • Yükleme işlemini ajax ile yaparak kullanıcının bir process bar ile bilgilendirilmesini sağlayarak daha iyi bir deneyim sunabiliriz.
  • Sunucumuzun dosya yükleme limitini html/js ile client tarafında da uygulayarak kullanıcının belirlediğimiz boyutlar arasında dosya yüklemesini sağlayabiliriz.
  • Sunucumuzun timeout değerini artırarak olası kullanıcı internet yavaşlığında hizmet vermeye devam edebiliriz.

Bu önlemleri aldığımız zaman kullanıcı dosya yükleme sayfamızdan iyi bir deneyim elde edecektir.

İkinci Aşama Dosyanın İşlenmesi

Dosya işleme aşaması önemli ikinci aşamadır, ajax ile hem dosyayı yükleyip hem de o an işlemek sistemimizde aşırı yük oluşturabilir ve aynı zamanda kullanıcının tarayıcısının kapanması durumunda işlem yarıda kalabilir.

Bunları önlemek için neler yapabiliriz?

  • Öncelikle RabbitMQ gibi bir Message Broker kullanarak, bu tarz arkaplan işlemlerini sistemde uygun kaynak bulunana kadar bekletebiliriz.
  • Uygun kaynağın işi ele alması ile birlikte web socket kullanarak kullanıcını işlemin durumu hakkında devamlı bilgilendirebiliriz.
  • Bu sayede kaynak ve kullanıcı bağlantı kopması gibi durumları çözmüş oluyoruz.

Sonuç

Bu yazıda bir sistem geliştirirken elimizdeki kaynakları ve kullanıcı deneyimini göz önünde bulundurarak nasıl karar vermemiz gerektiğini örneklendirdim. Örneğimizde çok bilindik bir yöntem olan dosya yükleme yöntemini kullandım.

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir