So I am a bit confused as I go about researching Full Page Caching for Community Edition 1.8. I have already implemented a Two Level Redis Cache, CDN, tuned MySQL's my.cnf for max performance (w/ the DB being on a separate server of course), and I have 2 servers hosting our store behind a load balancer. I say that to point out that I am not immediately jumping for the FPC before doing the initial performance tweaks.
I've never used Varnish before on any kind of site, let alone Magento, and I have never set up an FPC in Magento either. I understand Varnish to be a proxy that acts as a cross between a CDN and a page cache on it's own, sending data to the browser before the request even gets to the web server. And to my understanding, an FPC Module creates a cache locally that the webserver itself dishes out. I know that for both setups, you need to do some "Hole Punching" to get the dynamic content through to the browser (though the techniques are different, between using a module or using Varnish). Please correct me if I am misunderstanding anything here.
Up until just now, I thought of them as two separate entities that you could implement it help out your site, but now somethings I have read seem to imply the opposite. My original plan was to buy the "Warp Advanced Full Page Cache" module for Magento (Formerly the "Tiny Brick Lightspeed FPC", I believe) as it seems to be the most popular, if a touch on the pricier side (but, frankly, $350 isn't much for our company, especially for what it can do). Myself and 2 of my fellow developers were planning on learning out to implement it properly and fully within our own custom, homemade theme to maximize what we can get out of it. After that was done, at some point down the road, I figured I would look into implementing Varnish as well - but, as I said earlier, I had understood them to be separate.
Now, however, I am starting to come across extensions like this PageCache Powered by Varnish that is free, or this Vortex Cache Powered by Varnish Cache which is nearly $800 USD, that are Magento Full Page Cache modules that work directly with Varnish.
My question to you, stack exchange, is how should I be seeing a FPC and Varnish? As separate entities? If so, are they mutually exclusive? Are they two sides of the same coin that I should implement together? Or are they similar but neither exclusive nor inclusive of one another?
Can I use the Warp Advanced FPC I mentioned above with Varnish? Should I use it with Varnish? Or would it be better to use a different FPC if I plan on using Varnish? OR even further, is there an FPC so good that I don't need Varnish? Or vice-versa, should I just use Varnish and ditch the FPC idea?
Sorry for the wall of text, but I have been looking at a lot of articles, blogs, and forum posts, and I haven't been able to discern a definitive answer to those questions. I truly appreciate your help and input in this matter =)
Oh and lastly, a quick question about Varnish and webservers. Currently I am using the normal Apache LAMP stack setup, but for a while now I've been seeing people rave about using Nginx with Magento. I've done some tests myself, stress and load tests, and it seems that it can definitely work a bit better in the right conditions. As such, I was considering switching at some point in the near future. Would this in anyway affect my desire and decision to use an FPC and/or Varnish?
Thank you!!!
EDIT: Oh! And one more quick question - Since I have two servers hosting my site behind a load balancer (which is also a setup that can be increased horizontally should the need arise), I make full use of Redis and Memcached hosted on a separate server from the Web and DB ones for my sessions and each level of Magento's (well, Zend's) Two Level Cache. I assume the FPC would store it's data in one of those to systems? Would I need to have a specific extension to store it there or do they all do it? And while I assume not, would this affect Varnish in anyway? Thanks again!!