Milan Kryl

Kryl Blog - RSS

Pod pokličkou gigamailu Centra I

12. 05. 2005 - 08:20

Exkluzivní pohled pod pokličku gigabajtového e-mailu portálu Centrum.cz. Dozvíte se něco o architektuře původního e-mailu a o změnách, které byly nutné pro spuštění gigabajtové verze a celkové posunutí e-mailu Centra zas o kus dál.

Architektura původního emailu

Nejprve tedy o architektuře původního e-mailu. Ta byla, pokud se dobře pamatuji, navržena někdy na jaře 2001. Systém se skládal z řady uzlů (nodů), kde každý z těchto uzlů měl na starosti množinu uživatelů a obsluhoval prakticky vše, co s nimi bylo spojené. Ukládal data o uživateli (nastavení, hlavičky mailů a další osobní informace) do SQL, ukládal jeho maily, přijímal pro něj poštu, poskytoval WWW a POP3 rozhraní...

Tento systém nebyl špatný, umožňoval docela dobrou škálovatelnost (přidáváním dalších uzlů) a vyvažování (přesuny uživatelů mezi uzly). Trochu problém byl ale se spolehlivostí - stroje byly poměrně zatížené a tak občas na některém nastaly problémy s krátkodobou nedostupností. Sice to postihlo jen ty uživatele, kteří na daném stroji měli účet, ale stejně jsme s tím nebyli spokojeni. Rovněž ukládání informací o mailech do SQL dělalo určité problémy - SQL je obecný databázový nástroj a neumí využít specifika ukládání mailů pro zvýšení výkonu.

Gigabajtová mánie

Splnit přání uživatelů a dát jim gigabajtovou schránku by bylo možné i s tehdejší technologií. Centrum v té době umožňovalo rozšířit schránku až na 100 MB. Stačilo tento limit zvednout na 1 GB a měli bychom během několika minut "první gigabajtový mail v Čechách" už před rokem.

Nicméně bylo rozhodnuto postavit úplně novou generaci e-mailu se vším všudy - tedy především nové rozhraní na novém principu (JavaScript aplikace), prohledávání těl mailů, různé možnosti náhledu zpráv a jako bonus schránku o velikosti 1 GB. V souvislosti s tím bylo rozhodnuto i o kompletním předělání backendu, jednak kvůli podpoře některých nových funkcí, a také kvůli řešení problémů se starou architekturou.

Kromě problémů vypsaných výše by totiž po nějaké době, až by uživatelé zaplnily svoje velké schránky, nastaly ještě další. Starý systém používal SCSI disky a ty jsou poměrně drahé (oproti IDE). Rovněž zálohování mailů na SAN, tak jak bylo vyřešeno ve starém systému, by pro velké objemy dat bylo problematické.

Architektura gigabajtového emailu Centrum.cz

Z výše uvedených důvodů jsme se rozhodli, že systém má být co nejvíce redundantní (včetně redundantního uložení dat) a má obsahovat co nejméně jednotlivých bodů, na nichž by závisela funkčnost celého systému (single point of failure).

Celkové blokové schéma nového systému je zobrazeno na obrázku:

Schéma architektury emailu Centrum.cz

Jak vidíte, SQL databáze nám v návrhu zůstala, její úloha se ale zredukovala na ukládání nastavení a osobních dat uživatele.

Důležitou komponentou je databáze uživatelů. Ta pro každého uživatele spravuje informaci, na kterých počítačích jsou uložena jeho data. Zde jsme využili mírně upraveného, léty prověřeného autentikačního serveru, který už od počátku Centra obstarává autentikaci všech uživatelů.

WWW rozhraní bylo přepsáno zcela od základu. Je založeno na tom, že stránky pro uživatele generuje javascriptová aplikace na základě dat, která si stáhne ze serveru. Tím je možné, aby se chování internetové aplikace alespoň trochu přiblížilo chování desktopových aplikací.

Pozitivem je rovněž menší objem dat přenášených v průběhu práce. Negativem jsou pak problémy s kompatibilitou v různých prohlížečích. I přes několikaměsíční testování se po spuštění verze do ostrého provozu ještě pár problémů objevilo.

Odesílání a příjem pošty

Jako SMTP server používáme námi upravený Zmailer, stejně jako u starého mailu, jen byla použita jeho novější verze a vlastní doručování bylo zcela přepsáno, takže je nyní znatelně rychlejší. Mimochodem, v rámci projektu "smtpserver pro gigamail" byla napsána i verze doručování do starého mailu a byla nasazena v lednu, právě kvůli zrychlení doručování. Stejně tak antispam byl kompletně přepsán a nasazen zhruba v půlce ledna i do staré verze mailu.

Naopak POP3 serveru se změna skoro nedotkla, jen v něm byly přepsány rutiny pro komunikaci s databází mailu. I když - tyto rutiny tvoří značnou část jeho kódu, takže se dá říci, že vlastně zhruba z třetiny přepsán byl :-)

Všechny popsané komponenty (a nově napsaný multipop) jsou v nové verzi univerzální - mohou obsluhovat libovolného uživatele. Proto není problém přidávat počítače s nimi podle potřeby (škálovatelnost) a jednotlivé instance se vzájemně zálohují. Pokud například vypadne jeden smtpserver, tak se prostě bude doručovat přes další.

V pondělí se budeme věnovat srdci celého systému - redundantní databázi mailů.

Autor: Michal Kára
 

Tip: Krátké zprávy a zajímavosti (rychlý přístup https://kryl.info/kratce)

Související