Ispod haube Photomatha, najpopularnije svjetske matematičke aplikacije

Intervju: Matija Korpar, Core technologies lead u Photomathu

Photomath je aplikacija #1 u svijetu u području matematike, a s preko 220 milijuna preuzimanja najpopularnija je hrvatska aplikacija na svijetu, te jedna od najpopularnijih obrazovnih aplikacija svih vremena. Porazgovarali smo s prvim čovjekom core tehnologija iz Photomatha i tražili da nam pojasni kako ona funkcionira “ispod haube”.

.debug: Za početak, recite nam nešto o sebi, i timu u kojem radite…

Matija Korpar: Diplomirao sam 2013 godine na FER-u. Godinu prije počeo sam, kao student, raditi u PhotoPayu (današnji Microblink) iz kojeg se kasnije razvio Photomath. Od početka radim u Core timu. Bavimo se razvojem ključnih dijelova softwarea u Photomathu kao što su automatizirani “step by step” solver ili automatska sinteza matematičkih formula iz OCR-a.

Photomath je danas najpopularnija matematička aplikacija u svijetu. Na kakvoj se infrastrukturi kao takva “vrti”?

Photomath je mobilna aplikacija te se dugi niz godina izvodio isključivo na mobilnim uređajima. Velik dio matematičkih problema, barem trenutačno, ne može se automatizirano rješavati. Primjer takvih problema su zadaci riječima ili geometrija. Kako bismo doskočili tome razvili smo platformu gdje naši matematički eksperti rješavaju zadatke, zbog toga što su takve baze zadataka velike nije ih bilo moguće spremiti na mobilne uređaje. To je bio prvi dodir Photomatha s cloud infrastrukturom.

Razvojem tehnologije i dostupnosti interneta cloud infrastruktura je sve pristupačnija pa tako i Photomath polako seli tehnologiju u cloud. Najveći razlog tome je veća fleksibilnost u razvoju pojedinih komponenti te njihovo lakše održavanje i mijenjanje. Npr. mnogo je lakše zamijeniti određeni “pokvareni” servis nego natjerati korisnike da ažuriraju “pokvarenu” aplikaciju. U Photomathu nastojimo koristiti najmoderniju dostupnu tehnologiju. Trenutačno je najpopularnija cloud infrastruktura neka vrsta mikroservisne arhitekture upogonjene Kubernetesom gdje je cilj postići velik broj manjih skalabilnih servisa.

Što je potrebno da bi komplicirana infrastruktura koju imate radila na slabijim serverima, tzv. “mikrovalkama”?

U navedenoj mikroservisnoj arhitekturi, pogotovo ako iza vas stoji jaki provider iste, većinu problema možete uvijek riješiti većom skalom, tj. većim brojem instanci vaših servisa. To naravno više košta te dovodi u pitanje isplativost istog pristupa. Također, važno je i korisničko iskustvo za koje je vrijeme obrade korisničkog upita od velike važnosti. Kako smo imali povijest razvoja mobilnih aplikacija koje iza sebe imaju jezgru pisanu u C++, tako smo se i za pisanje mikroservisa odlučili za C++. Bilo je zahtjevno posložiti dobru networking bazu u C++, no uspjeli smo u tome.

To nam se u konačnici isplatilo u malom broju mikroservisa koji su potrebni kako bi posluživali naše korisnike. Volimo uspoređivati mjernu jedinicu virtualnog stroja koji pokreće servis (tzv. pod) sa “mikrovalkama” jer su to uglavnom slabe, single-core virtualke.

Kako koristite web tehnologije da bi povećali produktivnost tima?

Većina proizvoda koje isporučuje Core team je pisana u C++. Problem u tome je što C++ ne pruža neku veliku podršku “goto” alata. Kako bismo nadomjestili to razvijamo web alate oko core komponenti koji nam omogućuju jednostavnije testiranje, praćenje promjena automatski generiranog sadržaja, praćenje kvalitete prepoznavanja formula… Gotovo sve što se može automatizirati smo automatizirali tijekom godina. Kao primjer mogu dati automatsku provjeru formatiranja koda, automatske testove, automatske vizualne (html) reportove testova, automatsku provjeru korištenja memorije te usporedbe potrošnje i memorije s prijašnjim verzijama komponenti. Uz to postoje alati za intertimsku komunikaciju koja je potrebna za razvoj pojedinih komponenti.

Kažete da mnogo koristite C++, zašto je odabir pao baš na taj jezik?

U početku razvoja zapravo nismo ni imali izbora. Godina je 2014. i mobiteli su slabi, kamere su loše a u sve to morate u neko razumno vrijeme ugurati OCR, sintezu formule te step by step rješavanje. Jedini logičan izbor je bio high performance jezik kao što je C++ koji zapravo ni nema konkurenciju što se tiče mogućih performansi. Kroz godine sve smo se više upoznali s njime te shvatili kontrolu i moć koju pruža. C++-u ljudi često zamjeraju strmu krivulju učenja te njegov spor razvoj. Svemu tome se može doskočiti kako bi u konačnici u svojim rukama imali najbolji alat za vaš high performance softver.

Možete li nam dati primjer alata za veću produktivnost koji ste sami izradili?

Jedan od najdugovječnijih alata koji imamo je alat za komunikaciju automatskih metoda rješavanja  između našeg Math R&D tima i Core tima. Vrlo rano smo shvatili da su inženjeri vrlo loši u metodici poučavanja matematike te smo razvili alat gdje metodičari mogu pisati postupke za zadatke te koji je povezan s automatskim solverom. Svakom nadogradnjom solvera, automatski generirani postupci se osvježavaju i šalju na pregled metodičarima. Ciklusi ovakvog razvoja nam omogućuju podjelu odgovornosti između timova s istovremenim zadržavanjem kvalitete.

Koliko trenutačno korisnika ima Photomath? Koliko je taj broj porastao u usporedbi s vremenom kada smo održali prošli .debug, krajem 2019.?

Kako bi usporedba bila poštena, zbog sezonalnosti korištenja Photomatha koja prati školsku godinu, usporedit ću brojeve od prosinca 2019. i 2020. U tom je razdoblju broj korisnika Photomatha porastao za otprilike 60%.

Matija Korpar

Matija je nedavno, zajedno sa kolegom Markom Mihovilićem, Head of Product Engineering, gostovao na Photomath Talks: Behind the Screens meetupu, na kojem su ispričali sve o razvoju softvera u Photomathu – od C++-a do React-a i natrag.

Unutar ovog teksta pogledajte snimku tog događaja, a ako želite da vas informiraju o njihovim nadolazećim događajima, javite im se na talks@photomath.com.

Matija će na .debugu održati predavanje pod naslovom Photomath u oblacima: 5 milijuna korisnika na 10 “mikrovalki”, na kojem će mnogo detaljnije govoriti o istoj ovoj temi – pridružite nam se i poslušajte koja je tajna uspjeha najpopularnije hrvatske mobilne aplikacije.

Usput pogledajte i otvorene pozicije u Photomathu.