Architektura aplikací v Seznam.cz Vlastimil Pečínka
www.seznam.cz www.seznam.cz
…… najdu tam, najdu tam,coconeznám neznám !
Úvodní axiomy •
•
•
•
Email na Seznamu měl v minulosti provozní potíže a zcela jistě je bude mít i v budoucnu Je zřejmý rozdíl mezi fulltextem Seznamu a konkurence, z podstaty věci ten rozdíl bude vždy To, co děláme v technickém oddělení, není nejlepší ani nejoptimálnější, je to však prověřené, sebemotivující, a ne každý to umí Ivo Lukačovič prodává tak maximálně svoje Sony Vaio
www.seznam.cz
… najdu tam, co neznám !
Seznam jako technologická firma •
•
• •
Říkáme si tak, ačkoliv nevyrábíme a nedodáváme technologie na trh Vyrábíme, provozujeme a vylepšujeme technologie (aplikace, přístupy, frameworky, …) pro provoz vlastních služeb Vyrábíme to, co „nejde koupit“ IT je pro nás konkurenční výhoda (viz. The Red Shift Theory; Greg Papadopoulos)
www.seznam.cz
… najdu tam, co neznám !
Seznam jako technologická firma • • • • • • • •
Emailový cluster Internetové fulltextové hledání Mobilní služby: WapProxy, MobileDetect CDN (Content Delivery Network) Mapy.cz Krabicový fulltext ELSA Jednoduchý master-master replikovaný FS Metaserver, webpublisher, a další…
www.seznam.cz
… najdu tam, co neznám !
Approach & tools • • • • • • • •
3-vrstvá architektura: frontend, backend, storage Middleware: FastRPC, XML-RPC Frontend: vlastní web-publisher Backend: vlastní meta-server Storage: MySQL nebo proprietární řešení SQLWrapper: škálovatelnost a failover pro DB SeznamFS: jednoduchý master-master mirroring Dualita služeb: paralelní provoz ze 2 datacenter
www.seznam.cz
… najdu tam, co neznám !
3-vrstvá architektura
www.seznam.cz
•
Obecná architektura
•
V jedné lokalitě
•
Kooperující služby
•
Middleware
•
Loadbalancing
•
Škálovatelnost
•
Failover
… najdu tam, co neznám !
3-vrstvá architektura
Backend „ebox“ Backendy Backend „ubox“ a „sbox“ „frog“ Backend Frontend „tvprogram“ „homepage userweb“ www.seznam.cz
… najdu tam, co neznám !
3-vrstvá architektura
Homepage, webmail, novinky.cz, sport.cz,…
ubox, sbox, ebox, frog, tvprogram, …
www.seznam.cz
… najdu tam, co neznám !
Duální provoz
www.seznam.cz
… najdu tam, co neznám !
DNS balancing & failover
www.seznam.cz
… najdu tam, co neznám !
Backendy - metaserver • •
Kostra pro tvorbu backendů Umí pouze – – –
•
Načíst a parsovat konfiguraci Inicializovat síťová rozhraní a předávat data skrze něj Process management (fork / kill)
Rozšiřitelný s pomocí vlastních nebo generických modulů –
www.seznam.cz
generický modul podporuje komunikační protokol a možnost psát logiku v „libovolném“ jazyce
… najdu tam, co neznám !
Backendy - metaserver config
init
co re generi handl cký er
process
program www.seznam.cz
… najdu tam, co neznám !
Frontendy - webpublisher •
•
Nadstavba mod_python pro tvorbu webovek v jazyce Python pod serverem Apache HTTP Od roku 2005 z důvodů – – – – – –
www.seznam.cz
vylepšený „dispatching requestů“ globální konfigurace (výkon, přístupnost) „check request“ objekt inteligentní odchycování výjimek implicitní metoda a jiné…
… najdu tam, co neznám !
Replikace MySQL
Failover?
•
Latence?
•
Výkon?
•
www.seznam.cz
… najdu tam, co neznám !
SeznamFS •
•
•
•
Jednoduchý zrcadlený filesystém postavený nad FUSE (Filesystem in Userspace) – netřeba kernel hrátek Je to FS, není nutné předělávat aplikace (vlastní I/ O knihovna, apod.) Výkon: R/O operace lze přímo z hostitelského filesystému, minimální síťový overhead Neřeší konflikty na souborovém systému, musí vyřešit aplikace
www.seznam.cz
… najdu tam, co neznám !
SeznamFS Inspirace u MySQL • Binární log změn • Master-master/slave •„Block based“ změny •
Aplika ce
Sezna FS mFS (ext3, xfs, …) Harddisk
www.seznam.cz
Aplika ce
Sezna FS mFS (ext3, xfs, …) Harddisk
… najdu tam, co neznám !
Co (empiricky) funguje • • • • • •
3-vrstvá architektura (kooperující prostředí) Pragmatický přístup (SeznamFS) Opensource (vždy je na čem stavět, inspirace) Dělení kompetencí (vývojář vs. administrátor) Práce s timeouty (chybové hlášení lepší než nic) Širší portfolio služeb (širší záběr know-how)
www.seznam.cz
… najdu tam, co neznám !
Co (empiricky) nefunguje •
Akademický přístup –
•
Komplikovaný přístup – –
•
mnoho vah, které nelze nikdy optimálně nastavit mnoho nepotřebné funkčnosti
Outsourcing obecně (je-li pro vás IT výhodou) –
•
„normální formy“ u DB pravidelně obcházeny
zejména pokud si na vás někdo know-how získává
„To nemůže nastat“ přístup –
www.seznam.cz
Teorie velkých čísel a objemů => nastane to
… najdu tam, co neznám !
Poděkování & odkazy •
Seznam Opensource – –
•
Seznam blog –
•
http://seznam.sblog.cz
Mod_python –
•
http://opensource.seznam.cz FastRPC, Teng, SeznamFS, JAK, …
http://www.modpython.org
MySQL replikace –
www.seznam.cz
dokumentace na http://dev.mysql.com/doc/
… najdu tam, co neznám !