There were a few weeks at my last online news job where the CMS we used was consistently buggy. Sure, bugs happen. This bug happened because of a new RAM chip in one of the database servers has something wrong with its wiring, and was hosing that particular server. But, since there were multiple database servers, and when you were in the CMS doing your thing you weren’t always dealing the one that had something wrong with it, that problem didn’t happen all the time. When it did happen, pages would take 30-60 seconds to load. But it didn’t, and it was a hard problem for the developers to track down.
It’s difficult for non-web geeks to grasp everything that goes into making a website run, and it’s easy to complain when the tools you use don’t work perfectly. Thus, I give you my explanation of all the places things could go wrong when things go wrong. It’s not complete, because I don’t know everything. And it’s generic, which means different content management systems in different server environments may have issues with things that I’ve never heard of. It’s intended to help those not familiar with the ropes and pulleys behind the software used to publish their information understand what goes into those ropes and pulleys.
Note: I include a lot of links, some to some incredibly basic concepts. These links are intended to act as a glossary, because if you’re a computer / web noob and you don’t know the difference between a hard drive’s memory and RAM memory, or what HTTP means, it’s likely you will remain a noob. If I’ve made a big-wham omission / oversight / generalization, please do correct me.
1. The web servers.
Servers are computers. Kind of like the computer you’re on. Your computer isn’t designed to serve web pages — it’s designed to help you get the things you need to do done. Servers are built to serve files. Not you. That usually means servers are put in containers, stored next to other servers in giant tall racks, often in something called a “Data Center” far away from normal humans. Sometimes that data center’s in your building, and sometimes it’s not.
What can go wrong with a server?
Hardware. That means hard drive, RAM, power supply, CPU — any of those things could fail. It’s possible that the publishing you’re doing — especially if you’re involved in a high-traffic web site — involves more than one server. That’s because one computer can only deal with so many “requests.” (That’s the fancy term web professionals use for what happens when you go to a web page — you’re making a request for that HTML file, a request for that CSS file, a request for each of those images, etc.)
Recommended reading about servers
Wikipedia’s article about servers
Web Server Basics
2. The operating system.
Windows XP is an operating system. Mac OS X is an operating system. Linux has scads of different operating systems (called distributions). An OS is the visible layer between the server’s guts and the software that runs on ther server. I know I’m getting all fancy with the language here … bear with me, I’m writing this for the folk at the newsroom I work in.
What can go wrong with the operating system?
In the context of web publishing, not much. However, if some of the web software (or code on the web software) is insecure (read: vulnerable to attack), malicious software and people could leverage that vulnerability to take command of the OS and do nasty things.
Recommended reading about operating systems
Wikipedia’s article about Operating systems
Linux.org
3. The web server software.
In order to handle these requests made by the outside world for your web site, you need some software that knows what to do when it gets told “GET /tippler/Guestbook/guestbook.html HTTP/1.1″ (that line is an example of one request your web browser makes when you visit a web page). Apache is the most-used server software on the web, as of April 2008.
What can go wrong with the web server software?
Configuration, and the stuff that happens when your site gets a traffic spike. Set up Apache wrong and Apache will start gobbling up your server’s RAM (RAM’s the stuff that provides the space for your computer’s programs, whether it’s Apache or Microsoft Word, to run. If your programs ask for more RAM than your computer / server can provide, that means your computer has reached the end of its limit and will probably start performing very slowly). Your server’s RAM won’t matter if 5 people visit your site each day, but if your site gets “spiked” (as in, a page on your site gets linked to by a high-traffic website, and all of a sudden you’ve got hundreds / thousands of people requesting pages every second) then your site could go down.
Recommended reading about web server software
Wikipedia’s article about web servers
4. The database.
Odds are most of the information on your site is stored in a database. There are many types of database software — Oracle, MySQL, SQLite, PostgreSQL are a few of them.
What can go wrong with the database?
Most of what can go wrong with a database results from ineffeciencies and issuse with the back-end software / content management system (CMS) that’s asking the database for information. That said, if you’ve got a database that isn’t indexed / keyed properly (indexes and keys being the fields most often used by the back-end software to reference the information it’s looking for), you will have problems. Also, there’s the whole topic of caching database queries — the idea behind caching being that many of the same requests are made to the database, and instead of processing every request like it’s a new request why not save that information for later.
Recommended reading about databases
Wikipedia’s article about database management systems
Database Basics (slightly more technical)
5. The programming language that your content management system uses.
I’m talking about languages like PHP, Python, Ruby and Java, which are all often the language that the CMSes used to publish web sites are written in. These programming languages are also used to perform other tasks, but, here, we’re talking about them in their capacity to publish web sites. Why use a programming language? Because programming languages are a tool that allow you to repeat and perform common actions without you, yourself, actually doing them.
What can go wrong with the programming language?
There are things that can go wrong with the language, and there are things that can go wrong with the CMSes running on that software. It’s good to know that there’s a difference. The programming language isn’t as error-prone as the stuff that’s using the programming language to do whatever it is you’re doing on the web &emdash; that’s because there are legions of computer science professionals (and, often, corporations) working on that software. There are quality assurance and testing processes to make sure the software does what it’s supposed to, and doesn’t do what it’s not supposed to. Security is important in a programming language, because these languages can be made to do harm to the servers they’re on.
Recommended reading about programming languages
Index of the most-used programming languages
Wikipedia’s article about the front-end and the back-end of software
Stay tuned for the second part of this series, which looks at exciting topics such as what can go wrong with CMSes, external servers and Content Delivery Networks, vendor software / servers, and what can go wrong with you.