What’s in your stack?

Stack of pancakes

Stack of pancakes

You may have heard various computer people throw around the s-word. A stack, in IT terminology, usually refers to a solution stack. Any software application, whether it’s your website, email client, favorite iPhone app, or your online CRM, is developed and run on top of a set of standardized, prebuilt, building blocks. These building blocks, each running on top of another, together define a stack. Application builders have a choice of different stacks, and usually choose based on the type of application, the target device(s), cost, and personal preference.

The archetypal stack consists of Linux, Apache, MySql, and PHP, and is therefore known as LAMP. The LAMP stack has historically been used for many of the most popular web applications including the original Facebook!

This simplified diagram is the LAMP stack that ran the original Facebook site. In this stack, which is all open-source and free to use, the servers are running an operating system known as Linux. On top of Linux, runs Apache, a web server that was responsible for “serving” your Facebook pages to your browser. MySQL, which also runs on Linux, is a general-purpose database, in which Facebook stored user names, posts, pictures, etc. Finally PHP is a scripting engine, that when run on Apache, can interpret code in order to customize web pages by using the information stored in the MySQL database.

In order to build the first Facebook, our young Mark Zuckerburg only had to design his database and build dynamic web pages using HTML and PHP. The stack would then allow the Facebook web site to run on practically any hardware, and work on any standard browser. Before publicly available stacks like LAMP were built, programmers had to create all the building blocks themselves, which greatly increased the time and effort required to bring a product to market.

Today, typical stacks add many more blocks and layers, and usually reside in the cloud. Some stacks, such as AWS Lambda, completely free application developers from worrying about servers, operating systems, or databases, and can even provide drag and drop interfaces that empower users to build complex business processes without even knowing any code!