Duolingo refaktoryzuje kod na Androidzie za pomocą bibliotek MVVM i Jetpack

Duolingo to najpopularniejsza aplikacja do nauki języków na świecie, ponieważ udało jej się sprawić, że coś, co w przeszłości wydawało się trudne, stało się łatwe i przyjemne. Aby zapewnić płynne działanie tej usługi, musimy stale wprowadzać nowe funkcje i eksperymenty oraz dbać o to, aby aplikacja działała bez zarzutu. Dla Duolingo aplikacja, która nie odpowiada na urządzeniu w dowolnym miejscu na świecie, może oznaczać potencjalnie zniechęconego ucznia. Zobowiązuje to firmę do dbałości o jakość aplikacji, zwłaszcza na urządzeniach z Androidem, z których korzysta 60% uczniów, w tym dyrektor generalny, który śledzi działanie aplikacji na telefonie z niższej półki. Gdy zespół programistów Duolingo na Androida zauważył wzrost liczby błędów „Aplikacja nie odpowiada” i spadku liczby klatek, a nawet otrzymał odręczne skargi, natychmiast podjął działania.

Wkrótce odkryli źródło problemów z wydajnością aplikacji: dotychczasowa architektura oprogramowania nie była dobrze skalowana wraz z rozwojem zespołu. Konieczne aktualizacje powodowały znaczne pogorszenie wydajności aplikacji. Deweloperzy poświęcali więcej czasu na naprawianie błędów, a mniej na wprowadzanie nowych funkcji generujących przychody. Przestarzała architektura oprogramowania zaczynała być nie do zaakceptowania – dla nich, dla szybkości pracy zespołu, a przede wszystkim dla wygody użytkowników. Musieli przebudować bazę kodu od podstaw.

Jak to zrobili

Na początku zespół był podzielony. Czy to powinien być teraz ich jedyny priorytet? Jedna grupa uważała, że ważniejsze jest dalsze wprowadzanie nowych funkcji i zwiększanie przychodów, a druga, że należy skupić się na ponownym uruchomieniu Androida. W końcu doszli do wniosku, że rosnący wysiłek związany z walką z regresjami może całkowicie wykoleić ich plan działania. Musieli zaryzykować wszystko.

Zespół zdecydował się na coraz popularniejsze rozwiązanie. Deweloperzy postanowili napisać aplikację od nowa, korzystając z Model-View-ViewModel, czyli wzorca oprogramowania obsługiwanego przez Google, który umożliwia deweloperom usprawnienie architektury aplikacji dzięki wyraźnemu rozdzieleniu zadań. Dzięki MVVM mogli oddzielić tworzenie graficznego interfejsu użytkownika (widoku) od tworzenia logiki biznesowej (modelu). Mogą one ustalać jasne i uzgodnione wzorce, co ułatwia dostosowywanie podejścia do nowych funkcji i wdrażanie nowych deweloperów.

Podzielenie każdej funkcji na osobne moduły pozwoliło zespołowi szybko odzyskać produktywność, ponieważ mógł on przydzielać małe grupy do równoległej pracy nad poszczególnymi funkcjami, co zwiększyło szybkość i zmniejszyło liczbę błędów.

Wdrożyli tę nową architekturę za pomocą bibliotek z Jetpacka Androida, w tym DaggeraHilt, aby ułatwić sobie pisanie kodu, który działa spójnie na różnych wersjach Androida i urządzeniach. Te 2 dodatki umożliwiły im tworzenie lepiej zamkniętych funkcji i wydajniejsze korzystanie z wbudowanych modułów Androida.

Wyniki

Dzięki temu uczniowie mogą korzystać z platformy na urządzeniach z Androidem, zwłaszcza tych z niższej półki. Dzięki temu aplikacja działa sprawniej, a animacje na flagowych urządzeniach są płynniejsze. Dzienny odsetek błędów „Aplikacja nie odpowiada” (ANR) spadł o 41%. Odsetek czasu, w którym liczba klatek na sekundę w aplikacji była niższa niż docelowa, zmniejszył się o 28%. Co najważniejsze, użytkownicy odnotowali wzrost szybkości przewijania kluczowych ekranów o 40%.

Ręce trzymające notatki z informacją o 41% mniejszej liczbie błędów ANR, 28% większej liczbie klatek na sekundę i 40% szybszym działaniu.


Cały proces ponownego uruchomienia trwał 8 tygodni i sprawił, że aplikacja stała się znacznie bardziej angażująca i przyjemna dla wszystkich użytkowników Duolingo. W ciągu 6 miesięcy od tego czasu zespół nie odnotował żadnych znaczących nowych regresji wydajności, co pozwoliło mu ponownie skupić się na wprowadzaniu funkcji generujących przychody. Decyzja o skupieniu się na jakości przyniosła oczekiwane rezultaty.

Dzięki zaangażowaniu w realizację swojej misji Duolingo stało się najpopularniejszą na świecie aplikacją do nauki języków. Ich zaangażowanie w tworzenie doskonałych aplikacji – innowacyjnych rozwiązań edukacyjnych bez uszczerbku dla dostępności – sprawiło, że nadal są na szczycie.

Rozpocznij

Jeśli chcesz poznać szczegóły integracji bibliotek Jetpacka z Duolingo i dowiedzieć się, jak Model-View-ViewModel ulepszył tę aplikację, przeczytaj nasze studium przypadku dla deweloperów.