O kompaniji
184
Iskustva
98
Plate
Poslovi
Levi9 Technology Services logo

Levi9 Technology Services

4.3
18.08.2021.

TV program bilo gde – izazovi i rešenja u razvoju play along aplikacija

Helloworld

Prva opcija je da se aplikacija ponaša kao da nikad nisu ni postojali, što je moguće u situaciji kada samoj aplikaciji ti podaci nisu od ključnog značaja, dok je druga opcija rekonstrukcija stanja, gde aplikacija praktično treba da pita server „šta je propustila“ i na osnovu toga rekonstruiše stanje, popuni rupe i nastavi da radi. Rešavanje ovog problema zahteva jako puno testiranja i zbog toga je ova aktivnost od posebnog značaja u ovakvim projektima.

Televizija je medij uz koji su tokom prošlog i ovog veka odrastale generacije ljudi. Tokom druge polovine dvadesetog veka bilo je praktično nezamislivo da domaćinstvo nema bar jedan televizor.

Sećate se scene iz jedne od epizoda “Prijatelja” kada Džoi začuđeno pita: “Ne poseduješ TV? Ka čemu ti je nameštaj usmeren?”.

Ipak era interneta i brzog razvoja tehnologije dovela je do rasta streaming servisa kao što su Netflix, HBO, ali i druge platforme poput RTS Planete, Iris-a ili EON-a koje omogućavaju da se TV sadržaj gleda u bilo kom trenutku na praktično bilo kom uređaju sa ekranom. Naravno, ovo znači da je televizija kao medij počela da gubi na značaju, pa je tako sve veći broj domaćinstava koji izbacuju televizore iz kuće, dok je količina novca koji se troši na TV oglašavanje u opadanju.

Tehnologija je omogućila televizijskim kompanijama da se prilagode ovim trendovima. Jedan od načina su pomenute platforme poput RTS Planete ili platforme koja se razvija u kancelariji Levi9 - KIJK.nl.

Drugi način prilagođavanja televizije je rešavanje problema interaktivnosti. Naime, tradicionalno, interakcija sa gledaocima je najčešće realizovana putem (elektronske) pošte ili uključivanja gledalaca u program putem telefona.

Razvoj tehnologije nam je omogućio da taj nivo interaktivnosti programa podignemo na značajno viši nivo kroz tzv. second screen ili play along aplikacije.

Šta su zapravo Play along aplikacije

Na našim televizijskim programima su, primera radi, među najpopularnijim emisijama u svoje vreme bili kvizovi Milioner ili TV Slagalica, realiti program Veliki brat, talent emisije Idol, The Voice ili X Factor.

Sve ove emisije imaju dobar potencijal za interakciju sa publikom jer samo čitanje pitanja vas vuče da na isto odgovorite i proverite svoje znanje ili da svojim glasom pomognete nekome da pobedi u vašoj omiljenoj emisiji.

Upravo taj nivo interakcije nam omogućavaju play along aplikacije.

Za razliku od standardnih mobilnih aplikacija koje imaju svoje baze podataka pitanja i možete odigrati partiju Milionera u svakom trenutku, play along aplikacije prate televizijsku emisiju u realnom vremenu. To znači da onog trenutka kada pitanje vidite na televiziji, to pitanje je u isto vreme i u vašem telefonu.

Beogradska kancelarija Levi9 je tokom prethodnih nekoliko godina radila na nekoliko ovakvih aplikacija. U pitanju su kvizovi „Five gold rings“ koji je emitovan u nekoliko desetina zemalja širom sveta, „Lucky 13“ koji je emitovan u Holandiji, ali i aplikacije za čuveni talent show „The Voice“ koji je emitovan u čak 147 država i regija.

Kako funkcionišu ove aplikacije

Najkraće, postoji nekoliko glavnih delova sistem:

• Prvi je najčešće neka od implementacija socket servera koji će u realnom vremenu komunicirati sa klijentima.

• Drugi deo je API (REST/GraphQL ili drugi) koji može služiti za autorizaciju, vođenje evidencije o stanju korisnika, prikazu statičkih podataka i drugim vremenski neosetljivim operacijama.

• Treći deo je naravno klijentska mobilna ili web aplikacija koju koriste krajnji korisnici.

• Četvrti deo je režiserska aplikacija kroz koju se definiše kada će se koji događaj u aplikaciji desiti.

Naravno, ovo je dosta uprošćeno shvatanje na visokom nivou i tu postoji još mnogo delova koji će zavisiti od konkretnih potreba projekta.

Koji su glavni izazovi (i rešenja)

Prvi izazov je naizgled dosta jednostavan i bezazlen, a krije se iza naziva „Broadcast delay“. Ovaj pojam podrazumeva namerno kašnjenje živog programa koje najčešće iznosi 7 sekundi. Razlog za ovakvo kašnjenje je sprečavanje neprihvatljivog sadržaja u programu, tzv. profanity delay. Ovaj problem nije toliko značajan u aplikacijama gde režiser može unapred da zakaže sve događaje, što je slučaj u aplikacijama poput kvizova „Milioner“ ili „Five Gold Rings“ koji su unapred snimljeni.

Problem dolazi do izražaja kada režiser sedi u studiju tokom žive emisije i treba da emituje neki događaj u aplikaciji iz režiserske aplikacije. Režiser ima potrebu da događaj emituje onda kada ga vidi, a socket konekcija je dovoljno brza da do aplikacije korisnika stigne za par stotina milisekundi. Ali, zbog profanity delay-a svi događaji koje režiser emituje moraju biti zadržani u sistemu, tako da je potrebno implementirati ili određeni tajmer ili queue mehanizam koji će upravljati ovim zadržavanjem.

Drugi veći izazov u aplikaciji predstavljaju prekidi u njenom radu. Bilo da su u pitanju prekidi koje izazove korisnik napuštanjem aplikacije ili se to desi usled prekida u internet vezi, deo podataka potencijalno neće stići do aplikacije. Nakon što je prekid u radu nestao, aplikacija se vraća normalnom radu, ali se postavlja pitanje šta raditi sa nedostajućim podacima.

Naredni izazov sa kojim se suočava razvoj ovakvih aplikacija je skalabilnost sistema. Naime, najčešća situacija je da se emisija na televiziji emituje jednom nedeljno ili dnevno. To znači da aplikacija tokom većeg dela vremena praktično neće imati ni jednog aktivnog korisnika i bilo bi izuzetno skupo održavati infrastrukturu namenjenu milionima konkurentnih korisnika. Sa druge strane, u trenutku početka emisije na televiziji, broj korisnika za par minuta skače sa 0 na nekoliko stotina hiljada ili čak miliona korisnika.

Ovaj problem su cloud provajderi kao što su AWS ili Azure značajno olakšali, ali i dalje ovo predstavlja značajan izazov. Dobar primer gde je ovaj problem izuzetno izražen je situacija kada stotine hiljada ljudi treba da odgovore na pitanje u roku od 15 sekundi, a odmah nakon toga treba da prikažete i koliko njih je odgovorilo tačno, a koliko ne. Ovo ukratko znači da je throttling zahteva za glasanje vrlo ograničen, pa samim tim i nije realistična opcija, tako da je jedno od rešenja učitavanje dela baze podataka u sisteme koji omogućavaju brz upis poput Redis-a, dok bi se ove vrednosti naknadno, posle emisije, sinhronizovale sa originalnom bazom.

Pored pomenutog, postoji problem nagrađivanja korisnika. Često se dešava da neko pronađe rupu u nekoj od popularnih igrica i uspe sebi da upiše besmisleno visoke rezultate. Ovo nije toliko problematično kada je u pitanju čista zabava. Problem nastaje kada svaki odgovor može doneti igraču novčanu ili robnu nagradu.

Zbog toga je važno imati deo sistema koji može isključiti određene igrače iz igre u svakom trenutku, ali, isto tako, i deo sistema koji naknadno može analizirati ponašanje igrača - da li je više igrača međusobno povezano, da li isti igrač osvaja nagradu u više uzastopnih navrata, da li komunicira sa serverom na očekivani način ili pokušava da manipuliše zahtevima…

Takođe, jedan od specifičnih problema za ovakve aplikacije je već prethodno pomenuto testiranje i kvalitet aplikacije. Naime, i Google Play i App Store imaju određene procedure za odobravanje aplikacija. Ovi rokovi mogu biti i relativno kratki, ali opet nedovoljno kratki kada se desi da veliki defekt ode u produkciju. Ako se desi bag koji može čak i odložiti emisiju jer onemogućava aplikaciji da radi normalno, koliko god mali taj bag bio i koliko god brzo bio rešen, potencijalno se može desiti da aplikacija ne radi i nekoliko dana i da time nanosi štetu emisiji na televiziji.

Zbog toga je kod ovih aplikacija posebno značajno uraditi detaljno testiranje svih funkcionalnosti i sigurnije je ići sa starijom verzijom ako ne postoje značajne garancije da će nova verzija raditi ispravno. Ovde do izražaja dolazi i menadžment projekta koji mora biti svestan rizika koji nosi eventualno skraćenje rokova ili brzopleto dodavanje i guranje novih funkcionalnosti koje ne mogu biti kvalitetno razvijene i testirane u određenom vremenskom periodu.

Za kraj – vredi li upustiti se u koštac sa ovim izazovima

Razvoj ovih aplikacija je izuzetno dinamičan i zabavan za sve članove projektnog tima. Od developera, preko testera do menadžera i dizajnera. Stvari se često i brzo menjaju, ali se istovremeno vodi računa o svim prethodno navedenim stvarima.

Sa druge strane, satisfakcija koju donosi krajnji rezultat rada na ovakvom projektu je ogromna, posebno kada posle emisije čujete da je u tih sat vremena aplikaciju koristilo milion ljudi, a da je ipak sve prošlo savršeno.

Rad na ovakvim aplikacijama donosi još jednu specifičnost koju ne možete doživeti na većini drugih aplikacija. Televizijske emisije imaju hard deadline. Sezona kreće tačno određenog datuma, a najavljuju se nedeljama unapred. Nema pomeranja, nema odlaganja, nema prostora za grešku. To je takođe posebno iskustvo koje lično meni bilo vredno, a ujedno je bila i prva epizoda mog rada u Levi9.

Piše Vuk Stanković, Tech Lead u Levi9 Serbia

Posetite profil kompanije Levi9.

Galerija