What is a software stack and why is it so important for my app?

Software Stacks and Apps

There are many important decisions to make when planning a software product for your organization or startup. What features are your end users most interested in? What is your budget for the project? What platforms will your product be available on, such as mobile apps on iOS and Android devices or directly through a website? Along with these questions, it is also important to consider the technology that will be used to build and run your project, commonly known as a “software stack”. 

In this post, we will explore the concept of a software stack, review a few popular stacks used across the software industry, and discuss the importance of choosing a stack for your project.

What is a Software Stack?

A software stack, also known as a technology stack or a development stack, is the set of technologies, frameworks, and tools that encompass the building and running of a software product. Like the term suggests, it is easy to visualize each piece of technology “stacked” together (like a software sandwich 😋), with each piece working with the layer above and below it to create a whole product. The typical stack is broken into three distinct components that help to make this stacking and communication concept more clear. 

The first is the user-facing (or frontend) component. This piece encompasses the user interface and is responsible for everything the end user sees as well as interpreting any actions the user wants to take in the application and sending them up the stack. Frontend components can be developed using base web technologies like HTML, CSS, and Javascript, or newer frameworks such as React.js, Angular.js, or Vue.js.

The next layer in the stack is the server (or backend) component. The backend is responsible for processing data sent from the frontend and storing that information in the database (the next layer). The backend can be thought of as a middleman between what the end user sees and behind-the-scenes actions based on user inputs (sending automated emails, securely handling authentication, etc.). There are a host of popular and time-tested technologies for developing backend components, from PHP and Python to newer frameworks such as Node.js and Ruby on Rails.

The final layer in the stack is the database or data storage component. This can take many forms, from MongoDB or SQL databases to newer technologies like Redis. All of these technologies handle the simple but very important role of a database tool – securely storing and retrieving application data to be used by the frontend and backend.

Examples of Popular Software Stacks

1. The MEAN Stack

The MEAN stack (MongoDB, Express.js, AngularJS, and Node.js) is a JavaScript-based stack built using the MongoDB database program, Express.js framework built on top of Node.js for backend development, and the AngularJS framework for frontend development. All software used in the MEAN stack is free and open source, making it easy to learn and get started. And since it is a front-to-back Javascript stack, developers have the ability to share and optimize code between the frontend and backend components.

2. The MERN Stack

The MERN stack (MongoDB, Express.js, React.js, and Node.js) is a very popular variant of the MEAN stack which replaces the Angular.js frontend framework with React.js, an open source Javascript library developed by Facebook. The MERN stack is one of the most popular stacks for developers in 2021, as the development community around React.js has grown rapidly over the last few years. Since React is a library, it includes less out-of-the-box functionality than other frontend frameworks, but boasts a large number of third-party libraries to add features. Similar to the core MEAN stack, the MERN stack is a front-to-back Javascript stack, giving developers a lot of flexibility to reuse and optimize code across the frontend and backend.

Check out a cool product we’ve created for one of our clients on the MERN stack.

3. The MEVN Stack

The MEVN stack (MongoDB, Express.js, Vue.js, and Node.js) is another popular variant of the MEAN stack, with Angular replaced by Vue.js, a lightweight Javascript framework that offers basic functionality. Similarly to React, Vue relies on a large community of developers to create third-party add-ons and tools that add features and extend the functionality of the core framework.

4. The LAMP Stack

The LAMP stack (Linux, Apache, MySQL, and PHP) is the tried and tested open source software stack, utilized countless times and in some of the largest projects in the software industry. The LAMP stack is widely used by popular Content Management Systems (CMS) such as WordPress and Drupal, and as the base software stack for web hosting through some of the largest domain providers, such as GoDaddy.

The Pitfalls of “Perfect”

With the numerous stack options available to the product manager or entrepreneur, it is tempting to fall into the trap of spending too much time searching for the “perfect” stack before beginning your project. There are certainly a great many sources online making claims that one stack is superior to the others in all cases, and it is easy to form conflicting conclusions by going too far down this “perfect” rabbithole. In truth, with good architecture and a talented development team, most if not all standard web applications can be built and run on any mix of software stacks. There are definitely situations where one stack may be favorable due to specific features of the project (real-time location handling, server-side rendering, etc), but it is much more important to consider your current and future development resources when choosing a stack.

Final Thoughts

Selecting a software stack for your project is an important part of the product discovery and planning process. When choosing a stack, look for an option that is well-supported by a development community (MEAN, MERN, MEVN, and LAMP are great examples of this), and one with which your development team or future development partner is proficient. 

Here at Lithios, we strive to utilize the most effective software stacks to fit your project’s unique requirements. We consult closely with our clients and development teams to select a stack for each project and support our clients through the development and growth of these stacks. If you have any questions about our process or want to get in touch, drop us a line here.

Brendan Michaelsen Blog Image

Brendan Michaelsen is the Director of Technology at Lithios. He enjoys designing and implementing complex technical systems. A fun fact about Brendan, he sleeps on textbooks to absorb knowledge while dormant.

Looking to Build Your Next App?