A software stack, or technology stack, is a series of technology solutions that are layered on top of each other to support an application. The different programs or software in a stack work together to power the applications that are built on top.
Software stacks have two main categories:
- The front end, or client-facing or client-side, which is what users directly interact with in an application. They experience how the application works. This portion of the stack includes a web markup language, usually HTML, and Cascading Style Sheets (CSS), a program for page design and layout. It can also include JavaScript.
- The back end, or server-side, which includes all of the programs and software that users don’t see. The back end is everything that powers an application, like servers, databases, and programming languages.
Design of a software stack
Software stacks can take different forms and include different programs and software, but their general structure includes:
- Databases. A database is often at the bottom of a stack, storing all the information that an application requires to run. The other programs and software in the stack may also rely on the data stored in a database. Popular choices for software stacks include MySQL (an SQL database) and MongoDB (for developers or users who want a NoSQL database).
- Programming languages. A language forms the framework for how applications and programs will run. Python, PHP, and Perl can all be used in the popular LAMP stack.
- Servers. Multiple servers are used in a software stack, but we’re focusing on web servers, which power web browsers and web applications.
- Operating systems. An operating system, a type of software platform, sits between hardware and all applications and gives the applications instructions to run.
LAMP: example of a software stack
Businesses choose a software stack depending on their needs and the applications and programs they want to build. Databases, operating systems, and programming languages in the stack will affect how compatible the stack is with future applications. The LAMP software stack, one of the most popular, includes the following platforms:
- Linux, an operating system
- Apache, an open-source HTTP web server
- MySQL, a relational database
- PHP, a programming language (sometimes developers also use Perl or Python)