Info Tento blog je v "read-only módu" a nový obsah již nebude přibývat. O vývoji píšu na DevBlog.

Naprogramovali byste Twitter za jedno odpoledne?

Když jsem včera utweetnul, že „Twitter je implementačně jednoduchá služba“, reakce na sebe nenechaly dlouho čekat. Vytrženo z kontextu s tím lze opravdu jen těžko souhlasit a 140 znaků kontextu bylo evidentně málo, doplním ho tedy tady.

Začnu vyřčením evidentního: Twitter je služba enormních rozměrů. Jen velmi málo z nás bude mít za celý svůj život příležitost pracovat na produktu, který každodenně používají desítky milionů uživatelů po celém světě. Projekt podobného rozsahu přináší nový problém: jak škálovat. Dělat produkt pro 1000 uživatelů je něco jiného než dělat ho pro milión – a něco jiného pro 100 milionů (tolik uživatelů ale Twitter zatím nemá). Bylo by naivní myslet si, že to, co dokážu naprogramovat za jedno odpoledne, bude ve stejné podobě fungovat pro tak velkou masu uživatelů. To umí jen DG :)

Jak jsem to tedy myslel? Co znamená „implementačně jednoduché“, když každá služba s 10m+ uživateli je z principu „implementačně obtížná“?

Myslel jsem to relativně. Zaprvé k jiným službám podobných rozměrů a zadruhé k penězům, které Twitter má.

Nejdřív k prvnímu bodu. Ačkoliv při rozsahu Twitteru už to rozhodně není úloha typu „ulož 140 znaků do databáze a pak je zase zobraz“, pořád je to práce s textem. Každý, kdo pracuje s plain textem, má velkou výhodu – text lze „levně“ ukládat, parsovat, indexovat, posílat přes síť a podobně; srovnatelné úkony pro obrázky, video nebo další binární formáty jsou daleko komplikovanější a dražší.

Rovněž algoritmicky („specifikačně“) je Twitter přímočarý, srovnáme-li ho se službami typu GMail, Google Docs nebo Facebook (jejich implementace i třeba jen pro 1000 uživatelů už je svou složitostí úplně někde jinde).

Rovněž nesouhlasím s tvrzením, že by Twitter nabízel nějaké extra zajímavé kousky nad daty, které spravuje. Aleš i Karmi zmínili vztahy mezi tweety (např. při @-reply), ale podle mě se jedná spíš o jednoduché uložení odkazu na určitý tweet (což je triviální). Oficiální klient na twitter.com ani pořádně neumí zobrazit jednoduchou konverzaci, natož třeba (smysluplný) dotaz „ukaž mi tweety, které odpovídají na tento tweet“.

Jednoduše řečeno, ano, každá masově používaná služba je těžká na správný návrh a efektivní provoz, ale v rámci množiny těchto služeb je Twitter relativně velmi jednoduchou „hračkou“. Nemám pochybnosti o tom, že tým zkušenějších vývojářů by odpovídající datové struktury a úrovně cachování navrhnul v řádu týdnů – viz například Ayendeho blog post.

Teď k penězům, což byl onen důležitý kontext v mém původním tweetu. Podle TechCrunche Twitter do dneška získal 155 milionů dolarů na investicích. Na tomto místě musím přiznat, že úplně nerozumím tomu, jak takové financování funguje, nakolik jsou tyto peníze likvidní a tak dále, nicméně budu předpokládat, že třeba 100 miliónů Twitter teoreticky může použít na financování rozvoje své služby. A nebo ne – budu předpokládat, že Twitter má/měl k dispozici 10 milionů dolarů – snad je to odhad s dostatečnou rezervou.

Takové číslo je jen číslo, než si člověk uvědomí, co se za to dá pořídit. Například skoro 10 let práce týmu deseti špičkových vývojářů (špičkový == plat 120 tisíc dolarů ročně; průměr je někde kolem 70–80 tisíc). Nebo padesát instancí EC2 předplacených na deset let dopředu. Nebo datové úložiště obřích rozměrů (ale u Twitteru jde spíše o výkon nebo o velikost úložiště). Prostě 10 milionů dolarů je fakt hodně – a to počítám výhled deseti let, zatímco Twitter existuje jen asi 3.

Když si uvědomíte, na jaké kupě peněz Twitter sedí, otázka „jednoduché implementace“ dostává znovu jiný rozměr. Mít k dispozici tým třech nadšených studentů, nebo deseti zkušených vývojářů je setsakramentský rozdíl. Když bych to měl nějak ilustrovat, sám bych patrně při implementaci Twitteru neuspěl (je to pro mě „těžký problém“), ale kdyby za mnou zítra přišel ďábel, že mi dá 150 mega v dolarech a že chce mít do tří let službu na špičkové technické úrovni, patrně bych se mu upsal. S takovým kapitálem se problém v mých očích opět stává „jednoduchým“, protože na jeho řešení můžu najmou odpovídající mozkovou kapacitu a výpočetní výkon.

A tak jsem to celé myslel :)

Zařazeno do kategorií | |
Anonymous (Po, 2009-09-28 19:31):

Bohuzel souhlasim pouze s Vasim prvnim nazorem, tedy prace na „jedno odpoledne“. Je to samozrejme slozitejsi, ale pri pouziti neceho vhodnejsiho a mene narocneho nez RoR je to trivialni sluzba a ani ty miliony uzivatelu nejsou problem, nedelaji nic jineho nez sem tam neco nekdo napise (jeden uzivatel jeden zaznam denne, v prumeru a to jeste kdo vi jestli) a pak par zobrazeni jednoduchy dotaz… je to pak o skalovatelnosti a rozlozeni zateze… Opravdu zcela nesrovnatelna luzba treba s Facebookem a dalsimi, jak i pisete. Takze 100 milonu dolaru je opravdu vyhozena castka a tesim az ta bublina kolo Facebooku a Twitteru splaskne jak mydlova bulbina… a Twitter splaskne vyrazne driv, protoze nenabizi nic co by treba Facebook nemel nebo co nevytuni do vylepsene podoby.

Vlastimil Vávrů (Po, 2009-09-28 19:45):

Mene je vice. Twitter neni konkurentem Facebooku.

Staci si precist par clanku, aby clovek zjistil jaka cilovka pouziva FB a jaka TW.

V jednoduchosti TW je jeho sila…

Vlastimil Vávrů (Po, 2009-09-28 19:36):

Borku, tento post je jenom sada bezcenných a naivních domněnek :) Neuraž se.

Praxe je úplně jiná. My děláme na projektu, kde je uživatelů 1mil a náklady na provoz takové služby jsou pořádně velké. A proti Twitteru je to trpaslíček.

Myslím, že nikdo z nás nemá ponětí o tom co provoz takové služby obnáší.

Klobouk dolů před Twitterem.

Borek (Po, 2009-09-28 20:58):

Promiň Vlasto, ale dokud nebudeš konkrétní, nemám na co reagovat. Nepodělil ses o charakter vašeho projektu, o jeho řádové náklady, s čím v článku nesouhlasíš a podobně. Když třeba píšeš, že „praxe je úplně jiná“, tak myslíš jiná než co?

Urážky si teda nevezmu osobně, když jsi mi to tak hezky přikázal :), ale věcnější komentář by pro příště nebyl k zahození. Jsem si jist, že zrovna ty bys k tématu mohl mít hodně zajímavých postřehů.

Vlastimil Vávrů (Po, 2009-09-28 22:13):

Promin Borku…

Projekt (projekty), o kterych mluvim, jsou zapzone.fr a aolchat.fr. Byl jsem soucasti tymu, ktery zajistoval implementaci a beh techto systemu. Vim, kolik penez stala jejich implementace a jejich udrzovani, rozsirovani. Je to ale soucasti obchodniho tajemstvi, takze o tom mluvit nebudu. Kazdopadne – kalkulujes jenom ceny za programatory…velmi mnoho polozek jsi vynechal – co treba takovy architekt, datazovy specialista, vedouci projektu…obroska vec jako je reklama…Urcite ne vsechny z tech penez nejsou venovany do vyvoje…ale vetsina do reklamy.

Dalsi zkusenosti z praxe – chystame se pracovat na projektu, ktery bude ma jiz zajistene financovani – z vynalozenych penez pujde jenom cca 3% na vyvoj systemu. Zbytek bude reklama…a platba za tvorbu obsahu. Vic detailu opet sdelovat nemuzu.

Rovněž algoritmicky („specifikačně“) je Twitter přímočarý, srovnáme-li ho se službami typu GMail, Google Docs nebo Facebook (jejich implementace i třeba jen pro 1000 uživatelů už je svou složitostí úplně někde jinde).

  • tady ta uvaha je opravdu vycucana z prstu :) jenom hrani s cisly.

Uplne jsi zapomnel vzit v uvahu vyvoj a provoz jejich API…ktere dnes vyuzivaji tisice externich nastroju…

Zkratka – na Tvem clanku mi vadilo, ze jsi se na to dival jenom jako programator…Spoustu veci – ktere jsem prave popsal – jsi vubec nevzal do svych kalkulaci.

Borek (Po, 2009-09-28 23:18):

Vlasto, nějak si nerozumíme. Například píšeš, že jsem opominul jejich API – a já přitom skoro o ničem jiném nemluvil (webový klient je ve srovnání se serverem trivko – vycucáno z prstu :). Rovněž ukázka toho, co si můžeš pořídit za 10m dolarů, je jen ukázka – proč za tím hledat nějakou hlubší finanční analýzu a případné díry v ní (v čem?)? Mimochodem, tvé úvahy o nákladech na reklamu nejsou pro Twitter vůbec aktuální.

Beru to prostě tak, že kdyby sis měl zítra vybrat, jestli za 10m dolarů do tři let implementuješ Twitter, Facebook nebo GDocs, neměl bys jasno. Já bych jasno měl – a to dokonce s rozdílem třídy.

Vlastimil Vávrů (Po, 2009-09-28 23:47):

Mel jsem na mysli RESTove api – http://apiwiki­.twitter.com/…o­cumentation

Proc nejsou me uvahy o reklame pro TW aktualni? Vis urcite, ze TW do ni nic neinvestuje? Resp ze TW nic neinvestuje do marketingu?

Kdybych si mel zitra vybrat, tak nebudu implementovat nic z vyjmenovanych sluzeb. Na takto polozenou otazku nedovedu odpovedet. Nejspis bych neimplementoval nic…nenavidim znovuobjevovani kol.

Peace :)

Borek (Út, 2009-09-29 00:14):

Ad API – promiň, věděl jsem, že myslíš RESTové API, jen jsem to hodil na jednu kupu se serverovou částí, protože API je jen tenkou vrstvou nad opravdovou složitostí Twitteru. Promiň, jestli tě to zmátlo, nenapsal jsem to dostatečně jasně.

Ad marketing – předtím jsi psal o nadpoloviční části peněz, na to jsem reagoval. Teď píšeš o nule, čímž zase mateš ty mě. Nikde netvrdím, že Twitter do mktg nedává vůbec nic.

Ad „to nejdůležitější“ :) – pokud nemáš aspoň soukromý názor na to, co bys jako project lead z oněch třech projektů za daných podmínek radši vybral k implementaci, asi chápu, proč ti moje úvahy nevoní. V tomto ohledu se nacházíme na opačných pólech a moc s tím nenaděláme. Třeba na otázku bude chtít odpovědět Michal.

Díky za diskuzi.

Vlastimil Vávrů (Po, 2009-09-28 22:18):

A jeste jeden komentar:

Kazdy den vznika 30 projektu se stejnou funkcnosti jako TW a 30 projektu jako FB. Tim vznika myslim je spusteno…

Co maji tyto projekty spolecneho? Vsechny propadnou do zapomneni.

A je uplne jedno kolik stal jejich vyvoj :) A urcite to bylo min nez 10mil $.

Investori nejsou blbci…nepodcenuj je. Oni dobre vedi proc do TW investovat. Cetl jsem nedavno x clanku o tom, ze bylo hodne firem, ktere chteli TW za nemale castky (x nasobne prevysujici 150mil $ koupit).

Borek (Po, 2009-09-28 23:23):

Já nic nepodceňuju, můj článek je o technické náročnosti implementace a provozu služby, ne o hodnotě firmy z pohledu investora (ačkoliv to je pro majitele Twitteru jistě ta příjemnější část :)

Michal Blaha (Po, 2009-09-28 22:01):

Ahoj borku. Mam zkusenost s vyvojem pro 1M uzivatelu (Atlas napr.) a optimalizaci hromady sluzeb/cizich serveru pro statisice.

Myslim, ze tvuj spot micha jabka s hruskama a vznika kam hromada nedorozumeni. Takze to promicham i ja v reakci :-)

  1. Vikend:

Twitter jsem v pocatecnim nadseni povazoval za prkotinu na vikend. Po hrube analyze jsem nazor zmenil. Samozrejme jsem se pohyboval v radech M useru a tisicu update/s.

Nazor, ze jde o principialne jednodussi sluzbu nez GDoc ci GMail nesdilim. Sedneme si na to nekdy s tuzkou a papirem a ukazu ti to. A nezapomen, ze Google moc hodne sluzeb resi ciste „hrubou silou“ (zjednodusuji).

BTW, muj odhad je, ze soucasny twitter je 3-ti nebo 4-ta od zacatku prepsana verze systemu. Po silenych pretizeni loni a predloni se to da dobre odhadnout.

  1. Penize

Provoz takove sluzby neni uplne levny. Od HW a konektivity, po lidi (nabrali za posledni mesice dost kvalitnich a drahych lidi)

Nezapomen, ze oni nic nevydelavaji, min 2–3 roky nebudou a zerou jen penize. Vse co dostanou, prozerou :-(.

Ja se spise divim investorum, ze do toho cpou tolik penez, protoze ty penize se jim na prijmech sluzby nevrati (rozhodne ne v obvyklem horizontu 3 let). Sazeji pouze na prodej velkemu hraci (akvizici) anebo na IPO.

V kazdem pripade, soucasne investorske vstupy do Twitteru nejsou proto, ze Twitter ty penize potrebuje (nutne), ale je to pro investory „vstupenka“ do potencionalniho toboganu.

Jinak z reakci na Twitteru (vcetne me) si nic nedelej. Twitter je dabel, nuti zkracovat a tim padem radikalizovat. Na uderny nazor tak dostanes same uderne odpovedi :-)

Borek (Po, 2009-09-28 23:39):

Ahoj Michale, po Vlastovi jsi už druhý, komu se zdá článek pomíchaný a kdovíjaký ještě. Je to tím nadpisem? V textu si totiž nejsem vědom toho, že bych byť jen naznačil, že by snad Twitter byl něčím snadným. On se mi zdá snadný jen v kontextu.

Zeptám se tě podobně jako u Vlasty: kdyby sis zítra měl vybrat, co za 10 mega do tří let implementuješ, vybral by sis GMail? Twitter? Facebook? U mě by byla odpoveď jednoznačná (a to s takovým rozdílem, že ho snad radši ani nebudu popisovat :)

Rovněž na peníze se nedívám z pohledu odkud plynou, ale když už je mám k dispozici, tak co s nimi můžu dělat. To má totiž zásadní dopad na mou schopnost danou službu dodat.

Článek je jednoduchým zasazením jednoho tweetu do kontextu, nic víc.

ady (Po, 2009-09-28 22:29):

Ja naopak souhlasim s autorem. Narocnost aplikace se neda merit poctem lidi co ji pouzivaji, muzete mit velice jednoduchou aplikaci ve stylu twitteru, kterou pouzivaji stovky milionu lidi a velice narocnou aplikaci ktera treba dava dohromady data z nekolika zdroju a provadi s nimi psi kusy, kterou ale pouziva treba jen jeden tym.

Myslim si, ze twitter je velice jednoduchy kod (ze zacatku urcite bez i na bezne platforme) a ten balik penez je v soucasne dobe investovan do cluster-like technologie a mozna nejake optimalizace, ktera driv proste potreba nebyla. Ale implementace samotneho twitteru bude opravdu na par radku.

Borek (Po, 2009-09-28 23:51):

Řádová změna počtu uživatelů může vést k nutnosti zcela nahradit starou architekturu novou (tedy kompletní přepsání, jak o tom píše Michal, což se v případě Twitteru určitě aspoň jednou stalo). Škálovatelná architektura potom určitě nebude snadná na implementaci v absolutním měřítku.

MicTech (Út, 2009-09-29 06:57):

Abych se přiznal, tak podle mě se tady také míchají jablka s hruškama.

Jedna věc je implementace a architektůra dané služby a druhá jsou uživatelé, investice, marketing, atd.

K architektůře zmíním dva odkazy

Scaling Twitter: Making Twitter 10000 Percent Faster Designing a Scalable Twitter

Ano, twitter a spousta jiných projektů, které jsou teď IN, se dá napsat za víkend/týden/měsíc, ale tyhle projekty nejsou pouze kód, ale spousty věcí kolem, pěkný příklad je StackOverflow – Code: It's Trivial

Borek (Út, 2009-09-29 08:40):

Ahoj, tohle je už několikátý komentář o tom, že článek údajně míchá věci dohromady, ale nikdo nechce poukázat na konkrétní nedostatky. Vadí ti nějaká věta? Pasáž?

Marketing, investice apod. do toho míchají ostatní, v článku mi jde čistě o technickou stránku věci, což tam je mnohokrát zmíněno. Vadí ti, že tam zmínky o marketingu chybí? Pak je to proto, že o tom článek není. Není to komplexní analýza Twitteru, jen vysvětlení toho, co pro mě znamenalo „implementačně jednoduché“ v jednom tweetu.

Chápal bych, kdybys se mnou nesouhlasil na nějaké technické úrovni (třeba že podle tvého názoru je vytvořit službu typu Twitter za 200 milionů korun utopie), ale moc nechápu, co všichni myslíte tím mícháním.

Vlastimil Vávrů (Út, 2009-09-29 10:43):

Spis nez michanim bych to nazval vytrzenim z kontextu.

Pises, ze TW je jednoduchy a dokazal bys ho naimplementovat levne… ok super…to muze byt pravda…ale taky nemusi. Vidim to jenom jako uvahu bez nejakeho hlubsiho vyznamu.

Stejne tak bych mohl reagovat ja na svem blogu clankem…napr ze si myslim, ze bych dokazal naprogramovat FB za 3mil korun…

Tyhle projekty ale nejsou o programovani. Zadny projekt neni o programovani. Ale o uzitecnosti pro uzivatele, snadnosti ovladani, o tom zda se uzivatele vraci, zda doporucuji produkt.

Spousta firem ma k dispozici 10mil dolaru ale stejne jim to nepomuze udelat neco tak uspesneho jako TW. Jsou veci, ktere penize nespasi…

David Grudl (Út, 2009-09-29 11:23):

Tak tohle už je snad projevem vyložené aktivní snahy psanému textu neporozumět :-(

Nebo jde o střet „lze/nelze“ kultur. V životě jsem neřekl klientovi „tohle nelze“ a teprve časem jsem zjistil, že asi spadám do menšiny. Lidé daleko raději hledají komplikace a vysvětlují, proč tohle fakt ale fakt nelze. Pak přijde někdo jiný, udělá to, udělá to levně a kvalitně, ale „nelzeovci“, alespoň ti skalnější, stejně dál, navzdory realitě, tvrdí, že to nelze :-)

Pravdu máte samozřejmě všichni, ale jako klient budu šťastný, když svůj projekt zadám Borkovi. On ho vyrobí – kdežto ostatní odborně vysvětlí, proč to vyrobit nelze.

Pavel Šindelka (Út, 2009-09-29 12:22):

Toto se líbí Pavel Šindelka ;)

Vlastimil Vávrů (Út, 2009-09-29 13:41):

Uhodil jsi hrebicek na hlavicku Davide.

Pokud za mnou prijde klient a chce naimplementovat naprosty nesmysl poslu ho pryc. Ty to vezmes. Super..nic proti.

Davno jsem se prestal na projekty divat z programatorskeho hlediska. Taky si myslim, ze naprogramuju ledacos…super..ale co s tim.

Klient nechce primarne naprogramovat nejaky web/program. On chce vydelavat penize. Snazim se zkusenosti ze svoji dosavadni obchodni i programatorske praxe predat klientovi. Dulezite je tam prave to slovo obchodni.

Ja nikomu nechci, jak pises, odborne vysvetlovat proc neco udelat nejde! To jsem tady nerekl.

David Grudl (Út, 2009-09-29 13:49):

Uffff…

S každým tvým odstavcem se zcela ztotožňuji, dělám a uvažuju stejně – klienti to velmi oceňují. Ale vůbec nerozumím, proč jsou napsány jako oponentura. Ať už ke mně nebo k článku, který se týká jen a čistě jen technické stránky věci.

Vlastimil Vávrů (Út, 2009-09-29 14:04):

Mne prave na tomhle clanku vadilo, ze je to jenom programatorske hledisko.

Snazil jsem se prinest dalsi aspekt k projektu jmenem Twitter.

Myslim, ze se diskuse rozjela docela zajimave.

Jeste mala omluva Borkovi – priznam se, ze jsem svuj prvni komentar psal v docela mizernym rozpolozeni…takze se za ostre vyroky omlouvam.

David Grudl (Út, 2009-09-29 14:24):

Tomu rozumím, ale s tím nevyřčeným (přesněji s tím, o čem článek vůbec není) nelze přece polemizovat. To je vůči pisateli přinejmenším nefér. Navíc se ho může dotknout, že mu podsouváš nepravdy.

Jarda Jirava (St, 2009-09-30 09:02):

Ahoj Vlasto,

to je zajímavý přístup a mohl bych s ním souhlasit.

Jenže se pak dostávám do takového bludného kruhu. Vem si, že neexistuje žádný twitter (doba tak 2–3 roky zpátky) a za tebou přijde někdo, že by si od tebe rád nechal naprogramovat službu, kde bude moci napsat 140 znaků a pošle si je na web a bude to mít dalších pár „drobností“.

Podíváš se na to z obchodního hlediska a začneš ho přesvědčovat, že tím nevydělá žádné peníze a skončíš tím, že mu to neuděláš?!

Proč, protože to nemá žádný obchodní model, nebo ty jej nevidíš?

Samozřejmě se také v některých fázích snažím myslet „za zákazníka“ a směřovat jej, případně mu sdělit svůj názor, už ale nejsem plně přesvědčen o tom, že bych jej přesvědčoval o tom, že jeho web je/bude nevýdělečný. Jiná situace by byla, kdybych to měl také platit :-)

Díky --J.

Vlastimil Vávrů (St, 2009-09-30 12:35):

Ahoj Jardo,

tak jednoduche to neni. Mluvil jsem o prikladu kdy nekdo prijde a rekne – naprogramuj mi novy Twitter.

Je to hypoteticka situace…pravde­podobne k ni nedojde.

Ja mam rad vizionare. Mam rad lidi, kteri delaji veci po svem, netradicne.

Neumim odpovedet lip…moje odpoved by byla hodne obsahla. Lepsi probrat to osobne.

Borek (Út, 2009-09-29 13:42):

OT: nemáš náhodou nějakou fintu, jak na tomhle starém Drupalím blogu sledovat komentáře? Zdá se mi totiž, že se občas vynoříš ve zcela nečekaný okamžik, až tě podezřívám, že se ti stupiditu místního enginu (a neschopnost jeho autora) podařilo nějak obejít :)

Jinak nevím, jestli bych Vlastu zařadil do „nelzeovců“ – natolik se neznáme, ale ten termín je krásný :)

Borek (Út, 2009-09-29 13:37):

Já bych spíš tvoje komentáře nazval hledáním kontextu. Nezlob se, ale tvoje věta

„Stejne tak bych mohl reagovat ja na svem blogu clankem napr ze si myslim, ze bych dokazal naprogramovat FB za 3mil korun“

vypovídá o tom, že se ti pointa článku opravdu obloukem vyhnula. Je pro mě těžké na tvoje připomínky reagovat, protože jsou často pravdivé a v mnoha věcech souhlasím – jen jaksi nereagují na můj text, jakkoliv se snažíš, aby to tak vypadalo. Tak se nezlob, že jsou moje odpovědi občas trochu bezradné.

Peter Láng (Út, 2009-09-29 12:32):

Já jen k tomu míchání ovoce, žádné jsem nezaznamenal, článek myslím celkem chápu a vidím to hodně podobně.

Za deset udělám twitter, za sto propagaci a za zbytek si můžu do smrti hrát a kasírovat další investory.

paranoiq (Út, 2009-09-29 13:40):

mimochodem, o které nevyřešené „základní problémy“ tady vlastně jde? co se vám Bořku na twitteru nezdá? (krom výpadků). sám to nemůžu posoudit. používám ho jen v read-only režimu

zkušenějších bych se rád zeptal. jaká poměrná část z investic jde podle vás u takto velkých projektů do softwarové části (analýza, vývoj, sw řešení škálování..)? nepočítaje tedy propagaci, hardware, konektivitu atd.

BB tady operuje pro příklad (vím že jde jen o záměrně podsazený nástřel) s jednou patnáctinou. i přesto někteří nechápou o čem tento článek je a řeší „celek“. hmm… :/

Borek (Út, 2009-09-29 13:52):

Hlavně stabilita (i když ta se hodně zlepšila), nedotažené konverzace, nedomyšlené DM, problémy se spamem, zdaleka ne ideální použitelnost webového klienta apod.

Podíl nákladů na vývoj proti všemu ostatnímu by mě u nějaké větší firmy taky zajímal.

Aleš Roubíček (Út, 2009-09-29 14:25):

Často to u tebe vídám, co myslíš tím problémem se spamem? Já mám vypnutý notifikace o tom, že si mě někdo, zas přidal. Mě to nezajímá to je jeho věc. V @replies občas vídám erta, kterýho nesleduju, ale to je tak vše. :)

Borek (Út, 2009-09-29 14:33):

Ano, myslím ten problém v notifikacích.

Aleš Roubíček (Út, 2009-09-29 14:37):

Pak to není problém, ale volba :)

abysser (Út, 2009-09-29 14:28):

Z programátorského hlediska je složitější než Twitter každý jeho vypiplaný klient.

Aleš Roubíček (Út, 2009-09-29 14:38):

To jseš trochu mimo. Trochu víc…

Borek (Út, 2009-09-29 14:49):

Čekal jsem, až to za mě někdo napíše, věděl jsem, že to nebude trvat dlouho :) P.S. To samé na tvou poznámku o notifikacích :)

Michal Blaha (Út, 2009-09-29 14:45):

Borku, dal jsi mi $10M a vybrat si, co delat. Zda Gmail, Twitter nebo Facebook. (rekneme, ze jinou moznost nemam).

Z hlediska „slozitosti“, komplikovanosti vidim poradi od (jednodussi->slozitejsi) takto:

  1. Gmail
  2. Twitter
  3. Facebook (dnesni stav, nikoliv 2 roky zpet).

Problem tohoto „zebricku“ je, ze kazda ze sluzeb ma zakopaneho psa jinde, problemy rustu jinde, a jsou prakticky nesrovnatelne :-(. Kazda resi jine problemy, jinak a ma jina uzka mista. Kazda dela take neco jineho. Kazda vyzaduje jinou miru „real-time“-movosti. Kazda je proste jina ;-D

Z hlediska zajimavosti to mam hozeno takto:

  1. FB
  2. Tw
  3. Gmail (je to nuda)

je to fakt na pivo, resp. vice piv.

Borek (Út, 2009-09-29 14:54):

Ne, tohle je perfektní odpověď. Sice se s prvním žebříčkem vůbec neztotožňuju, ale aspoň jsi první, kdo otevřeně řekl, že mu GMail připadá na celkovou implementaci jednodušší než Twitter. Pro mě minimálně námět k zamyšlení.

ADroid (Út, 2009-09-29 14:54):

Gmail nuda? Nebyl na mysli Squirrel Mail?

David Grudl (Út, 2009-09-29 15:47):

Konečně komentář k tématu :-)

Ale s tím Gmail vs. Twitter: Michale, viděl jsi někdy v posledních letech GMail? Neudělal jsi ve srovnání „škálované úložiště na text + REST API + jednoduchý frontend“ versus „škálované úložiště na emaily + jeden z nejvýkonnějších search engine + IMAP API + POP3 API + extra složitý generovaný frontend“ fatální botu?

Michal Blaha (Út, 2009-09-29 17:15):

Davide, neudelal. Tim, ze je kazda z tech sluzeb jina, se blbe srovnavaji. Ja jsem umyslne dal Gmail na prvni misto. Hlavnim duvodem je, ze problemy rustu jsou u GMail pomerne linearni, zatimco u Twitteru a FB jsou exponencialni. A to se resi hure.

Jinak jsem neopomenul nic z toho, co zminujes. S advanced mailem mam zkusenosti z Atlasu v mensim (IMAP, POP, uloziste, frontend (to je btw u Gmail orisek), Search (ne tak dobry) ) a i s timto vedomim jsem poradi napsal tak, jak jsem ho napsal.

David Grudl (Út, 2009-09-29 18:46):

Rozumím tomu dobře tak, že tím kritickým faktorem je exponenciální vs. lineární růst (tj. problém škálovatelnosti), přičemž v jednotlivostech je GMail složitější?

Michal Blaha (Út, 2009-09-29 22:54):

zjednodusene ano.

Exponencialni rust slozitosti/vzta­hu/transakci na narust uzivatelu oproti linearnimu rustu slozitosti na narust uzivatelu.

Me odpovedi se zacinaji exponencialne zamotavat :-D

stej (Út, 2009-09-29 16:48):

Myslim, ze by to zajimalo vice lidi. Bylo by to pekne jako prednaska na WebExpu, pokud by se tam jeste nekde vtesnala :)

ADroid (Út, 2009-09-29 14:48):

Diskuse pod clankem je fakt hodne zbytecna. Myslim, ze kazdy, kdo pochopil POINTU clanku, s nim musi souhlasit.

A jeste bych rad okomentoval vetu:

„Investori nejsou blbci…nepodcenuj je. Oni dobre vedi proc do TW investovat.“

argumentem, ze investori, kteri investovali do Sky Europe urcite taky vedeli, proc tak cini…a jak to dopadlo. Zadni blbci, ze? :)

Botanicus (Út, 2009-09-29 15:27):

„Investori nejsou blbci…nepodcenuj je. Oni dobre vedi proc do TW investovat.“

Ja si myslim ze nevi. Konecne vsechny tyhle sluzby jsou na hony vzdaleny rozumnemu vydelku (na to kolik se do nich investovalo, a riziko je obrovske). Konecne kdyz si vezmes jak obecne investovani vypada, dusledek nerozumneho investovani jsme videli velmi recentne a kdyz se podivas jakym zpusobem investuje vetsina i chytrych lidi na burze…

Anonymous (Út, 2009-09-29 14:54):

BB tu stručně a jasně uvedl stanovisko, se kterým se ztotožňuji. Někteří komentátoři chtějí ukázat, že jsou chytřejší, tak píší, že BB nevzal v úvahu hlediska, o kterých on od začátku úmyslně nepsal. Víc v tom nevidím.

ADroid (Út, 2009-09-29 14:55):

Souhlas, jde jen o ukazani toho, jak je komentator chytry, pricemz je komentovano neco, o cem clanek neni.

Aleš Roubíček (Út, 2009-09-29 15:30):

Pořád mám pocit, že spousta lidí nechápe, že Twitter, GMail, FB nejsou jentěch pár stránek.

Twitter rozhodně není jen formulářové políčko s omezením na 140 zn., které se ukládá do db.

Na GMailu jsou cool AJAXy, ale všechno je to generovaný přes GWT, navíc mnohé cool featury jsou dodávány dalšími teamy (chat, search, storage, atd).

Silně pochybuju o tom, že team, který dělá GMail, nebo GDoc, řešá infrastrukturní věci (škálovatelnost, storage, replikace po datacentrech apod.). Ale třeba se pletu, on tom vědí jen lidi z G.

PS. Proč se mi v této textaree mrší kódování? :)

Borek (Út, 2009-09-29 16:23):

Mrší kódování? Při psaní? O tom problému slyším poprvé, dal by se poslat nějaký screenshot, prosím?

Aleš Roubíček (St, 2009-09-30 11:57):

Hehe, tak problém byl v mém vysílači :)

Jan Kodera (Út, 2009-09-29 17:28):

Nepleteš. U Googlu je to tak, že když koupěj projekt, tak ho převedou na svou infrastrukturu. Což například u JotSpotu (nyní Google Sites) trvalo 1 rok od koupě do spuštění.

Google se tím chlubí rád. Oni když zlepší výkonnost BigTable o 10% tak vlastně všechny aplikace budou mít větší výkonnost.

Jan Kodera (Út, 2009-09-29 16:16):

Nesouhlasím s tím, že Google Docs jsou jednoduší.

Můžeme vyjít z toho, že Twitter i Google mají podobnou architekturů serverů. (Ono toho moc nevymyslíte jiného). Tedy každý server čte i zapisuje a nestará se o to co dělají ostatní.

U Google Docs je důležitý frontend. Pak data se uloží, proženou do Big Table a hotovo. Maximálně se uloží co nejblíže k tobě (geograficky).

To samé u Twitteru – jenže v nesrovnatelně menším časovém úseku se musí tyto data zpracovávat, částečné měnit (viz někdo začné followovat, nebo přestane). Twitter říká, že používají messaging. Já napíšu tweet a do mého profilu se zapíše okamžitě, zároveň vznikne zpráva, která se šoupne do fronty a když na ní přijde řada, tak se vykoná (pošle se followerovi apod).

Hezky je tato architektura naznačená u Facebooku a jeho občas ti vypíšu vše a občas ti nejnovější updaty nevypíšu. Prostě záleží zda tam ty data zrovna jsou, jestli ten server co obsluhuje už dostal tu zprávu. Je to divné, může se to programátorům, kteří pracují z databázemi a ACID je pro ně samozřejmost, zdát hodně nesmyslné. Bohužel jiný způsob jak zajistit vysokou dostupnost není.

Radek Hulán (Út, 2009-09-29 16:19):

Borek má pravdu. Twitter je trivialita.

Vezměte si pro srovnání třeba GlobalDAT.eu. Navrhovat (třeba) systém pro obchodování s akciemi online -JE- nesmírně složité, je potřeba se napojit na desítky různých API, postavit risk management, back-office, napojení na platební systémy, bankovní reporting, dokonale znát právní prostředí a regulaci burz a trhů, a obecně pro to celé navrhnout aplikaci, která dodává ony obchodní informace během desetin sekundy od jejich vzniku, atd.

Oproti tomuto je Twitter prkotina pro dítě z mateřské školky. Koncepce je jednoduchá, timing není realtime, a už vůbec ne kritický.

Jediná věc, která to činí složitější je „scale“. Ale i to není nic světoborného, pokud aplikace od počátku počítá s tím, že bude schopna obsloužit nejenom stovky, ale i stovky tisíc klientů v reálné, čase, tak se tak prostě píše. Nicméně toto není „core“ té aplikace. Třeba v případě GlobalDATu je to cca 5% logiky a kódu.

Třeba ono obchodování s akciemi – tam zcela kriticky záleží na dostupnosti a rychlosti. Dostat kurz akcií o 2 sekundy později je průser, jenže dostat příspěvek na web o 2 sekundy později nikoho nebolí.

Twitter -je- primitivní, mnohem složitější je naprogramovat Facebook (více funkčnosti, není ale stále požadavek na realtime), a ještě jiná úroveň je třeba ono zásadně -realtime- obchodování s akciemi. A můžeme pokračovat, extrémně složitý bude takový SW pro jadernou elektrárnu, nejen že je realtime, ale musí být navíc několikanásobně zálohován a dokonale bezchybný a vyladěný, protože tam se chyba trestá smrtí, ne odchodem klienta ke konkurenci…

Michal Blaha (Út, 2009-09-29 19:12):

„Jediná věc, která to činí složitější je „scale“. Ale i to není nic světoborného, pokud aplikace od počátku počítá s tím, že bude schopna obsloužit nejenom stovky, ale i stovky tisíc klientů v reálné, čase, tak se tak prostě píše“

Ano, to je ten „detail“, o ktery tu jde.

Architektura stejne aplikace pro 10K, 100K, 1M a 10M uzivatelu se zcela radikalne lisi. Ale to si ten, kdo nejen nepsal, ale hlavne nezazil aplikaci pro 1M+ (rekneme 50user/s+) neumi predstavit.

A jedna technicka: Tato diskuze se tykala tak nejak prirozene „web-central“ aplikaci. Otazka real-time klientu pro datove zdroje je take zajimavy problem, ale trochu jiny.

Radek Hulán (Út, 2009-09-29 22:42):

On to ale opravdu detail je, ten scaling. Pokud je potřeba napsat škálovatelnou aplikaci, prostě je nutné ji naprogramovat tak, aby s lineárním zvětšováním počtu serverů rostla lineárně její kapacita. Je potřeba psát algoritmy, které mohou běžet paralelně. A v případě Twitteru to není nic složitého.

Takto je třeba naprogramovaný GlobalDAT, a vlastní rozdělování zátěže a overhead je jen cca 5% kódu a logiky. Zbytek aplikace je stejný ať už se jedná o 100 klientů anebo 100 000 klientů.

Michal Blaha (Út, 2009-09-29 22:51):

Jojo, diky za potvrzeni, v uvahach o Twitteru jsi zatim na pocatku…, na urovni „za vikend az 2 je to napsane“.

Kolik uzivatelu obsluhuje GlobalDat? A vazby na obchodni systemy jsou z klientu primo anebo prostrednictvim GlobalDat „proxy“? At si udelam obrazek…

Oni se diskutujici, co uz nekdy delali sluzby pro M uzivatelu v teto diskuzi daji docela dobre odlisit, ale nechci byt nespravedlivy bez informaci…

Radek Hulán (Út, 2009-09-29 23:50):

Kokrétní realizace je know-how společnosti. Nicméně jakákoliv webová aplikace posílající pár stovek bajtů dat za X minut pomocí HTTP / webového serveru je směšná věc oproti tomu, jak na desítky tisíc klientských stanic dodávat v reálném čase minimálně desítky až stovky KB dat a více (pro každého klienta odlišných) -za sekundu-, 12 hodin denně nepřetržitě, Level 1 a Level 2 ceny (hloubka trhu), aktualizovat stavy portfolia, validovat, zpracovávat risk management podle těchto realtime pohybů trhu, řešit chyby komunikace.

Libovolná webová aplikace je na řádově nižší úrovni složitosti a náročnosti.

Více to nemá smysl řešit, lidi od webu něco podobného nechápou. Podobně jako já nechápu návrh jaderných elektráren ;)

Miloslav Zřídkakočan (St, 2009-09-30 18:41):

A proč pane Huláne neprogramujete korporátní finanční aplikace ? Divím se, že s takovým know-how plácáte weby za pár tisíc. Pokud zvádne naprogramovat Twitter 14 letý kluk, tak tucty webů založených na ukradeném CMSku musí dle této logiky zvádnout i 7 leté dítě. Nebo to bude tím, že jste všeobecně známý jako kašpar a tlučhuba, tudíž Vás nikdo nechce pustit k seriózní práci ?

Radek Hulán (Út, 2009-09-29 23:59):

On web a jeho technologie je taková sranda pro děti oproti realtime komunikaci a systémům :) Twitter je schopen naprogramovat 14letý inteligentní kluk, když se pořádně zamyslí a navrhne si procesy tak aby mohly běžet paralalně a před ně vrazí „load balancer“.

Aleš Roubíček (St, 2009-09-30 07:38):

:D

Jann (Út, 2009-09-29 16:39):

No on je ten postreh/clanek opravdu takovy zvlastni. Ono jak se pozna „implementacne jednoducha sluzba“? Je to ta, ktera se da naprogramovat za $100k, $1m, $10m? A za kolik je „implementacne slozita sluzba“? O tom, ze se to za jistou castku ostre mensi nez $155m naprogramovat da, toho je dukazem sam Twitter. Ale co to znamena a co z toho vyplyva? Proste vubec nic! Jenom to, ze je podobny projekt podobneho rozsahu mozne za tolik a tolik penez naprogramovat.

Takze vime, ze je to BUNO projekt rozsahu $10m – to je fakt. Ze by to za podobnou castku dokazal – technicky – zreprodukovat kdokoli jiny (dokonce levneji, protoze by se vyhnul mnoha slepym ulickam a uz to ma „predvymysleno“) – to je taky fakt. Jestli je to sluzba jednoducha/slozita, to je dle meho trochu jine hodnoceni, trochu jiny pohled – a hlavne to bude relativni, nikoli absolutni kriterium. Takze opravdu trochu jabka/hrusky.

Borek (Út, 2009-09-29 16:53):

„a hlavne to bude relativni, nikoli absolutni kriterium. Takze opravdu trochu jabka/hrusky.“

Tohle mě úplně odrovnalo, díky :))

David Grudl (Út, 2009-09-29 16:45):

Teď se mi Karmi přes jabber ptal, jestli to s tím Twitterem za půlden školení byl nebo nebyl vtip. No jasně že šlo o nadsázku! :-)

(na pořádnej twitter by bylo přeci potřeba minimálně třídenní školení)

Borek (Út, 2009-09-29 16:49):

:)

Lukáš Havrlant (Út, 2009-09-29 17:05):

Já bych jen chtěl říct, že jsem článek pochopil a souhlasím :-).

Michal Blaha (Út, 2009-09-29 17:17):

A k tomu ti gratulujeme ;-)

PS: neodolal jsem ;-)

Martin Prokeš (Út, 2009-09-29 18:16):

Teda to zírám, jakého hloupého plkání tady je. Přitom domněnky mohou jít stranou, Twitter toho o své architektuře a problémech publikoval dost. Viz např. zde: http://highsca­lability.com/tag­s/twitter

Nejdřív nastudovat pánové a pak diskutovat. Zajímalo by mě, kolik diskutujících někdy psalo projekt pro víc jak 1000 uživatelů najednou :)

Michal Blaha (Út, 2009-09-29 19:15):

Treba do cerneho!

Na odkazovanem zdroji je pekne videt, ze s postupnym rustem navstevnosti se uroven problemu presouva nize a nize a architektura aplikace se zcela meni.

Borek (Út, 2009-09-29 19:59):

Já měl odkazy na tyhle články do blog postu dát, řada lidí je sem dává jako jakousi argumentaci proti článku, ač přesně nechápu proč.

Michal Blaha (Út, 2009-09-29 22:44):

Tou trefou do cerneho to nebylo mysleno proti clanku, ale podpora kritiky diskutujicich. uz se to tu zvrhlo :-D

Martin Prokeš (St, 2009-09-30 10:21):

To přece něměla být argumentace proti článku! To je proti neplodné dikusi bez znalosti věci, kterou tu lidi předvedli. A ano, tyhle linky měly být součástí blogspotu!

Borek (St, 2009-09-30 10:36):

Promiň, tyhle linky byly výše použity jako argument proti článku, už jsem z toho byl nějaký zmatený :)

MicTech (St, 2009-09-30 11:55):

Ja jsem zminil odkazy ohledne architektury twitteru, ale ne proto, ze jsem proti tomuhle clanku (to v zadnem pripade). Zminil jsem je pouze pro zajimavost.

jakub (St, 2009-09-30 06:40):

Za článek a usilovnou snahu většiny komentátorů přivést Borka zpět ze scestí, na které se tweetem a článkem dostal všem děkuji, pobavil jsem se…

Je hezké, že Borek napsal na úvodu článku, že škálování je problematické a všichni mu tu píšete, že tomu nerozumí, protože zapomněl na to, že problém je škálování. Chápu, že všichni dělali projekty pro 1GZ+ (více než gazilion) lidí, ale naučili vás taky číst?

A nejvíc mě rozsekala reakce „projekt není o programování“, když má článek slovo „naprogramovali“ v nadpisu a je tedy zřejmě o programování :-).

Borku díky za článek, většina ostatních znovu a lépe. Howgh!

Komentáře jsou uzavřeny (blog je v read-only módu). Pokud mě chcete kontaktovat, můžete mailem.