Hacker News new | ask | show | jobs
by typicalrunt 4985 days ago
WordPress, like most LAMP apps of its era, makes a series of architectural assumptions that turn out to have horrible impact on non-functional qualities … but that’s another rant for another day.

Until I came to this sentence, I was coming to the conclusion that CMSes fall down fairly quickly once you add in large data, large traffic, or complex installs. For the life of me, I can't see why people continue to use CMSes for large projects anymore, when they could potentially code something up faster in Django/Symfony/Rails and, here's the kicker, know the codebase inside and out.

My client has simple marketing (read: 99% static) websites that are built on Drupal. Sounds good at first, and it almost makes sense... and then you get to the non-functional requirement that it needs to withstand a marketing event that can bring 2k+ concurrent users for over 24 hours. Then you watch Drupal meltdown the server.

3 comments

What doesn't make sense about it?

I can see a lot of scenarios where you start with a CMS because it does a good job of doing what you need. Why reinvent the wheel?

Scaling issues is going to occur in all code, even code you write and know inside and out. It just means you become entirely responsible for debugging and re-architecting to improve its performance.

@Drupal specific comment, you could easily throw nginx as a reverse proxy with a cache in front if everything is static and be done with it.

Valid point. What I keyed on in the article is that it is a complex install, and that tells me that maybe his CMS is working against him. In those cases I like to remove the impediment and simplify the data model (which should simplify the code).
I can't comment on the specifics but he said it was something default in the comments table and modules I think. For a big project like wordpress, I would try to understand why a certain decision was made. Try to understand the consequences of that decision vis-a-vis how I would want/expect it to work.
Doesn't even have to be static to put nginx in front of it! As long as you can set proper cache headers from your script (in this case Drupal, and I imagine it does), you can cache even dynamic-ish sites quite well!
When I applied to do my honours year, I wrote four project proposals. One was to basically turn the architecture of such applications inside out by making the virtual machine the target of deployment. This allows you to get out of a lot of architectural holes that shared hosting forces on you.

Email me if you're interested in reading the proposal, I have it lying around somewhere.

There are loads of people who "know the (wordpress) codebase inside and out". There are loads of people who don't. There are loads of people who make crap sites in Django/Symfony/Rails as well.