[PHP] Zend Platform

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Om het optimale uit je server te halen, kan het volgens mij verstandig zijn om gebruik te maken van het pakket Zend Platform. Als ik alle verhalen mag geloven, dan levert het een aanzienlijke performance winst op. Het pakket is er in twee smaken: Performance Server (PS) en Enterprise Server(ES). De eerste is voornamelijk om de performance te verbeteren, de tweede is handig wanneer je een serverpark aan elkaar moet knopen.

Mijn vraag is: wie heeft ervaring met dit product? Als ik kijk naar PS dan heeft die de volgende features:

Code Acceleration
Dit lijkt mij de enige handige functie...

Dynamic Content Caching
Hoe weet hij nou wat hij moet cachen? Welke URL's? Kan ik dat zelf opgeven? Ik bouw zelf wel een cache in de vorm van xml files die lokaal mbv xslt getransformeerd worden. Kan iemand mij uitleggen in welke gevallen dit ding handig is?

Client Side Caching
Wauw, hij stuurt zomaar de juiste header automatisch mee! 8)7 "Zend Platform's caching and download functions automatically insert the required content expiration HTTP headers to enable this functionality transparently"

Output Compression
Heb ik het fout of doet mijn apache webserver ook niet gewoon output compressie?

Kortom ik heb het idee dat je nogal wat features krijgt die in mindere mate handig zijn. Wat zijn jullie ervaringen met dit pakket? Weet iemand ook toevallig wat het kost? Ze zijn namelijk niet erg happig met het vermelden van prijs informatie.

Acties:
  • 0 Henk 'm!

Verwijderd

Bij PS moet je vooral even naar de 'PHP Intelligence' funktie kijken. Dat lijkt een soort logfile van phpfouten, maar het kan een paar dingen die een logfile niet kan. Zo laat ie bijv. dezelfde fout maar 1 keer zien, met een getal erbij hoe vaak hij voorkomt (handiger dan 10.000 regels in je logfile :)).
En hij bewaart de context van de fout, oftewel alle get, cookie, sessie variabelen e.d. zodat je beter kunt zien waarom iets fout gaat. Als je Zend Studio hebt, kun je ook meteen van Zend Platform uit op 'debug' klikken bij een fout, en start ie gelijk de debugger op de juiste plek.

Dan even puntje voor puntje de items die je noemt:

Code Acceleration
Dat is een beetje een basisfeature. Scheelt een keer of 2/3 aan performance ten opzichte van een kale PHP. Vergelijkbaar met bijv. APC. Bovengenoemde php intelligence vind ik persoonlijke een sterkere feature dan de acceleration.

Dynamic Content Caching
Deze komt in 2 varianten. De meest eenvoudige is een interface waar je zonder je code aan te passen kunt aangeven dat je bepaalde scripts wil cachen. Je kunt daarbij instellen dat hij naar het url moet kijken om te bepalen wat er apart gecached wordt, zodat bijv product.php?id=1 en product.php?id=3 netjes hun eigen cache krijgen. Behalve de url kun je hem ook naar andere dingen laten kijken zoals server variabelen of zelfs de sessie (cachen per gebruiker).

Client Side Caching
Dit is inderdaad niet zo spannend. :) maar soms wel handig als je er in je code niet zelf op hoeft te letten.

Output Compression
Inderdaad exact hetzelfde als Apache qua functionaliteit, maar een behoorlijk verschil in hoe het werkt. Apache comprimeert (zipt) je content iedere keer dat je script is uitgevoerd. Als je ZP gebruikt, en je gebruikt ook caching, dan comprimeert hij het voordat het de cache in gaat. Dan hoef je het niet elke request opnieuw te comprimeren en daardoor is het sneller.

Wat de prijs betreft: die is van diverse factoren afhankelijk, bijv. hoeveel servers je hebt, hoeveel processors per server, hoeveel support je wil, of je het voor productie of development wil gebruiken, hoe lang je een licentie wil etc. Als je het contactformuliertje invult bij Zend dan neemt iemand contact met je op om dat soort dingen met je door te nemen.

(disclaimer: Ik werk bij Ibuildings, we vertegenwoordigen Zend in Nederland, dus ik ben bevooroordeeld ;-))

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dank je voor je reactie! Het geeft me wat beter inzicht. 't Komt op mij over dat de performance server voornamelijk gebaseerd is op een cache. Zoals bij alle software die gestandaardiseerd is voor bepaalde doeleinden, geldt dat zoiets ten koste gaat van de flexibiliteit.
Wij werken aan een spel waarbij zo'n 18 spelers in een competitie tegen elkaar spelen waarbij vele honderden competities parrallel lopen. 's Nachts worden wedstrijden gesimuleerd. De meeste requests zijn op data die redelijk statisch is. Het wedstrijdoverzicht verandert niet, de tussenstand hoeft slechts dagelijks bijgewerkt te worden. De eigenschappen van de spelers in de teams veranderen minder dan dat ze opgevraagd worden.
Om de performance hoog te houden bouwen we van alle data een XML cache op. Het schema van de uitslag kan bv door 18 spelers in 1 competitie gedeeld worden. De tussenstand kan door alle spelers gedeeld worden. Op de tussenstand wil je bijvoorbeeld bepaalde views weergeven op basis van dezelfde informatie. In combinatie met XSLT werkt dat perfect.
Mijn vraag is dan, in hoeverre hebben wij zo'n Performance Server nog nodig, als we zelf een geavanceerde cache bouwen die zo min mogelijk database communicatie bewerkstelligt en zo veel mogelijk client side transformeert en afhandelt. Zend Platform lijkt me handig wanneer je een corporate website hebt met veel bezoekers en informatie die lekker statisch is.
Elders had ik al gevonden dat de goedkoopste variant ten minste 1495 dollar per jaar kost. Hier in Nederland zal je er dan wel euro's voor mogen neertellen. Voor dat zelfde bedrag huur ik een jaar een server bij redunix. Kortom; de besparing moet minstens 1 server bedragen, wil zoiets kostenbesparend zijn.

Acties:
  • 0 Henk 'm!

Verwijderd

Ik geloof dat de 'vanaf' prijs iets van 900 euro is. Voor je xml cache moet je eens naar de 'partial caching api' kijken. Dit is een setje extra php funkties dat wordt toegevoegd als je ZP installeert. Je kunt daarmee stukjes data cachen. Werkt aardig snel.

Voor het deel dat je 's nachts uitvoert zou je nog naar de Job Queue kunnen kijken, maar dat is wel iets van de enterprise edition. Soort 'cron on steroids'.

En als je zelf vanalles bouwt heb je minder nodig, alleen moet je je afvragen of je dat soort dingen allemaal zelf moet willen bouwen. Die serverhuur is marginaal; de kosten voor het zelf bouwen en onderhouden van oplossingen is vele malen hoger.

Zend noemt ZP een 'infrastructuur product'. Oftewel het lost een heleboel dingen op waar mensen tegenaan lopen als ze met PHP bezig zijn. Traditioneel was iedereen dezelfde wielen aan het uitvinden. Het motto van zend is: laat dat soort dingen aan ZP over, zodat je je kunt concentreren op je applicatie zelf.

Dat is zo ongeveer de insteek.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
't probleem is dat niet alles volledig te cachen valt. Sommige delen van een request zijn slechts partieel te cachen. In zo'n geval moet je gewoon zelf een oplossing ontwikkelen. Voor een Quad Core processor betaal je toch een aanzienlijk bedrag. Voor dat zelfde geld huur ik 18 maanden een extra Quad Core server.
Wanneer je maximale performance wil, dan moet je toch toe naar een eigen custom oplossing. Het product wat Zend levert is in mijn ogen absoluut een topproduct, daar niet van. Het is alleen zo dat ik slechts geinteresseerd ben in een oplossing die alleen het Code Acceleration voor zijn rekening neemt. Als Zend zo'n product zou aanbieden, zou ik in de rij staan om het te gebruiken. Het is alleen onderdeel van een groter pakket waarvan ik mij afvraag in hoeverre dat een daadwerkelijke performance winst oplevert. Investeren in dit soort technologie kost ook tijd, en het bijpluggen van hardware is relatief goedkoop.
Wanneer we een tijd live draaien ben ik best bereid om het product eens te evalueren om te bekijken of het de investering waard is. Voor nu ben ik echter terughoudend.