Problem neni postavit system na "skalovatelnych resenich". Problem je, ze cena za pouziti botnetu je o nekolik radu mensi nez cena reseni, ktere DDoS utoku toho botnetu odola.
Napriklad, kdyz postavite Vase reseni na nejake poradne CDN (treba Akamai), tak ta je sice utok vetsiny botnetu absorbovat, lec dostanete pomerne slusnou fakturku, ktera ucini DoS Vasemu elektronickemu podnikani (a to i pres to, ze panove z Akamai budou vstricni).
Jinymi slovy - v ceskem prostredi je nakladove efektivnejsi obetovat se skripejicimi zuby jeden, dva dny podnikani a vyresit to s ISPkem tim, ze blackholujete zahranici.
Z Vaseho prispevku je videt, ze nevite ani za mak, o cem mluvite. Ani celkem nechapu, v cem pomuze HA reseni - jako ze jeden polozeny server prebere IP a necha se take polozit ? Nebo se rozbalancuje provoz na vice stroju a polozi se jich vic (je fuk jestli stroju nebo sluzeb) ?
Ehm, hrušky, jablka a pneumatiky z traktoru na jedný hromadě? Jak souvisí Java s nginx a typem databáze? A když využiju cache, tak nějak výrazně záleží na tom, v čem běží původní aplikace? Třeba se pletu, ale na mě Váš příspěvek působí tak, že jste si kopl do javy a pochválil se, jaký ovládáte moderní technologie :-)
Z toho si nic nedělej – to jsou lidi, kteří si kdysi spustili nějakou desktopovou aplikaci v Javě, přišlo jim, že to pomalu startuje, a tak od té doby všude říkají, že Java je pomalá… To bych vůbec neřešil, je to jejich problém, já bych je v tom bludu klidně nechal :-)
BTW: nedávno jsem dělal s jednou aplikací v Perlu – těšil jsem se, že to bude „pár nenáročných skriptíků“ – ale ono to sežralo 300 MB (skutečně zabraná paměť) a ani odezva nebyla nijak zázračná.
Nic na tom není, RAM je levná, nemá cenu řešit nějakých tři sta mega – vypadá to že s rostoucím počtem uživatelů spotřeba moc neroste a je více méně fixní. A odezva sice není nějaká blesková, ale stále je to použitelné a funkce vyhovují, takže OK, budu to používat dál. Ale přijde mi úsměvné, když někdo kope do Javy, jak je nenažraná a pomalá, když jinde je to mnohdy ještě horší (znám podobně komplexní aplikace v Javě s daleko menší spotřebou a lepší odezvou).
To je asi jako kdybych jakozto IT support bral mesicne od SBS firem 200t Kc a drzel jim 24h support se 4h fix timem. Ano, bude to pro ne lepsi, ale platit mi to nebudou, protoze i v tom pripade je jednodussi a levnejsi drzet si tunu zaloznich pocitacu.
Proc bych treba jako majitel eshopu s desitkami objednavek denne mel resit, nota bene PLATIT HA reseni?
A jen pro zajimavost, napriklad web Dellu nebo Myspace je komplet .NET reseni:
http://weblogs.asp.net/scottgu/archive/2006/03/25/Handling-1.5-Billion-Page-Views-Per-Day-Using-ASP.NET-2.0.aspx
Tak pokud dokazete bezpecne a rychle (tedy bez buffer-overflow chyb, neuvolnovani pameti, chyb s pointerovou aritmetikou) napsat a otestovat kod v C/C++ stejne jako v .NET/Jave, pak jste asi genialni :-)
Pokud ne, tak srovnavate nesrovnatelne. Je totiz naprosto jedno, jestli neco potrebuje 4 nebo 8 GB pameti. Neni uz ale vubec jedno, ze to 2x za mesic spadne nebo provede neco co nema. To se samozrejme tyka aplikaci "kde o neco skutecne jde", zpravidla o penize :-)
Zmatlat nejakou socialni sit v PHP, to asi dokaze kazdy. Kdyz to nejede, nic se ve skutecnosti nedeje ...
"dokonce se mě někdo snažil přesvědčit že JAVA je rychlejší než C. (možná i než assembler :-))"
Tak samozrejme ze enterprise aplikace pomoci .NETu ci Javy na tom bude vyrazne lepe. Ne vsak kvuli nejakemu primitivnimu srovnani vykonu kodu s for cyklem v jednom threadu, ale predevsim kvuli zazemi (knihovnam) ktere nabizi. Zkratka pokud mate farmu s desitkami serveru a potrebujete ulohu distribuovat, tak aby se tento hardware optimalne vyuzil, je vam "rychlost" kodu pracne napsana v assembleru nebo C na prd :-)
V každým jazyku se dá udělat ta samá věc špatně a dobře. To, že je java pomalá na serveru podle mě rozhodně neplatí. Jasně že primitivní stránka co vytáhne pár řádek z DB bude rychlejší v PHP. Ale v okamžiku, kdy z toho vznikne velká a dospělá aplikace, s mrakama knihoven, cachováním, řadou vývojářů, bude se to všechno dělat líp v Javě. Podle mě je prostě problém v tom, že se porovnává jednoduchoučká stránka v PHP a obří systém v Javě a z toho se dělají závěry. A když se porovnávají odpovídající kusy kódu, tak se to shodí s tím, že to není reálný použití a je to nevypovídající.
jablka, hrušky, všechno jedno…
Java (i ten .NET) můžou být za nginxem (javovský AS obvykle bývá, nevím, jak .NET), můžou používat memcahe (nebo něco lepšího), můžou ukládat do libovolné databáze (relační, nosql, jakákoli).
Moc nechápu smysl tvého komentáře – asi sis jen potřeboval kopnout do nějakých neoblíbených technologií a zmínit nějaké módní termíny…
To, že nevidíte rozdíl mezi pádem aplikace na přetečení paměti, nebo na neošetřené výjimce znamená, že akorát nemáte dost zkušeností abyste srovnal vývoj většího projektu v C++ vs .NET/JAVA
Ta druhá věc se totiž u dobře vedeného týmu stává výrazně méně často a když už se to stane, tak většinou okamžitě víte kde a proč je problém. Zatímco v případě přetečení paměti začíná dlouhé hledání, kde to vlastně utíká.
To nemělo patřit dohromady, původně jsem to psal za sebou.
Tudíž nejdříve jablka a pak hrušky nikoliv vše dohromady.
Pod tím teoreticky může být JAVA. Já používám PHP nebo C (ani to není o modernosti, ale o tom že to funguje a funguje to zatraceně rychle oproti JAVĚ)
Bohužel mám i pár věcí v JAVĚ a to je opravdu smutný kino, když na kravinu potřebuju šíleně výkoný železo - když by stačila 80486ka.
asi jsem na internetu nic "obřího" neviděl. většina těch větších věcí je v PHP nebo C (podle toho kolik kdo má peněz).
menší hráči používají .NET nebo JAVU (na vývoj je to jednoznačně levnější)
monolitické systémy s mraky knihoven se stejně už moc nepoužívají všechno je SOA takže tam samozřejmě JAVA může bejt dolepená jako subsystém (sám to tak mám - minimálně několik aplikací v JAVĚ).
Jenže je blbý že tyhle syntetický testy nic neříkají.
Většina jazyků je beztak programovaná v C/C++ dokonce se mě někdo snažil přesvědčit že JAVA je rychlejší než C. (možná i než assembler :-))
Nevím jak tenhle test, ale mnohdy je to nějaká jednoduchá úloha třeba matematická (tam jsou rozdíly nepatrné už z principu věci - k čemu mi je test kousku SW který reálně nic nedělá?).
Já pokud začnu měřit reálně spotřebu RAM,CPU odezvu tak JAVA propadne.
PHP bez nakešovaného byte-códu se bude taky plazit.
Porovnával jsem i aplikace původně v C přepsané později do JAVA (no byl jsem vyděšenej - to co původně zabíralo 10kB mělo najednou 500kB žralo to 50x víc RAMky, latence tak dvojnásobný a dělalo to naprosto stejnou věc) - to je pro mě klíčové. Syntetický test je mi k ničemu.
Takže amatéři si neumí nastavit high availability řešení a teď kolem sebe budou kopat rozdáváním trestních oznámení?
To mi přijde jako pořádný nesmysl!
Jak může někdo po ucpané zahraniční lince DDoSnout český server? Odbavit pár set megabitů nemůže být pro správně nastavené řešení žádný problém.
Chápu, že zákazníkům se špatně přiznává vlastní neschopnost, ale ohánět se na policii seznamem IP adres pár chudáků se zavirovaným počítačem je dost divné.
Měli by se místo toho chytit za nos a správně si své řešení nadimenzovat na těch 9000 naštvaných zákazníků.