ugrás a tartalomhoz

Building Scalable Web Sites

Hojtsy Gábor · 2006. Aug. 17. (Cs), 14.35

Szerző:

Cal Henderson

Kiadó:

O'Reilly

2006

ISBN:

0-596-10235-6

Oldalak száma:

348

Értékelés:

8

Linkek

Érdekes, hogy éppen miközben olvastam ezt a könyvet, a TWiT.tv podcast hálózaton megjelent egy interjú, melyben Rasmus Lerdorf arról beszél, hogy azért nem találunk a PHP skálázhatóságáról sok forrást, mert a PHP-nek nincs ilyen problémája. Szerzőnk, Cal Handerson is a skálázhatóság kérdésével szembesült a Flickr kifejlesztésekor, és valóban nem a PHP okozott számára problémát.

Közismert, hogy a Flickr PHP és MySQL alapokon működik, és mivel a könyv mottója The Flickr Way, ezért nem meglepő, hogy a könyvben főleg PHP és MySQL tippeket kapunk, legalábbis amikor szóba kerül a használt nyelv vagy adatbázis. Valamilyen okból a PHP mellett Perl megoldásokra is felhívja Cal a figyelmet.

A mottóból következőleg azt gondolnánk, hogy a könyv áráért a szerző feltárja előttünk a Flickr skálázhatóságának minden titkát. Ez csak részben teljesül. Egyrészt érdemes megjegyezni, hogy minden speciális alkalmazás saját skálázhatósági szempontokat és módszereket igényel, így csak a Flickr speciális megoldásainak ismertetése nem lenne túl érdekes az átlagos olvasó számára, másrészt pedig vannak alaposan bejáratott megoldások ezen a területen. Cal pedig nem győzi ismételgetni, hogy ha már van egy jól működő kész megoldás, akkor próbáljuk meg azt alkalmazni. Ez vezette őt a PHP-MySQL (sőt tulajdonképpen az egész LAMP csoport) használatához is.

Sokszor tehát nem derül ki, hogy a Flickr pontosan milyen megoldásokat használ, számomra például nem egyértelmű, hogy milyen sablonozási megoldást használnak, vagy hogyan érik el, hogy a felület több nyelven is elérhető legyen. Ezeken a területeken kifejezetten kevés információt kapunk. Felmerülhet persze a kérdés, hogy mit keresnének ezek egyáltalán egy skálázhatóságról szóló könyvben!? Nos a kiadványnak valójában tizenegyből csak három fejezete szól ténylegesen a skálázhatóságról, a fogalmat is csak a 203. oldalon vezeti be a szerző. Ha ennek tudatában vesszük meg a könyvet, akkor a többi része sem lesz felesleges számunkra, bár valóban szerencsésebb lett volna egy találóbb címet keresni.

A könyv egyértelműen a haladó webfejlesztőket célozza meg. Szerzőnk a könyv elején a többrétegű webalkalmazás modellt ismerteti, változáskövető rendszereket mutat be, teszt és éles szerverek összehangolását, webalkalmazások verzióinak megjelentetését tárgyalja. Komoly szerepet kap az UTF-8 kezelés a Unicode kódolások részletes ismertetésével, és különböző web környezetekben való használatával. A bevitt adatok érvényesség ellenőrzése ennek kapcsán és emellett is külön fejezetet kapott. A legfurcsább talán az email fogadásról szóló fejezet, melyben a csatolmányokkal érkező levelek feldolgozásának nyűgjeit izgulhatjuk végig a szerzővel. Ez nyilván a Flickr képfeltöltések tapasztalataiból merít, bár egy átlagos webalkalmazásban valószínű kisebb szerepe lesz.

Közelebb érve a skálázhatóságról szóló szakaszhoz szembetűnik a könyv legfontosabb alapvetése, mely szerint a webalkalmazást teljes egészében a hálózati összeköttetésre használt vezetékektől a HTTP feletti protokollokig át kell(ene) látnunk. Már a bevezető részben felhívja szerzőnk erre a figyelmet:

It's probably a mistake to think about hardware in too much isolation from the software you design, leaving the nuts and bolts of it to system administrators or site operations stuff. From the start of your application design, you'll want to work closely with the person managing your hardware, or even take on that role yourself.

Ennek szellemében a skálázhatóság kapcsán olyan mélységeket ismerhetünk meg, mint az Ethernet CSMA/CD ütközésfeloldása által okozott problémák, elszeparált hálózatok létrehozásának előnyei, folyamat és memóriakezelés, processzorok számának növelése és így tovább. Itt a PHP már valóban csak egy aprócska láncszem, aminek csak előnyös tulajdonságai vannak a skálázhatóság szempontjából. Cal is a Rasmus által a fenti podcastban emlegetett shared nothing architektúrát emeli ki, abban a két oldalban, amit a PHP skálázhatóságának szentel. Sokkal nagyobb hangsúlyt kap a redundancia (fájlrendszer szinten is), a hálózat kialakítása terhelés megosztáshoz, gyorstárazás; a MySQL skálázhatósága replikációval, adatbázis partícionálással és különböző táblakezelő motorokkal. Az így bemutatott architektúrákhoz illeszkedő mérési és kritikus pont figyelési módszereket is kapunk, segítve az erőfeszítéseink hatásának ellenőrzését.

Végül mintegy levezetésként az alkalmazásunk népszerűségét elősegítő programozói felületek széles skáláját mutajta be a szerző, kedvet adva RSS, Atom, mobil, XML-RPC, SOAP vagy éppen REST alapú felületek kialakításához.

Általánosságban elmondható, hogy a könyv madártávlatból tekint a legtöbb felmerülő problémára. Nem titkolt szándéka, hogy tájékoztasson a lehetőségekről, és inspirációt adjon. Ebben a kiadványban nem egyszerű lemásolható megoldásokat találni konkrét problémákra, viszont gyakran felbukkan az Implementing this is left as an exercise for the reader fordulat. Akik jobban kedvelnek egy kézben is elférő, ám hasznos információkkal teletűzdelt könyvet, mely nem fecsérli a festéket az apró részletekre, azoknak könnyen beválhat ez a könyv.
 
1

Skálázhatóság?

Tome · 2006. Aug. 17. (Cs), 19.52
Pontosan mit takar a skálázhatóság, mint fogalom a (web)fejlesztésben?
2

Cal szerint

Hojtsy Gábor · 2006. Aug. 17. (Cs), 20.22
  • The system can accomodate increased usage.
  • The system can accomodate an increased dataset.
  • The system is maintainable.

Azaz a rendszer növekvő terhelést és növekvő adathalmazt is tudjon kezelni, és karbantartható legyen a rendszerünk. Cal szerint. Az első kettő nyilván üzemeltetési szempontból vett, az utolsó pedig fejlesztési szempontból vett skálázhatóság.