Työn alla olisi php+js+mysql tehty mobiiliohjelma ja testikäytössä se jo pyöriikin amazonin ec2:ssa.
Nykyisin taitaa olla muotia node.js:t sun muut mutta kysymys kuuluu että miten "perus" php+js+mysql - appiksen pystyy tekemään skaalautuvaksi niin että sitä voi pyörittää useassa palvelimessa /=instanssissa yhtä aikaa jos käyttäjämäärä kasvaakin rajusti ?
Ei mitenkään. Siksi php:tä ei käytetäkään sellaisissa sovelluksissa. Sovelluksia voi optimoida hirveän monella eri tavalla käyttämällä välimuisteja kymmenessä eri kerroksessa. Ei se softa siitä silti mihinkään "skaalaudu". Tosin nyt on tämä Facebookin julkaisema hiphop-virtuaalikone eli hhvm ilmeisesti siinä vaiheessa, että sitä voi alkaa testailla omien järjestelmiensä kanssa. Sen pitäisi parantaa php:n suorituskykyä moninkertaisesti. Se siis korvaa kokonaan vakion php-tulkin.
Sopiva ratkaisu riippuu sovelluksen luonteesta ja siitä, mitä ”useassa palvelimessa” käytännössä sinulle tarkoittaa.
Ja siis kyllähän php-sovelluksia voi ajaa useassa rinnakkaisessa instanssissa ja niin varmasti kaikki palvelimet tekevät oletuksenakin. Se ei kuitenkaan itsessään anna kummoisia lupauksia sovelluksen skaalautumisesta.
The Alchemist kirjoitti:
Ei mitenkään. Siksi php:tä ei käytetäkään sellaisissa sovelluksissa.
Ihan mielenkiinnosta, mikälaisia ratkaisuja olisi tähän tarjolla jos kieli-/alustavalinta olisi jokin toinen?
Itselläni tulee tähän kysymykseen ratkaisuksi mieleen lähinnä erilaiset load balancing-menetelmät (http://en.wikipedia.org/wiki/Load_balancing_
Ennen hajautettujen ratkaisuiden käyttöä kävisin kyllä läpi huolella kaikki perinteisemmät menetelmät kuten koodin ja palvelinohjelmien optimoinnin, tietokannan eriyttämisen toiselle palvelimelle ja jo mainitut välimuistit yms. Ja sitten vielä lisää rautaa siihen yhteen pönttöön ennekuin alkaa useampia hankkimaan.
Huolehdi että ohjelmasi on stateless. Sessiot lyöt kantaan (tai keksiin jos mahdollista) jne.
nginx + PHP-FPM kombo on varmaankin se mistä kannattaa lähteä liikkeelle.
Tietokannan skaalaus on sitten oma operaationsa tuohon päälle, mutta stateless toiminta on koko homman lähtökohta. Se on se asian ydin miten PHP tai mikä tahansa muu webbiohjelma skaalautuu.
Itseäni kyllä sinänsä kiinnostaa jo se, että minkä ihmeen takia Facebook on halunnut pistää paukkuja johonkin PHP:n kiihdyttämiseen, kun esim. javalla sais tehtyä paljon nopeampaa serverisoftaa ihan suoraan ilman sen kummempia kikkailuja.
Kuulemma php-koodareita – myös koodaustaitoisia – löytää työmarkkinoilta helpommin.
Voi toki olla, mutta siinä onkin työ etsiä niitä hyviä koodareita kaikkien onnettomien räpeltäjien joukosta.
Triton kirjoitti:
Voi toki olla, mutta siinä onkin työ etsiä niitä hyviä koodareita kaikkien onnettomien räpeltäjien joukosta.
No eiköhän Facebookilla ole varaa palkata vaikka useampikin tyyppi etsimään ja testaamaan.
The Alchemist kirjoitti:
Ei mitenkään. Siksi php:tä ei käytetäkään sellaisissa sovelluksissa. Sovelluksia voi optimoida hirveän monella eri tavalla käyttämällä välimuisteja kymmenessä eri kerroksessa. Ei se softa siitä silti mihinkään "skaalaudu".
Ettei juhauta saa väärää kuvaa, niin tämän The Alchemistin kommentin korjaan.
PHP-sovelluksia voi skaalata (horisontaalisesti) vaikka kuinka ja paljon, ja tämä on juuri ohjelmakoodista ja arkkitehtuurista kiinni.
Kakutus jne. toki ovat nekin avainasemassa, mutta nimenomaan se on se PHP-koodi joka suunnitellaan skaalautumaan. Mm. asiat mitä aiemmin mainitsin, ja esmes tietokantaoperaatiot ovat avainkohtia (kuinka luet/kirjoitat kantaklusteriin - ja vaikka kantaklusteria ei vielä olisikaan, ohjelma on hyvä suunnitella niin että tietokantainstansseja tulevaisuudessa saatetaan ottaa käyttöön enemmän kuin yksi).
Skaalaaminen horisontaalisesti on kuitenkin ainoa mahdollinen vaihtoehto (sen tietyn pisteen jälkeen kun et enää ainakaan järkevästi voi rautaa pumpata).
tätä siis tarkoitin! en osannut oikeaa termiä käyttää.
eli load balancing. vaikea ymmärtää että miten voisi yhdestä urlista tulla ja mennä dataa esim 3 eri serverille ilman ristiriitoja ja jopa niin että hyötyä vielä jää.
haluaisinkin ottaa tämän huomioon jo nyt, tietokanta- ym. toimintoja koodatessa ettei mene koko pas.. uusiksi myöhemmin
Katsoin youtubesta nginx + PHP-FPM videon ja tuo oli selvästi se mitä hain.
Nyt pitäisi vain opiskella että miten sitä php-appista pitää muuttaa.
Esim. jos on cookiessa tallennettu käyttäjän kirjautumistieto niin tarvitseehan sekin session-tiedoston serveripäässä toimiakseen (ainakin apachessa)
Sä voit tehdä myös oman istuntojärjestelmän ja viedä istuntotiedot kantaan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.