New Caching / Web server Squiz stack for enterprise client


(Rwahyudi) #1

Hi, 

 

Can someone please explain the reasoning behind the requirements for squiz stack v5 ?

 

I think squiz have taken the right path for postgres, redis, opcache, but I have questions about the web server and caching. 

 

I'm still sitting on the fence in regards to php-fpm as I find that mod_php is faster than php-fpm in processing request and you don't have to spawn additional daemon.

If the caching server is configured properly and you have high static assets max-age then the webserver will be left to deal with predominantly dynamic request. 

 

What is the main reason we are moving to nginx ? Is there a problem that cannot be solved using Apache ? How many user are actually having problem serving static assets ? 

 

I have no doubt that nginx can do the job as I have use it outside of my work, however in enterprise environment we are limited to use pre-build binary package. 

Caching is supported out of the box but to manage the cache ( ie clearing the cache) you either have to buy the commercial support, recompile nginx with  ngx_cache_purge or recompile nginx with LUA then write a custom script to delete the cache from file system. How do we overcome this issue ? 

 

 

Also, can someone please explain what is "Squiz Edge technology" and how do we use it ?

 

 

 

 

 

 

 

 

 

 

 

 

 


(Joel Porgand) #2

 

Also, can someone please explain what is "Squiz Edge technology" and how do we use it ?

 

 

part of their cloud offering - their fancy CDN 


(Jacob Gardiner) #3

Hi, 

 

Can someone please explain the reasoning behind the requirements for squiz stack v5 ?

 

I think squiz have taken the right path for postgres, redis, opcache, but I have questions about the web server and caching. 

 

I'm still sitting on the fence in regards to php-fpm as I find that mod_php is faster than php-fpm in processing request and you don't have to spawn additional daemon.

If the caching server is configured properly and you have high static assets max-age then the webserver will be left to deal with predominantly dynamic request. 

 

What is the main reason we are moving to nginx ? Is there a problem that cannot be solved using Apache ? How many user are actually having problem serving static assets ? 

 

I have no doubt that nginx can do the job as I have use it outside of my work, however in enterprise environment we are limited to use pre-build binary package. 

Caching is supported out of the box but to manage the cache ( ie clearing the cache) you either have to buy the commercial support, recompile nginx with  ngx_cache_purge or recompile nginx with LUA then write a custom script to delete the cache from file system. How do we overcome this issue ? 

 

 

Also, can someone please explain what is "Squiz Edge technology" and how do we use it ?

 

 

The move to nginx is definitely a carefully considered change, and one that we believe is going to allow us to build faster, better solutions for our clients in the future. Nginx combined with various modules (dubbed openresty) will give us some amazing capabilities in the future. We use openresty heavily in Squiz Edge (more on that below) and have been able to embed functionality into the web server that would not be possible with a traditional Apache based solution.

 

With Squiz Edge as the example, one of the features that we're able to provide customers (using an openresty core) is Edge Side Includes (see: http://en.wikipedia.org/wiki/Edge_Side_Includes).ESI gives us a whole new world of implementation driven functionality at the Edge servers, extending some of the page assembly logic out to the caching servers and taking that heavy lifting away from php and Matrix whilst also making the experience faster for end users. It's amazing stuff and we're finding new ways to leverage ESI every day.

 

I'm not exactly sure what your current architecture looks like so take this advice lightly, but you don't necessarily need to use nginx as the caching engine. We still do recommending using Squid to our customers that are not using Edge and existing cache purge functionality should remain in-tact. Customers with Squiz Edge don't need request caching at the application/web server, Edge is handling that for them. 

 

php-fpm should give you a lower footprint on the server. If you're game - check out the php-fpm config options to see how you can get better bang for your buck, There's also some configuration options in nginx to specify things like the number of workers you want to use. Nginx itself is really good at serving static files, so anything under your __data directories you should find some improvements there. 

 

Squiz Edge is our global caching network which allows our customers to have their site available in multiple regions, it enables ESI and also provides our customers with a seamless disaster recovery solution. If a customer's system goes down for whatever reason in one location, Squiz Edge keeps the site online whilst failing over to one of our DR locations.  

 

There's a 1minute marketing clip here: http://vimeo.com/103414329.

 

Hope this helps


(Rwahyudi) #4

 

 The move to nginx is definitely a carefully considered change

What consideration has been taken for enterprise client for this change?

 

 

 ESI gives us a whole new world of implementation driven functionality at the Edge servers, extending some of the page assembly logic out to the caching servers and taking that heavy lifting away from php and Matrix whilst also making the experience faster for end users. It's amazing stuff and we're finding new ways to leverage ESI every day.

ESI is old technology that has been around for ages and I’m actually a bit confused with the decision of why using ESI instead of hole-punching using javascript. 

ESI rely on a central server to assemble the page where javascript will take assembly further to the client. Why stop half way? 
 
 

 

 php-fpm should give you a lower footprint on the server.

Yes, Php-fpm provide lower memory footprint but they are slower than mod_php. Most enterprises will have no issue at throwing more memory to the server. 

 

 

 

 Nginx itself is really good at serving static files, so anything under your __data directories you should find some improvements there. 

Most static assets should be served at frontend cache wether its squid or squiz edge. Changing apache to nginx does not have much benefits here, plus apache 2.4 is now support event MPM.

 

 

 

I think there is a need to have 2 sets of “supported” stack.  
One for enterprise customer and one for customer who wants to live on the edge.