Duolingo, MVVM ve Jetpack kitaplıklarıyla Android'de yenileniyor

Duolingo, eskiden kullanıcıların göz korkutucu bulduğu şeylerin kolay ve eğlenceli hissetmesini sağladığı için dünyanın en popüler dil öğrenme uygulamasıdır. Bu ferah dil deneyimi, sürekli yeni özellik ve deneme akışı ve bunların tümünü sunabilecek sorunsuz çalışan bir uygulama gerektirir. Duolingo'ya göre, dünyanın herhangi bir yerindeki cihazlarda yanıt vermeyen bir uygulama, öğrencilerin hevesini kırabilir. Bu, onları özellikle öğrencilerin yüzde altmışı tarafından kullanılan Android cihazlarda mükemmelleştirmeyi sağlıyor. Bunlardan biri de uygulamayı giriş seviyesi bir telefondan takip eden CEO'su. Bu nedenle, Duolingo'nun Android geliştirme ekibi "Uygulama Yanıt Vermiyor" hatalarının arttığını fark ettiğinde, kareler düştüğünde ve hatta elle yazılmış şikayetler aldığında hemen harekete geçtiler.

Kısa süre içinde uygulamanın performans sorunlarının kaynağını ortaya çıkardılar: Mevcut yazılım mimarisi, ekiplerinin büyümesiyle birlikte iyi ölçeklenmiyordu. Gerekli güncellemeler, uygulamada zorlu performans gerilemelerine neden oluyordu. Geliştiricileri hataları düzeltmek için daha fazla, gelir getiren yeni özellikler sunmaya daha az zaman ayırıyordu. Güncelliğini yitirmiş yazılım mimarileri kabul edilemez bir deneyim hâline gelmeye başlamıştı. Ekipleri, ekip hızı ve en önemlisi, kullanıcı deneyimi üzerinde olumsuz yönde etkileniyordu. Kod tabanlarını sıfırdan yeniden oluşturmaları gerekiyordu.

Nasıl başardılar?

Başlangıçta ekip dağılmıştı. Şu anda tek önceliği bu mu olmalı? Bir grup, yeni özellikler sunmaya ve geliri artırmaya devam etmenin daha önemli olduğunu düşünürken, diğeri tüm dikkatlerini Android'in yeniden başlatılmasına odaklanmanın ilerisi için olduğuna inanıyordu. Sonunda, regresyonlarla mücadele etmek için artan çabaların yol haritalarını tamamen rayından çıkarabileceği konusunda fikir birliğine vardılar. Her şeye dayanması gerekiyordu.

Ekip, giderek popülerlik kazanan bir çözüm üzerinde karar kıldı. Google tarafından desteklenen bir yazılım kalıbı olan Model-View-ViewModel'i kullanarak uygulamalarını yeniden yazmaya karar verdiler. Bu model, geliştiricilerin endişeleri net bir şekilde ayırarak uygulamanın mimarisini basitleştirmelerine olanak tanıyor. MVVM sayesinde, grafik kullanıcı arayüzünün geliştirilmesini (görünüm) iş mantığının (model) geliştirilmesinden ayırabildiler. Açık ve üzerinde anlaşmaya varılmış modeller oluşturarak hem yeni özelliklere yaklaşımlarını uyumlu hale getirmeyi hem de yeni geliştiricileri işe alıştırmayı kolaylaştırabilirler.

Her özelliği kendi modüler parçalarına ayırmak ekibin üretkenliğini kısa sürede geri kazanmasını sağladı. Her özellik üzerinde paralel olarak çalışacak küçük gruplar atayarak hızı artırırken hataları azalttı.

Bu yeni mimariyi, Android sürümlerinde ve cihazlarda tutarlı bir şekilde çalışan kodlar yazmalarına yardımcı olmak için Android'in Jetpack'indeki Dagger ve Hilt gibi kitaplıklarla uyguladılar. Bu iki ekleme, şirketin daha iyi kapsüllenmiş özellikler oluşturmasını ve Android'in yerleşik modüllerini daha verimli bir şekilde kullanmalarını sağladı.

Sonuçlar

Bu performans artışı, Android'de, özellikle de giriş düzeyindeki cihazlarda öğrencilerin deneyimini önemli ölçüde iyileştiriyor. Ayrıca, önemli cihazlarda daha akıcı animasyonlar içeren daha duyarlı bir uygulama ortaya çıktı. Günlük "Uygulama Yanıt Vermiyor" veya ANR oranı %41 düştü. Uygulamanın, hedef kare hızının altına düşme süresi %28 oranında azaldı. En önemlisi, kullanıcılarının önemli ekranlarda gezinirken hızda% 40 artış olması.

Ellerini tutarken ANR'ler% 41 azaldı, kare hızı% 28 arttı ve deneyim% 40 arttı.


Tamamen yeniden başlatma işlemi sekiz hafta sürdü ve uygulamayı Duolingo'nun tüm öğrencileri için çok daha ilgi çekici ve eğlenceli hale getirdi. Aradan geçen altı ayda önemli bir performans regresyonu kaydetmediler. Bu da gelir getiren özellikleri göndermeye odaklanabilmelerini sağladı. Ekibin çalışmalarını kaliteye odaklama kararı karşılığını aldı.

Duolingo'nun bu amaç doğrultusundaki kararlılığı, kendisini dil öğrenme alanında dünyanın en iyi uygulaması haline getirdi. Erişilebilirlikten ödün vermeden en son eğitim deneyimleri oluşturma ve uygulamanın mükemmelliği konusundaki kararlıları, onları başarıya ulaştırdı.

Başlayın

Duolingo'nun Jetpack’in kitaplıklarını nasıl entegre ettiğini ve Model-View-ViewModel'in uygulamasını nasıl iyileştirdiğini ayrıntılarıyla incelemek istiyorsanız geliştiriciler için hazırlanan teknik örnek olayımızı okuyun.