Solution Stacks for Building a Complete Computing Platform

Lecture



In computing, a solution stack, also called a software stack or technology stack, is a set of software subsystems or components needed to create a complete platform, such that no additional software is required to support applications. Applications are said to «run on» or «run on top of» the resulting platform.

For example, to develop a web application, an architect defines the stack as the target operating system , web server , database and programming language . Another variant of a software stack is an operating system, middleware , database and applications. As a rule, the components of a software stack are developed by different developers independently of one another.

Some components/subsystems of an overall system are chosen together often enough that a particular set is designated by a name representing the whole rather than by the names of its parts. Typically, the name is an acronym denoting the individual components.

The term «solution stack» has historically sometimes included hardware components as part of the final product, mixing both hardware and software across the support layers.

A full-stack developer is expected to be able to work at every level of an application ( frontend and backend ). A full-stack developer can be defined as a developer or engineer who works with both the frontend and the backend of a website, web application or desktop application. This means they can lead the development of platforms that include databases, user-facing websites, and also work with clients during the project planning stage.

JavaScript stacks

A JavaScript stack is a set of technologies that use JavaScript as the primary programming language throughout the software development process, typically combining frontend and backend tools to build full-scale web applications. With the advent of Node.js, JavaScript can now run server-side, allowing developers to use a single language for both client-side and server-side development. This unification simplifies the development workflow, improves code reuse and boosts productivity by providing consistent logic and tooling across the entire application. JavaScript stacks are often favored for their speed, scalability and access to the vast ecosystem of libraries and frameworks available through platforms such as npm. The growing popularity of these stacks reflects a broader shift toward full-stack JavaScript development in modern web development.

OS-level stacks

MLVN
MongoDB (database)
Linux (operating system)
Varnish (software) (frontend cache)
Node.js (JavaScript runtime environment)
WISAV/WIPAV
Windows Server (operating system)
Internet Information Services (web server)
Microsoft SQL Server / PostgreSQL (database)
ASP.NET (framework for server-side web application development)
Vue.js (frontend development framework)

OS-agnostic web stacks

GRANDstack
GraphQL (language for querying and processing data)
React (web application presentation)
Apollo (platform for building data graphs)
Neo4j ( database management systems )
JAMstack
JavaScript (programming language)
API (application programming interfaces)
Markup (content)

JAMstack (also styled as Jamstack ) is a web development architectural pattern and solution stack . The acronym «JAM» stands for JavaScript , API and Markup (generated by a static site generator ) and was coined by Matthias (Matt) Biilmann, CEO of Netlify , in 2015. The idea of combining the use of JavaScript, APIs and markup has existed since the appearance of HTML5 .

On JAMstack websites, the application logic typically resides on the client side (for example, an embedded e-commerce checkout service interacting with pre-rendered static content), without being tightly coupled to a backend server. JAMstack sites are usually served using a Git-based CMS or a headless CMS

MEAN
MongoDB (database)
Express.js (application controller layer)
AngularJS / Angular (web application presentation)
Node.js (JavaScript runtime environment)

Because all components of the MEAN stack support programs written in JavaScript, MEAN applications can be written in a single language for both the server-side and the client-side runtime environments.

Although the MEAN stack is often compared directly with other popular web development stacks such as the LAMP stack , its components sit at a higher level, including the web application presentation layer but not including the operating system layer.

The MEAN acronym was coined by Valeri Karpov. He introduced the term in a 2013 blog post, and the logo concept, originally created by Austin Anderson for the original MEAN stack group on LinkedIn , is a combination of the first letters of each component of the MEAN acronym.

MERN
MongoDB (database)
Express.js (application controller layer)
React.js (web application presentation)
Node.js (JavaScript runtime environment)
MEVN
MongoDB (database)
Express.js (application controller layer)
Vue.js (web application presentation)
Node.js (JavaScript runtime environment)
PERN
PostgreSQL (database)
Express.js (application controller layer)
React (JavaScript library) (web application presentation)
Node.js (JavaScript runtime environment)
T-REx
TerminusDB (scalable graph database )
React ( JavaScript web framework )
Express.js (framework for Node.js )

Specific framework stacks

Java-Spring stack

The Java- Spring stack is a robust enterprise-grade technology stack built on the Java programming language and the Spring ecosystem. At its core is the Spring Framework, which provides a comprehensive programming and configuration model for modern Java applications. This stack often includes Spring Boot, a project that simplifies the setup of Spring applications through the «convention over configuration» principle, embedded servers and production-ready defaults. Additional components such as Spring MVC, Spring Data and Spring Security are commonly used to build web applications, access databases and implement authentication and authorization. The Java-Spring stack is often paired with relational databases such as MySQL or PostgreSQL, and is usually deployed using servlet containers such as Apache Tomcat, or platforms such as Spring Cloud for microservice architectures. Known for its scalability, modularity and long-term stability, the Java-Spring stack is widely used in enterprise environments, especially in finance, telecommunications and large SaaS platforms.

Python-Django stack

The Python- Django stack uses Python as the primary programming language and Django as the web framework. Django is designed to encourage clean, pragmatic design and follows the DRY (Don't Repeat Yourself) principle. It includes a wide range of built-in features such as user authentication, an admin interface, form handling and a powerful ORM. These built-in tools make Django particularly effective for content-oriented or database-intensive web applications. This stack often pairs Django with PostgreSQL or SQLite as the database and runs on web servers such as Gunicorn behind Nginx. Thanks to Python's readability and Django's exhaustive documentation, this stack is widely used in educational platforms, scientific applications and content management systems.

Ruby on Rails stack

The Ruby on Rails stack is built on the Ruby programming language and the Rails web framework. It emphasizes the « convention over configuration» principle , which lets developers build applications quickly by reducing the need for boilerplate code and manual configuration. Ruby on Rails ships with an integrated set of tools such as an object-relational mapping (ORM) system, a code generator and a structured directory layout, making it well suited to rapid application development. Its focus on simplicity and developer satisfaction has made it a popular choice among startups and small teams. The stack typically includes a PostgreSQL or MySQL database, a web server such as Puma or Nginx, and deployment tools such as Capistrano or Heroku.

Other stacks

OS-level stacks

BCHS
OpenBSD (operating system)
C (programming language)
httpd (web server)
SQLite (database)
Ganeti
Xen or KVM ( hypervisor )
Linux with LVM (mass storage device management)
Distributed Replicated Block Device ( storage replication )
Ganeti ( virtual machine cluster management tool )
Ganeti Web Manager (web interface)
GLASS
GemStone (database and application server)
Linux (operating system)
Apache (web server)
Smalltalk (programming language)
Seaside (web framework)
LAMP
Linux (operating system)
Apache (web server)
MySQL or MariaDB ( database management systems )
Perl , PHP or Python ( scripting languages )
The LAMP acronym was coined by Michael Kunze in the December 1998 issue of the German computer magazine Computertechnik , when he demonstrated that a set of free and open-source software «could become a viable alternative to expensive commercial packages». Since then, O'Reilly Media and MySQL have joined forces to popularize the acronym and promote its use. One of the first open-source software stacks for web development, the term and the concept became popular. The stack is capable of hosting a variety of web frameworks and applications such as WordPress and Drupal
Solution Stacks for Building a Complete Computing Platform
LEAP
Linux (operating system)
Eucalyptus (free and open-source alternative to Amazon Elastic Compute Cloud )
AppScale ( cloud computing platform , a free and open-source alternative to Google App Engine )
Python (programming language)
LEMP/LNMP
Linux (operating system)
Nginx (web server)
MySQL or MariaDB (database management systems)
Perl , PHP or Python (scripting languages)
LLMP
Linux (operating system)
Lighttpd (web server)
MySQL or MariaDB (database management systems)
Perl , PHP or Python (scripting languages)
LYME and LYCE
Linux (operating system)
Yaws (web server written in Erlang )
Mnesia or CouchDB (database written in Erlang )
Erlang (functional programming language)
MAMP
Mac OS X (operating system)
Apache (web server)
MySQL or MariaDB (database)
PHP , Perl or Python (programming languages)
LAPP
Linux (operating system)
Apache (web server)
PostgreSQL (database management systems)
Perl , PHP or Python (scripting languages)
WAMP
Windows (operating system)
Apache (web server)
MySQL or MariaDB (database)
PHP , Perl or Python (programming language)
WIMP
Windows (operating system)
Internet Information Services (web server)
MySQL or MariaDB (database)
PHP , Perl or Python (programming language)

Microsoft Web Platform Installer is a tool for installing applications on a WIMP system.

LAMP is a similar set of entirely free software , in which Windows is replaced by Linux and IIS by the Apache HTTP Server web server .

WAMP is a similar technology stack in which Apache replaces IIS.

WINS
Windows Server (operating system)
Internet Information Services (web server)
.NET ( software development platform )
SQL Server (database)
WISA
Windows Server (operating system)
Internet Information Services (web server)
SQL Server (database)
ASP.NET (web framework)

OS-agnostic web stacks

ELK
Elasticsearch ( search engine )
Logstash (event and log management tool )
Kibana ( data visualization )
MARQS
Apache Mesos (node start/stop)
Akka (toolkit) (actor implementation)
Riak (data store)
Apache Kafka (messaging system)
Apache Spark (big data and MapReduce)
NMP
Nginx (web server)
MySQL or MariaDB (database)
PHP (programming language)
OpenACS
NaviServer (web server)
OpenACS ( web application framework )
PostgreSQL or Oracle database
Tcl (scripting language)
PLONK
Prometheus (metrics and time series)
Linkerd (service mesh)
OpenFaaS (management and autoscaling of compute resources)
NATS (asynchronous message bus/queue)
Kubernetes (declarative, extensible, scalable, self-healing cluster)
SMACK
Apache Spark (big data and MapReduce)
Apache Mesos ( node start/stop )
Akka (toolkit) ( actor implementation )
Apache Cassandra (database)
Apache Kafka ( messaging system )
XAMPP
cross-platform (operating system)
Apache (web server)
MariaDB or MySQL (database)
PHP (programming language)
Perl (programming language)
XRX
XML database (for example, BaseX , eXist , MarkLogic Server )
XQuery (query language)
REST ( client-side interface)
XForms (client)

See also

  • Content management system
  • Purple squirrel
  • Web framework

Comments

To leave a comment

If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Lectures and tutorial on "Software and information systems development"

Terms: Software and information systems development