2007 körül az USA-ban töltöttem egy félévet cserediák program keretében. Itt első kézből láttam, hogy mennyire sikeresek a Facebook alkalmazások. Pár diák egy Stanfordi kurzus keretében 10 hét alatt épített Facebook appokat - amik aztán a platform legsikeresebbjei lettek. Pár hónappal később több millió dollárért adták el pár, itt épített appot - nem rossz megtérülés ennyi munkáért!
2009 elején az iWiW - a Facebookot követve - szintén megnyitotta a maga alkalmazásboltját. Én pedig kapva kaptam az alkalmon, és a stanfordi diákokhoz hasonlóan szintén 10 hét alatt összedobtam 2 appot, amiket aztán több, mint 1 millió iWiWes felhasználó - durván minden negyedik iWiWes - használt. A siker receptje? Megnéztem, hogy mi és miért sikeres a Facebookon, és a sikeres appokhoz hasonló témájú appokat fejlesztettem. Nem mellesleg pedig, az elsők között voltam ott az alkalmazásbolt indulásakor.
Inspiráció 20 perc alatt: milyen appokat használnak az emberek a Facebookon?
Amikor az iWiW beharangozta az alkalmazásokat, a Facebookot ezek már javában elárasztották: több, mint 50,000-ből lehetett választani. Akkoriban az emberek Facebook hírfolyamán az alkalmazások jelentették a bejegyzések jó részét.
Elég gyorsan eldöntöttem, hogy nagyon is jó lehetőség van az appokban, tekintve, hogy ekkor az iWiW - még - piacvezető volt Magyarországon 4 millió felhasználóval. A Facebook ekkor itthon még jóval kevésbé volt ismert. A kérdés csak az volt: milyen appokat fejlesszek, amiket gyorsan el tudok készíteni, és sikeresek lehetnek? Nem filóztam sokat: egyszerűen csak megnéztem a Facebook alkalmazás top 20-as listáját és kiválasztottam pár jó jelöltet. Ekkoriban a top 10-as Facebook alkalmazás lista - a játékokat nem számítva - így nézett ki:
- FunWall - üzenőfal extrákkal
- SuperWall - üzenőfal extrákkal
- Top Friends - randi
- Are You Interested? - randi
- Movies - filmek
- Pieces of Flair - üzenőfal extrákkal
- Zoosk - randi
- iLike - zenehallgatás
- SuperPoke - üzenőfal extrákkal
- Sparkey - randi
A 10 legnépszerűbb appból 4 üzenőfal, 4 randi, és 1-1 film-, és zenealkalmazás volt. Gyorsan végiggondoltam, melyik appokat lenne a legegyszerűbb lefejleszteni. A legjobb időbefektetésnek a zenehallható app és az üzenőfal tűnt. Mivel szívesen hallgattam volna én is zenét az iWiW-en, ezért elsőre egy egyszerű zenehallgató app fejlesztése mellett döntöttem, és így kezdődött a Zene Doboz kódolása.
A Facebook napi 1 milliárd felhasználóval megkerülhetetlen a weben és a mobilon. Minden változtatás, amit behoznak, hatalmas lehetőséget jelent a gyorsan mozdulóknak. Eddig 4 igazán nagy újdonságot vezettek be, amiből a gyorsan reagálók nagyon sokat profitálhattak.
1. 2007 - App aranyláz. 2007 májusában a Facebook bejelentette, hogy bárki fejleszthet appokat a platformra. Ekkor 50 millió, főleg amerikai felhasználójuk volt. A korai fejlesztőkből és tech cégekből, akiknek az appjai az első pár hónapban kijöttek, sokan jól jártak. A Send Hotness egyetemi hallható fejlesztője több, mint $100,000-ért adta el a pár hónap alatt fejlesztett appját. A cégek közül a RockYou és a Slide saját fejlesztésekkel és felvásárlásokkal a legnagyobb app fejlesztőkké váltak, az appjaikat több tíz millió ember használta naponta. 2010-ben a Slide-ot a Google $182M-ért vásárolta fel. Az appok pár éven belül lecsengtek - ahogy a Facebook folyamatosan változtatta (és korlátozta) az appok terjedési lehetőségeit.
2. 2009 - Olcsó, célzott reklámblokkok. 2009-ben a Facebook a Google-höz hasonlóan megnyitotta reklámozási lehetőséget bárki előtt, a jobb oldali hasábban. Sok e-commerce cég hamar felismerte, hogy a Facebookon nagyon olcsón tudnak vásárlókat szerezni ezeken a hirdetéseken keresztül - például mert városra és célcsoportra rendkívül hatékonyan lehetett hirdetni. Többek között a Groupon és más e-commerce startupok ezzel a stratégiával is szereztek több tízmillió felhasználót, nagyon gyorsan, viszonylag kevés költéssel. Körülbelül 2 évig tartott az olcsó(bb) reklámok ideje, azóta ez a csatorna nagyon megdrágult.
3. 2013 - Külső linkek a hírfolyamban. 2013-ban indult a harmadik aranyláz a külső linkek megjelenésével a hírfolyamban. Ekkoriban a Facebooknál komoly veszélynek látták a Twittert - és egy hirtelen változtatással sokkal több ember hírfolyamában jelenítették meg a Facebookon kívülre mutató linkeket. Az oldalak, akik gyorsan és hatékonyan reagáltak, hatalmasat nőttek. Ezt a változtatást használta ki több oldal nagyon ügyesen, mint a BuzzFeed (ami ma közel $1B-t ér) vagy az Upworthy.
4. 2016 - Chatbotok. A Facebook a napokban jelentette be, hogy a Messengeren belül megnyitja a bot platformját a fejlesztők előtt. Azok, akik gyorsan és ügyesen lépnek, megint csak rengeteg felhasználót érhetnek el a Messenger 900 millió használója közül.
Zene Doboz: egy YouTube playlist alkalmazás
A Zene Dobozhoz az inspirációt a Facebookos iLike alkalmazás adta. Elég egyértelmű volt, hogy az emberek szeretnek zenét hallgatni a Facebookon, illetve a profiljukra a kedvenc zenéiket megosztani.
Az iWiW appok fejlesztéséhez a Google OpenSocial HTML
és Javascript
alapú keretrendszert kellett használni. Az Opensocial a Facebook app APIjához hasonló: a felhasználókról egy guid
-ot ad vissza, amely ID-val lekérhetjük a profil információkat, ismerősöket és hírfolyam bejegyzéseket generálhatunk. Amit egy Facebook appban meg lehet csinálni, azt OpenSocialban is meg lehet - csak a HTML / JS interfészt kell összerakni, és egy backendet dobni mögé, ami az adatokat tárolja.
Esténként pár hét alatt összedobtam egy egyszerű appot, ahol a Youtube-on lehetett zenéket keresni, a profilhoz menteni, és ezeket lejátszani. A backendhez - a dalok meta információnak a tárolásához - egy PHP
szervert lőttem be, MySQL
adatbázissal. A backend rém egyszerű volt: egy nagy táblában tárolta a user ID-t, a youtube video ID-ját, meg pár metaadatot (pl a videó előnézeti képét). Az app egy kis CSS után pedig így nézett ki:
A Zene Doboz az alkalmazásplatform indulásakor egyből a top 3 appba került. Az első 6 hónapban naponta 3-4 ezer ember használta az appot, amitől elég boldog voltam. 6 hónap után viszont az iWiW elkezdte megjeleníteni a telepített alkalmazásokat az emberek profil oldalai alatt... na, ekkor egyik napról a másikra 10x annyian kezdték el használni az appot, én meg csak kapkodtam a fejem:
Itt volt az a pont, amikor az alkalmazás igazán beindult és 2010 végére 650e ember telepítette, és napi 50e-n használták az appot. Illetve itt jött el az a pont, amikor a shared hosting MySQL szerverem feladta a harcot, és az egész backendet portoltam Google App Engine-re, ahol onnantól boldogan muzsikált. Én pedig baromi gyorsan (1 hét alatt) megtanultam a Python
-t, mivel az App Engine csak ezt a nyelvet támogatta akkoriban. Mindenképpen az App Engine-t akartam használni, mivel 2010-ben még a legolcsóbb PaaS cloud hosting volt a piacon - azóta sajnos már rendesen megdrágították.
A Zene Doboz eleinte a MediaTemple shared hostingján futott, egy MySQL
adatbázison, teljesen default beállításokkal. Ez napi 5 ezer userig (kevesebb, mint 5req/sec-ig) teljesen jól ment. Aztán januárban, amikor Franciaországban sítáboroztam a haverokkal, egyik reggel kb 100 email fogadott, amiben kedvesen, illetve kevésbé kedvesen reklamáltak a felhasználók, hogy meghalt a Zene Doboz. Ugyanis a 10x-es loadnál az adatbázis indexe korruptálódott, és onnantól nem lehetett se olvasni, se írni.
Mivel a táborban nem volt nálam számítógép, a netkávézó gépéről remote beloggoltam a szerverre, hogy megpróbáljam életre lehelni az adatbázist. Mint kiderült, a default MySQL engine, a MyIsam
nagyon is érzékeny az index korruptálódására, amit egy REPAIR TABLE
parancs futtatásával általában meg lehet javítani. Na, ez a parancs 1 óra alatt lefutott, és a Zene Doboz ismét működött.
Pár nappal később pedig ugyanez a hiba ismét előjött - és utána majdnem minden nap korruptálódott az adatbázis index. Úgyhogy a sítábor után nekiláttam rendbe tenni az az adatbázist. Előbb InnoDB
engine-re váltottam, majd a FathomDB skálázható MySQL backendet használtam. Sajnos még így is folyton gond volt az adatbázis eléréssel, főleg az esti időszakban, amikor a legtöbben használták az appot. Végül fogtam magam, és az egészet portoltam a Google App Engine-re. A GAE automatikusan fel-, illetve leskálázta a backend alatt futó gépeket, hogy mindig elég gyors maradjon a rendszer. Ez a lépés végül megoldotta minden gondomat - leszámítva, amikor az App Engine leállt több órára, persze :)
Szuper Üzenőfal: üzenőfal képekkel, és csillogással
Amikor 2009 áprilisában elindultak az iWiW appok, a Zene Doboz pedig az egyik legnépszerűbb alkalmazássá vált, furcsamód egyetlen üzenőfal típusú app sem szerepelt köztük. Én pedig visszanéztem a legnépszerűbb Facebookos appok listáját:
A Facebookon a 10 legnépszerűbb appból 4 üzenőfal, 4 randi és 1-1 film- és zenealkalmazás
Ha más nem vette észre ezt a lehetőséget, úgy döntöttem, én azért megragadom :)
Az összes Facebook-os üzenőfal appnak az értelmét az adta, hogy képeket lehetett csatolni az üzenetekhez. Gyorsan összedobtam egy prototípust, ahol fel lehetett tölteni képeket, és azok az üzenetek mellett megjelentek. Ugyanúgy, ahogy a Zene Doboznál, a backendhez itt is PHP
/ MySQL
stacket használtam eleinte. Pár extrát még rádobtam, mint a már feltöltött képek böngészését, Youtube videók beszúrását és legnépszerűbb képek listáját... és 2 hónap alatt kész is lett az alkalmazás.
A publikálás előtt még egy apró extrát fejlesztettem: a fejembe vettem, hogy a képekre spéci hatásokat is rakhassanak az emberek. Olyan hatásokat, mint képkeret generálás, fekete-fehérre átváltás és csillámhatás vagy havazás (a kép gif-é alakításával). Ehhez az ImageMagick könyvtár PHP wrapperét használtam. A PHP-vel integrálás elég döcögős volt, de pár nap kísérletezés után bármilyen jpegből és png-ből egy tucat különböző hatású képet tudtam generálni. Mint utólag kiderült, a csillám gif effect messze a legnépszerűbb lett, minden 5. feltöltött képre ez a hatás került:
Az appot 6 hónap alatt 450e ember telepítette, és naponta 30e-en használták - újévkor pedig közel 120e-n.
Ahogy a Zene Doboznál, itt sem bírta egy shared hosting MySQL
szerver a terhelést, és itt is menet közben átírtam a backendet Python
-ra és átmigráltam a Google App engine-re, ahol már az újévi, sokszoros terhelés sem jelentett gondot.
Az iWiW (és az app aranyláz) vége
Ahogy a Facebook összes aranyláza, az iWiW app aranyláz is véget ért egyszer. A Zene Doboz és a Szuper Üzenőfal esetén érdekes módon, különböző ok miatt esett vissza jelentősen a napi felhasználóik száma.
2010 közepe táján a Facebook már elkezdte lehagyni az iwiwet a felhasználói aktivitás tekintetében. Az iWiW úgy döntött, előremenekül egy nagy redesign-al. Ennek a redesign-nak a részeként az alkalmazás dobozok eltűntek az emberek profil oldalairól. Mint kiderült, ez a változtatás hatalmas csapás volt a Zene Doboznak, amit nagyon sokan csak a profil oldalakról hallgattak:
A Szuper Üzenőfalat a redesign viszont szinte nem is érintette - érdekes módon a redesign után a felhasználók száma még nőtt is. A Szuper Üzenőfal végét az iWiW látogatószámának a lassú, de folyamatos az esése végezte be. Az iWiW bezárása előtt kevesebb, mint ezer ember használta naponta ezt az appot:
Amit az iWiWes aranylázból tanultam
Ahogy a legtöbb aranyláz - iPhone appok, Facebook alkalmazások - az iWiWes app aranylázat is csak nagyon kevesen látták előre, és még kevesebben használták ki. Összesen kevesebb, mint 500 appot fejlesztettek, amiből csak kb 20 ért el több, mint 100,000 telepítést.
Az én appjaim ezen appok körül is a legjobbak között voltak használat tekintetében. És mit jelentett ez forintokban? A backend hosting nem volt ingyen, én ezt a költséget pedig ezt hirdetésekkel finanszíroztam - az iWiW az ETarget hirdetéseket engedélyezte az app fejlesztőknek. Papíron jó bevételem jött a hirdetésekből: havonta, forgalomtól függően kb 10,000 - 380,000Ft. Viszont ebből jóval kevesebb maradt a zsebemben, mivel a backend költségek is magasak voltak: a Google App Engine-ért havi $60-800-at fizettem - minél többen használták az appokat, annál többet. Összességében pénzügyileg nem nyertem sokat az appokból - de annál többet tanultam arról, hogy hogyan kell a backendet optimalizálni, amikor a Google hirtelen az ötszörösére emeli az árakat.
Az appokat két ok miatt migráltam a Google App Engine-re. Egyrészt, az automatikus skálázással a GAE megoldotta, hogy az appok mindig - akár iszonyatos nagy terhelés mellett is - szépen muzsikáljanak. Másrészt pedig 2010-ben brutálisan olcsó volt: majdnem olcsóbb, mint az AWS. Csak a felhasznált CPU és a tárolt adat után kellett fizetni: mennél többet használtál, annál többet. Nekem ez szuperül működött: ugyanis nagy látogatottságnál sok hirdetési bevételem volt. A GAE költsége kb a hirdetési bevétel fele volt: egy átlagos hónapban a Zene Doboz $60, a Szuper Üzenőfal pedig $120-ba került. A reklámbevételem meg 100-150,000Ft volt.
Aztán 2011 végén, a semmiből a Google új árazást vezetett be, 30 napot adva a reagálásra. Hirtelen masszívan veszteségesek lettek az appjaim. Az új árazásban minden adatbázis olvasást és írást is kiszámláztak: a Zene Doboz számlája havi $60-rol $240-re, a Szuper Üzenőfal pedig $120-ról $900-ra ment fel. Az igazán inkorrekt dolog az volt, hogy külön számlázták minden egyes index írását is: vagyis ha egy sort updateltem a táblámban, aminek 3 indexe volt, az 4 írásnak minősült. Hozzám hasonlóan sok másik ember is reklamált, és többen ott is hagyták az App Engine-t.
Én viszont összeszorítottam a fogam, és 2 hónap alatt kioptimalizáltam a kódom, hogy minél kevesebbet fizessek. A végén sikerült levinnem havi $50-ra a Zene Doboz, és $160-ra a Szuper Üzenőfal költségét (a Szuper Üzenőfal jóval drágábbra jött ki, mert ott minden elküldött üzenethez több sort kellett írnom a táblába, minden címzettnek - és az emberek szerencsére sok üzenetet küldtek.). Ettől a drágítástól kezdve már alig hozott nyereséget az app - főleg, hogy ezzel egy időben elkezdődött az iWiW hanyatlása is.
Ami igazán nagy tanulás és tanulság volt számomra, az egy hardcore, élőben egy 1 millió embert kiszolgáló backend építése volt. Konkrétan látni, hogy mennyire nehéz percenként 500-1000 requestet kiszolgálni egy MySQL szerveren, illetve hogy egy működő rendszert hogyan portoljak hosted service-ről Google App Engine-re - na, ez hatalmas tanulás volt. És a saját bőrön tanulást nem helyettesíti sok minden - én konkrétan ezen a projekten tanultam meg adatbázist exportálni saját szkripptel fájlba, Python
-t programozni, meg úgy igazán elmélyülni a SQL
és NoSQL
mélységeiben (mint indexek, lockolás és korruptálódás).
Az aranylázak - mint az iPhone app aranyláz, Facebook app aranyláz - remek lehetőség nekünk, fejlesztőknek, valami újat és érdekeset fejleszteni. Ha elég korán beszállsz az aranylázba, csak nyerhetsz: tapasztalatot, referenciát, valódi felhasználókat - és kis szerencsével pénzügyileg is nyereséges lehet a befektetés.
És ugyan az iWiWes app aranyláz (és az iWiW is) véget ért, most is egy új aranyláz elején vagyunk. A Chatbot aranyláz még csak most kezdődik, ahol a legtöbb chatbot fejlesztő a Facebook új chatbot platformjára fókuszál. Emellett ugyanakkor több, kisebb platform - mint a Kik, a Skype, vagy Telegram - is ugyanúgy megnyitotta az API-jait. Ha egyvalamit tanácsolhatok: ha kihagytad az iPhone, Facebook, vagy iWiW aranylázakat, és tudsz programozni, akkor ide érdemes most beszállni. Ha pedig nem tudsz még kódolni... kell-e ennél jobb lehetőség megtanítani magadat, és nekiállni? Nem te lennél az első.
Zene Doboz | Szuper Üzenőfal | |
Indulás időpontja | 2009 április | 2009 december |
Összes telepítés száma | ~660,000 | ~450,000 |
App indítások száma 2011-ben | 4.5M | 8.7M |
Átlagos használat / indítás | 24 perc | 4 perc |
Hirdetés pageview-k 2011-ben | 71M | 41M |
Összes app indítás száma | 21M | 20M |
Legtöbb app indítás / nap | 55,749 (2010 dec 5) | 116,926 (2010 dec 31) |
Legtöbb app indítás / hónap | 1.27M (2010 okt) | 1.14M (2011 jan) |
Összes hirdetési bevétel az ETargeten | 2.5M Ft | 1.1M Ft |
Összes Google App Engine kiadás | $3,700 (kb 1M Ft) | $7,800 (kb 2.1M Ft) |
Legnagyobb hirdetési bevétel / hónap | 285,000Ft (2010 dec) | 99,000Ft (2010 dec) |
Legdrágább Google App Engine / hónap | $239 (2011 dec) | $963 (2012 jan) |
GAE read & write operations / hónap (2012 jan - optimalizálás előtt) |
144M read / 31M write | 162M read / 457M write |
GAE read & write operations / hónap (2012 feb - optimalizálás után) |
81M read / 9.6M write | 93M read / 168M write |
Google App Engine-ben tárolt meta adatok mérete | 66GB | 300GB |
Beérkező segítségkérő emailek száma | 998 | 1,206 |