software stack

Contributor(s): Margie Semilof

A software stack is a collection of independent components that work together to support the execution of an application. The components, which may include an operating system, architectural layers, protocols, run-time environments, databases and function calls, are stacked one on top of each other in a hierarchy. Typically, the lower level components in the hierarchy interact with hardware, while the higher level components in the hierarchy perform specific tasks for the end user. Components communicate directly with the application through a series of complex instructions that traverse the stack.

Examples of software stacks

LAMP (Linux, Apache, MySQL, PHP) - a well-known software stack for web development. The lowest layer of the stack’s hierarchy is the Linux operating system. The highest layer of the hierarchy is the scripting language -- in this case, PHP. (Note: the “P” may also stand for the programming languages Python or Perl). LAMP stacks are popular because the components are all open source and the stack can run on commodity hardware.  Unlike monolithic software stacks, which are often tightly coupled and often built for a particular operating system, a LAMP stack is loosely coupled. This simply means that while the components were not originally designed to work together, they have proven to be complementary and are often used together. Today, LAMP components are now included in almost all Linux distributions. 
 (MongoDB, Express, Angular and Node) - a stack of development tools known for helping to eliminate the language barriers often experienced in software development.  In a MEAN stack, the foundation is MongoDB, which is a NoSQL document datastore. The HTTP server is Express and Angular is the framework for front-end JavaScript. The highest layer of the stack is Node, a platform for server-side scripting.

Content Continues Below

Apache CloudStack  - an open source cloud management stack used by large enterprise customers and service providers who provide Infrastructure-as-a-Service (IaaS). CloudStack provides developers with multiple layers of optional services as well as support for a variety of hypervisors and application program interfaces (APIs).

Understanding a Software Stack

Benefits and challenges of software stacks

When stack components communicate through open and standard protocols and application program interfaces, the components become interchangeable with other components that use the same APIs. This makes it possible for a virtual machine (VM) running LINUX to run on the Windows operating system and change from a LAMP stack to a virtual WAMP stack. When a stack is loosely coupled, however, it can be challenging to optimize performance.  Each component needs to be individually analyzed and tuned, which calls for very particular skill sets.

Front end, back end and full software stacks

Job postings for software stack developers often call for candidates with experience in specific layers of a specific software stack.  For example, a posting for a front-end LAMP developer may require the candidate to know about HTML5, cascading styles sheets (CSS), Asynchronous JavaScript and XML (AJAX) and Javascript Object Notation (JSON). A back end LAMP developer position, on the other hand, might call for server-side scripting skills like PHP but also require the candidate to know about object-oriented programming (OOP), how to optimize a database for write-intensive applications or how to write RESTful APIs.

A posting for a full stack LAMP developer typically expects the candidate to be responsible for everything from patching the operating system to translating a user experience (UX) team’s wireframe designs into code. This type of job can be very demanding because it requires the candidate to be very familiar with every layer of the stack.

This was last updated in April 2018

Continue Reading About software stack

Dig Deeper on Enterprise application integration

Start the conversation

Send me notifications when other members comment.

Please create a username to comment.

File Extensions and File Formats

Powered by: