A projekt ötlete

Janival és Pistivel még a debreceni startup rendezvényeken ismertük meg egymást lassan 10 éve. Ők már akkor is VR headseteket mutogattak be egy debreceni meetupon mielőtt bárkinek lett volna ilyenje és mi is csináltuk amihez a legjobban értünk: alkalmazásokat fejlesztettünk és a fejlesztések kihívásairól tartottunk előadást, de közben figyeltük a munkásságukat. Egy élő adás alatt Jani felvetette nekünk a témát, hogy gondolkodnak saját mobil alkalmazásban és jeleztük nekik, hogy szívesen segítünk benne.

Találkoztunk, elmesélték azt, hogy mi az amire szükségük lenne mindenképpen és hogy miért van erre szükségük. Nagyon fontos volt a projekt szempontjából, hogy megértsük a motivációjukat, értsük azt, hogy mi a célja a projektnek.
A rendszer célja, hogy a csapatról összeszedjen minden olyan információt amire a közösségnek szüksége van nap mint nap. Nem új nézőket szerettek volna, vagy bármilyen módon monetizálni az alkalmazásokat, a meglévő követőknek szerettek volna egy megbízható, egyszerűen használható eszközt adni a mindennapokra amellyel követhetőbbé válnak az általuk különböző platformokon megosztott tartalmak.

Tervezés

Az első találkozó után összedugtuk a fejünket, elkezdtünk tervezni, scope-ot definiálni. Egy ilyen széleskörű követő bázissal rendelkező csapatnak rengeteg funkció hasznos lehet, de értettük hogy egy egyszerű, szerethető rendszerre van szükségük, ami a legtöbb dolgot automatizálja, hogy ne kelljen még egy felületet kezelniük tartalomgyártói oldalról.
Elkészítettünk egy követelmény specifikáció tervet, új funkciókat találtunk ki, korábbi ötleteket dobtunk ki. A specifikációhoz egy prototípust is készítettünk, ami segíti a kommunikációt, hogy el tudják képzelni mit fognak kapni tőlünk.

Mivel tudtuk, hogy a srácok folyamatosan a munkán pörögnek, valamint még nem vettek részt hasonló fejlesztésben, igyekeztünk minél jobban a kezük alá dolgozni. Döntést előkészítő opciókkal jöttünk, nem csak a bizonytalanságot növelő kérdésekkel. Egy ilyen folyamatban a proaktív hozzáállás nagyon sokat számít, igyekszünk ezt minden projektnél a csúcsra járatni, ezt kedvelik bennünk az ügyfeleink a legjobban.

Így alakult ki a végleges funkcionalitás:

  • Hírek: ahol a csapat különböző social network bejegyzései egyben találhatóak
  • Menetrend: a közelgő közvetítéseket lehet naptár formájában követni
  • Shop: az elérhető webshop termékek listája, kollekciókba szedve
  • Inventory: együttműködésen alapuló kupon kódok valamint itt kapott helyet a Nyereményjáték sorsolás is
  • Értesítések: itt nem csak az új tartalmakról szóló értesítések kerülnek, hanem a csapat közvetlenül tud kommunikálni a követő bázissal. Ezt más platform nem biztosítja számukra.

A prototípust odaadtuk Szoboszlai Somának, aki egy olyan UI/UX-et varázsolt belőle amivel a fejlesztőink könnyen tudtak dolgozni és ami 100%-osan illeszkedett a TheVR brand-be.

Folyamat

Beleszerettünk a projektbe, imponált nekünk az egész mögötti szellemiség így felajánlottuk, hogy közösségi alapon, a TheVR nézőit is bevonva valósítjuk meg, élőben a Twitch-en. Ez egy nagyon jó kihívás volt számunkra, a nézők nagyon aktívak voltak, sok ötletet, visszajelzést kaptunk már a fejlesztés során is.
Mint minden projekt ez is alakult fejlesztés közben mert hát ahogy mondani szokták, evés közben jön meg az étvágy.

Tudtuk, hogy a rendszer hatalmas terhelést fog kapni a megjelenés után közvetlenül. A HappyHour alatt megemlített weboldalak rendre leálltak az egyidejű, több ezer látogatótól. Nem szerettük volna, hogy ez velünk is megtörténjen, úgyhogy arra méreteztük a projektet, hogy ha az összes TheVR követő közel egyszerre értesül az app elérhetőségéről, akkor se okozzon számunkra kellemetlen perceket. Aki ismeri a TheVR közösséget tudhatja, hogy ez több százezer közel egyidejű felhasználót is jelenthet. Ahhoz, hogy egy ilyen nagy teherbírású rendszert építsünk, szükség van olyan átfogó szakértelemre, amelyet mély technikai tudás és a modern technológiák ötvözésének segítségével lehet csak megugrani.

Tervezés alatt már készültünk a magas terhelésre, a dinamikusan változó forgalomra, skálázhatóságra. Szerencsére ebben segítséget kaptunk a SysCops csapatától, akikkel már több sikeres közös projektünk is volt a közelmúltban.

Kihívások

A legnagyobb kihívást az egyenetlen, kiugró felhasználás jelentette. A rendszer egy új kommunikációs csatorna amin keresztül a csapat képes kommunikálni a követőkkel. Felmértük, hogy mennyi konkurens felhasználóra kell számítanunk és hogy mennyi erőforrásra lesz szükség a zökkenőmentes kiszolgáláshoz. Összesítve több mint 3M követője van a csapatnak így a terhelést nem lett volna
érdemes félvállról venni.

Ha létrejön egy új Twitter bejegyzés vagy feltöltenek egy új videót a rendszer azonnal értesíti a felhasználókat akik nagy része (több ezer egyidejű látogató) egyből megnyitja az alkalmazást. Az idő nagy részében viszont minimális a felhasználás (pár száz egyidejű látogató) ami a rendszer töredékét veszi igénybe.
Már önmagában az értesítések kiküldése valós időben, ekkora felhasználószámnál nem teljesen triviális. Nem az első projektünk ahol ezt meg kell valósítanunk, így már kellő tapasztalattal vágtunk bele az implementációba.

Számunkra fontos az, hogy az ügyfelek hatékonyan költsék el az IT projektre szánt keretet, így egy olyan skálázható és hatékony infrastruktúrát raktunk össze ami képes dinamikusan, a terhelés függvényében skálázódni.  A technológiákat megválasztásánál ez is szempont volt. A szervereket az Amazon felhő szolgáltatásaiban futtatjuk, microservice architektúrán. Ehhez Kubernetes orchestration rendszert és Docker konténerizációt használunk, ezek jelenleg a legelterjedtebb megoldások a piacon.

Úgy terveztük a rendszert, hogy már tudtuk előre milyen adatokat fogunk cache-elni, igyekeztünk kihasználni a gyorsítótár nyújtotta előnyöket, amiben egy Redis szerver segített nekünk.
Az adatokat MongoDB-ben tároljuk, ami szintén egy robosztus, jól skálázható
adatbázis kezelő rendszer, egyértelmű volt a választás.
10 év tapasztalatunk van natív mobil alkalmazás fejlesztésben, végigkísértük az
Android és iOS operációs rendszerek fejlődését. Az évek alatt folyamatosan követtük az új technológiai irányokat, a platformok változásait. Szerettük volna ha ez a profizmus érződne az alkalmazáson így kifejezetten nagy gondossággal álltunk neki a fejlesztésnek.

Élesítés

Az élesítést az egyik reggeli HappyHour-re ütemeztük, élő adásban lett elérhető az Android és iOS alkalmazás. A tudatos tervezés és tapasztalatnak hála a rendszer bírta a terhelést és nem okozott gondok az egyidejű ~10.000 felhasználó sem.
Rengeteg visszajelzést, köszönetnyílvánítást és gratulációt kaptunk, a közösség nagyon hálás volt a munkáért amit beletettünk.
Arra viszont nem gondoltunk, hogy az indulás napján az Apple AppStore-ban és a Google Play mobil áruházakban első helyre kerülünk az Ingyenes kategóriában Magyarországon.

Olyan népszerű alkalmazásokat köröztünk le mint a BudapestGO, MySpar, Vinted vagy az aznap induló SkyShowtime aki elég erős kampánnyal lépett a magyar piacra.
Ez természetesen a közösség érdeme, de jó érzés volt részese lenni és kiszolgálni ezt a nagyon nagy érdeklődést.
A Play és az App Store áruházakban több ezer visszajelzésből 5★-ra értékelték a felhasználók az alkalmazásokat.