They are talking about using nginx as a load balancer. It just proxies all requests off to the application servers that actually prepare the results. This article is really just about the fact that nginx can efficiently service a very impressive number of connections at once.
Those backend servers will be using caches of course though.
All logged out users should be served a completely cached static page that bypasses PHP entirely, it's way faster than even an opcode cache and way less load.
WP-Super-Cache can serve static pages to logged out users and makes this rather easy to setup. It's practically a must for wordpress.
For static caching I use nginx with fastcgi_cache. This makes WP-Supercache obsolete. I bybass the cache for requests containing certain cookies, so that logged in users always receive fresh pages.
Another big Wordpress performance sink is locales. If you have a blog in a non-english language consider using a language-caching plugin. Wordpress uses a PHP gettext implementation that is quite slow. 20% speedup if you cache the generated locales.
But it's a shame to spend days or months on tuning Wordpress, what is essentially just a blog engine.
It's also great to have the flexibility of adding more servers in case of a huge spike, even if you are running on only one server. Like on Heroku, where you can just increase the number of dynos in realtime. Doing that without a central cache that every server can access can break your MySQL because each new server will have a cold cache.
Pages are cached on NGINX for not logged in user, and when a new content is published all and only the pages that contains that content are deleted from the cached and regenerated at the next request.
So does my self-hosted wp blog, for that matter. If you are using WP Super Cache correctly, you can deal with significant amounts of traffic. I've seen peaks of hundreds of simultaneous users on my blog, with a server load < 1. The server is a modest aws small instance.
But multi-author blogs with thousands of logged in users is a nightmare with wp.
I suspect 90%+ of wp blogs are in the mini-blog category though.
Every time an article is published, it causes the cache to be deleted for not only that article but related pages, which means all those pages have to be rendered again.
For one author, that can be managed. Many authors, the cache is constantly being defeated.
That's irrelevant. It's the pages view count that counts, not how many authors are in the same cms.
There is no way in heck it's realtime queries.
I can tell when authors are in the WP backend on the server just by looking at the server load because it's crippling.
The wordpress bottleneck is not nginx vs apache vs whatever, it's the problem of loading hundreds of files for any kind of page render (even to just authenticate for ajax, etc.) and over a hundred db queries in many cases.
A cache-miss in WP is a terrible, terrible thing.