Dark theme

Key ideas in depth: Web architecture


It is worth saying a bit on how the modern web is constructed, as it is rarely as simple as a webserver sending out flat HTML pages. Generally the core hasn't changed, but the peripherals have expanded.

The go-to solution for farming out webpages is still the venerable Apache webserver, which can't really be beat for simplicity and security (though some use Microsoft's IIS). However, there are now ancillary technologies. Popular include:

Databases:
MySQL "MySequel"
PostgreSQL "PostGres"
MongoDB (For Big Data)

Backend languages (see CGI:
PHP
Perl
Python
Node.js (JavaScript backend)
Java
Ruby

language libraries and templating systems:
Angular.js
jQuery
React
Bootstrap
Express (for Node.js)

Content management systems:
WordPress
Joomla
Drupal
Typo3
Jekyll (used for this site!)

Operating systems:
Windows
Linux
MacOS

Given this, we how tend to talk about a "stack" of technologies that come together to support a website. Popular stacks include:
LAMP (Linux; Apache Server; MySQL; PHP) and the Windows (WAMP) and Mac (MAMP) equivalents.
WIMP (Windows; IIS; MySQL; PHP)
MEAN (MongoDB; Express ;Angular.js; Node.js)
For a growing list of popular stacks see this Wikipedia page.

This can seem like a rather offputting amount of technology to get your head around, but don't panic! The secret is to know how to program well, and then pick up a couple of languages. Most of the above work on either JavaScript or PHP, so those are both good things to know, but at the end of the day, knowing one language like Python *in detail* will teach you enough to get your head round any language as you come across it – and that's the real secret of being a programmer.