LCW Mobile App’te 6M aktif kullanıcıya ulaştık

Mehmet Utku Tatlıdede
LCW Digital
Published in
3 min readDec 7, 2022

--

Sistemimize her geçen gün yeni özelliker eklenirken bir taraftandan da mevcut özelliklerimizi yeni gelişen iş ihtiyaçları ve yüke göre tekrar geliştiriyoruz. Geçen Nisan ayında gelişmeleri paylaşmak ve aylık 5M aktif kullanıcıya ulaştığımızı duyurmak amacı ile aşağıdaki paylaşımı yapmıştım.

Artık yeni rekorumuzun 6M olduğunu duyurmaktan mutluluk duyuyorum. ayrıca bir gün de satılan ürün adedi rekorumuzu da %15 oranında arttırdık. Bu adet 520 mağazamızın o günkü satışı ile neredeyse denk. Daha önceki rekor Ramazan bayramın öncesi pandemide mağazalarmız kapalı iken gelmişti. Ramazan etkisi ile satışlar neredeyse 24 saate yayılmıştı. Bu rekor kırılırken satışların da saatlik olarak çok daha yoğun geçtigini söylemeliyim.

İş birimimizin hazırladığı infografik rakamlarla Kasım’ı çok güzel özetliyor. 10 Kasım etkisi ile en çok satan ürünümüzün Atatürk tişörtü olması da ayrıca gurur verici.

Geçen Kasım özellikle ilk iki gün müşterilerimize istediğimiz kalitede hizmet verememiştik. Bu durum bizi oldukça üzmüş ve çalışmalarımızı daha da hızlandırmamız konusunda bizleri kamçılamıştı. Neleri değiştirdiğimize kısaca değinmek istiyorum.

  • Datacenterımızı taşıdık, fiziksel kaynaklarını arttırdı ve mimari olarak değiştirdik ve tüm deployment süreçlerimizi kesintisiz olacak şekilde otomasyona aldık
  • Mobil uygulamamızı dörte bölerek Hibrit Cloud mimarisine geçiş ile precheckout domainini cloud’a taşıdık
  • En fazla aylık periodlar ile senaryolarımızı güncellereyerek sürekli yük testi yaptık. Bu sayede sürekli optimizasyon döngümüzü canlı tuttuk.
  • Ekip içinde farklı teknik alternetiflerin değerlendirilmesinden çıkan tüm tartışmaları ve kullanım farklarını örnek PoC ler ve performans testleri yaparak sonuca bağladık. Bu çalışmalardan ortaya çıkan öğrenilmiş derslerin ekip içinde kullanımını yaygınlaştırdık.
  • Pars.Core (.Net Core)geçişlerine devam ettik. Burada en büyük etkiyi Catalog, Product, Stock ve Billing servislerinin geçişleri yaptı. Inventory isimli legacy servisimizi sonunda kapatabilmiş olmak bizim için gerçek bir sıçrama yarattı. Bunların her birini ayrı makaleler ile aktaracağız.
  • Mevcut SQL veribatanımızı farklı NoSql dbler (Mongo, Couchbase, Elastic Search) ile destekleyerek yükünü azalttık. Bu sayede veritabanı üzerinde oluşan darboğazları minimize ettik. SQL sunucusunun CPU’ sunu düşürmeyi planlayacak duruma geldik.
  • Async iletişimin olabileceği senaryolarda yükü Kafka üzerine aldık. Sync iletişim daha basit geliştirilse de yük anında hele de işler ters gitmeye başladığında cascading failurelara yol açma potansiyeli taşır. Burada hızlı adaptasyon için Pars.Core Kafka entegrasyon modeli ile ilerledik. Async ileşimde yaşanabilecek bir çok problemi merkezi olarak adreslemiş olduk.
  • Mevcut Fix platformumuzda (.net framework) iyileştirmeler yapmaya devam ettik. Bunlar daha çok kod reviewlarda çıkan kullandığından fazla veri çeken, tüketeceği servise liste ile tek seferde istek yapmak yerine döngü ile çok defa çağıran, gereksiz işlemler gibi gerçekten kodun akışında yapılan düzenlemeler.
  • Mobil apigateway .net core geçişini tamamlamladık. 4 ayrı servis olarak iki ayrı data centerda HPA sayesinde esnek olarak scale olabilir hale geldik.
  • İzleme yapılarımızı geliştirmemiz tüm hataları ve performans darboğazlarını önce görünür kıldık ve sonrasında da anlamdırıp kök çözümlere gitmek konusundaki kararlı davrandık. Hatalar için alarmlar set edip bunları 7 x 24 izelemeye vermemiz ve hata olduğunda sürekli aranmamız kalıcı olarak çözmek için bizlere ekstra motivasyon sağlıdı :)

Hala yapacağımız çok işimiz var. Ama en azından doğru yolda olduğumuzu düşünüyoruz. Yolun kendisinin de hergün değiştiğinin farkındayız. En basitinden Pars.Core .net core 3.1 den 6 ya geçiş projemizi başlattık. En öncelikli hedefimiz servis katmanında .net framework u tamamen emekli etmek. O zaman gelsin Fix Shop on Containers makalemizi de yayınlarız. :)

--

--