( janoszen | 2014. 05. 13., k – 18:07 )

Ez az appszerveres megoldas ordit arrol, hogy nem csinaltatok meg nagy rendszert PHP-val, sem programozoi, sem pedig rendszergazdai oldalrol. Amivel semmi baj nincs, de adnek nehany tanacsot:

- Az NFS-t surgosen felejtsd el. Egyreszt vannak ennel jobb megoldasok, masreszt az NFS bizonyos korulmenyek kozott ugy ossze tud borulni alattad (foleg nem megfelelo config eseten), hogy hard reset kell a fele gepparknak.

- Ha ne adj isten valamelyik szervereden van FTP daemon, akkor attol erdemes mihamarabb megvalni, az a technologia annyi sebbol verzik, hogy nem igaz.

- Ismerkedj meg a deployment mufajaval. Ha sokat valtozik a kod, arra nem az NFS a megoldas, hanem az, hogy a deployment folyamat szepen kirakja az osszes szerverre a kodot a verziokoveto rendszerbol, amit remelhetoleg hasznaltok. Ha nem, akkor itt az ideje megismerkedni vele. Capistrano, Phing, Jenkins, stb. toolok sokat segitenek.

- A felhasznaloi adatokat erdemes kulon helyen tarolni, nem ott, ahol a kod van. Lehet tobb fele megoldast nezegetni, ezek alatt akar lehet is NFS, de inkabb valami S3-klon filerendszer/webservice, ami gondoskodik a fajlok redundanciajarol. Vagy csinalsz egy darab "usercontent" szervert, ahova az upload-ok mennek, a linkeles meg megy az adatbazisban a feltolteskor felvett rekord alapjan.

- A lockolas nem egyszeru kerdes, de egesz biztosan nem file szinten oldanam meg. Plane nem, ahogy Te irtad, spin lock-kal, mert konyorog erte, hogy berohadjon. Helyette inkabb epitsetek mondjuk MySQL alapon egy tablat amire lehet SELECT...FOR UPDATE muvelettel lockot kerni. Ennek az az elonye, hogy ha lerohad a kapcsolat, atuomatikusan elengedi a lockot.

- A gepeidre ismerkedj meg a konfiguracio menedzsment temakorevel PXE boot helyett. Puppet, Chef, barmi lehet, de legyenek egysegesek a gepeid.

- mail fuggveny helyett SwiftMailer es belso halozaton logo SMTP szerver.

- Az ora problemara hasznalj NTP-t.

- A frontend NGINX tud az upstream modullal tudtommal backend checkeket futtatni.

- A DB engine megvalasztasakor azt tartsd szem elott, hogy melyiket konnyebb karban tartani. Ha a MySQL-t strict modban futtatod, eleg sokat nyersz a hasznalhatosag teren es nem kovetsz el olyan hanyagsagokat, amik problemakhoz vezethetnek. Hogy mainline MySQL vagy MariaDB, esetleg Percona... ezek olyan dolgok, amikkel intenziven kell foglalkozni, es szinte biztos, hogy elso korben nem eri meg a plusz munkat a nem mainline megoldas, lesz dolgod amugy is eleg.

- Monitorozasra Nagios, Icinga, Monit, Munin es a rakas masik szoftver ami keszen van. Guglizz, talalsz eleget. Termeszetesen config management rendszerbol felhuzva.

- Tavoli gyors kikapcsolasra nem az eloszto a megoldas, hanem a tisztesseges gep, illetve az abban levo tavmenedzsment kartya, plane hogy a "meghalt" nem egy binaris allapot, eleg sok csunyasag tud ott keletkezni. Mar egesz olcso konfiguraciokban is kaphato, pl a Supermicronak vannak ilyenjei, de a HP mikroszerver is egesz jo cucc (az mas kerdes, hogy szinte mindegyikre lehet anyazni). Ha nincs penz rendes gepet venni, akkor bereljetek.

- Privat switch helyett a szolgaltatotol kerjetek privat VLAN-t, jobban jartok vele. Ha nem tud adni, akkor gyorsan kezdjetek el szaladni.

- A PHP legjobban tapasztalatom szerint PHP-FPM + nginx + FastCGI uzemmodban erzi magat. Az Apache-ot keruld el messzirol ha performance a cel.

- Legyen napra kesz, tesztelt biztonsagi mentesed.

- Vegezetul: szerintem nagyon tultervezted magad. Ha soha nem csinaltal meg cluster architekturat, ne akarj egybol 10 gepet vasarolni, hanem vegyel mondjuk 2-t. Az egyikre tedd a DB szervert, a masikra az appot es kesz. Igeny szerint kell boviteni, nulla vagy nullahoz kozeli tapasztalattal, meresi eredmenyek nelkul, a netrol osszevadaszva a technologiakat szinte biztos, hogy befurdesz a projekttel. Esetleg bereljetek fel valakit, aki latott mar bonyolultabb (PHPs) architekturat, hogy nezze at az alkalmazasotokat es adjon tippet az optimalizalasra, esetleg tervezze meg nektek az uj architekturat. Sokkal olcsobb lesz, mint ami penzt kidobtok a gepekre feleslegesen. En szoktam ilyen tanacsadast csinalni, ha erdekel, nagyon szivesen beszelgetek veled egy orat privatban Skype-on hogy tisztabban lass a kerdesben.

Remelem sikerult mindenre valaszolni. :)