A web stack, also called a web ap­plic­a­tion stack, is a com­pil­a­tion of software set up es­pe­cially for im­ple­ment­ing websites and web ap­plic­a­tions. The term, ‘stack’, refers to the fact that the system’s in­di­vidu­al com­pon­ents are built upon one another. The basic re­quire­ments necessary to construct a web stack include: an operating system, a webserver, a database, and a script in­ter­pret­er. Together with the proper server hardware, this bundle of IT com­pon­ents ensures that necessary in­form­a­tion about cor­res­pond­ing web projects is forwarded to re­quest­ing clients (generally, this is the internet browser). The browser then processes the HTML, CSS, and JavaS­cript codes and depicts the web space for the user. Given that a web stack’s distinct software com­pon­ents can be in­di­vidu­ally combined, there are numerous vari­ations possible that can be used for many different ap­plic­a­tion cases. The most popular software com­bin­a­tion is the open source bundle LAMP, which is composed of Linux, Apache, MySQL, and PHP.

Con­ven­tion­al web stack com­pon­ents

As mentioned above, web stacks are critical pieces of in­fra­struc­ture for websites and web ap­plic­a­tions and are composed of four software building blocks: operating systems, web­serv­ers, databases, and script in­ter­pret­ers. Ad­di­tion­ally, frame­works help expand the cap­ab­il­it­ies of web stacks by allowing them to use ad­di­tion­al pro­gram­ming languages, proxy servers, or different analysis programs. Here’s an overview of the system’s basic com­pon­ents:

Operating system

The operating system comprises the central interface between the basic server hardware (processor, working memory, web space) as well as the other applied software com­pon­ents. That is to say, the operating system relies on hardware resources in order to ensure the func­tion­al­ity of in­di­vidu­al ap­plic­a­tions, es­pe­cially web­serv­ers. Possible systems that can be built upon web stacks include various Linux, Windows, Unix, and Mac OS dis­tri­bu­tions.

Web servers

Installed on the operating system, a web server is a type of software that delivers documents to re­quest­ing clients. With the help of HTTP transfer protocols, client requests are passed on to the web server. If the requested documents deal with static content, like HMTL files or images, then the web server directly processes the request by sending the cor­res­pond­ing data to the client. Dynamic content, on the other hand, can only be rendered with the help of databases and script modules. The most commonly used web server solutions include names like Apache, Microsoft IIS, and nginx.

Databases

In database systems, which are also commonly referred to as databases, volumes of data relevant to the web project are per­man­ently stored so that the web server can default to these when needed. In order for this process to properly function, the server uses server ex­ten­sions to put in requests, which are then processed by the databank and sent back to the ex­ten­sions. These ex­ten­sions generate a suitable output format, like HTML, from the result and forward it to the web server. The database choice is tightly connected to web server software and applied script as well as the pro­gram­ming language. Popular options are Oracle, MySQL, and MongoDB.

Script in­ter­pret­er

Without script in­ter­pret­ers, web servers would be unable to realise dynamic websites and web ap­plic­a­tions. For one thing, this is why script in­ter­pret­ers operate client side, which means within the re­quest­ing browser. For another, certain cal­cu­la­tion processes for depicting sites already take place through server side scripting. The typical web stack script in­ter­pret­er is PHP; other, less fre­quently used al­tern­at­ives, like ASP.NET, Java, Ruby, Perl, or Python, are also available.

The most popular web-stack solutions

A whole host of software stacks has proved itself ready to take on different web de­vel­op­ment-related tasks. The growing demands placed on important aspects (e.g. user-friend­li­ness, stability, ex­pand­ab­il­ity, and scalab­il­ity) together with arrival of in­creas­ingly complex web ap­plic­a­tions has decreased the pop­ular­ity of the classic web stack model. JavaS­cript has taken on an in­creas­ingly important server­side role: web ap­plic­a­tion stacks based on the JavaS­cript platform, Node.js are no longer the rarity they once were. One reason for their growing pop­ular­ity is ease with which per­form­ant web projects can be pro­grammed. Three es­pe­cially popular stacks and some of their potential ap­plic­a­tions are:

LAMP—the classic option

As pre­vi­ously mentioned, LAMP is the most well-known and widely used web stack. As one of the first-ever used models, this option is an optimal package for web projects. With

  • Linux as its operating system
  • Apache as the web server
  • a MySQL database
  • and the script in­ter­pret­er, PHP,

all of the com­pon­ents of this model are made up of open source software with free licenses. This means that they are both free of charge and can be modified as desired. But don’t be deterred by the freeware nature of this option: LAMP models are able to more than hold their own against pro­pri­et­ary solutions and have been used to develop MediaWiki, the Wikipedia software. LAMP packages are es­pe­cially well-suited for im­ple­ment­ing multipage, dynamic websites. Users es­pe­cially benefit from the large community, extensive tutorials, and the option of using PHP and high-per­form­ance tools, like phpMy­Ad­min.  

Due to the steadily in­creas­ing progress of this tech­no­logy and the de­vel­op­ment of new freeware, different vari­ations of LAMP stacks have arisen that have partly replaced the system’s con­ven­tion­al com­pon­ents. Some popular examples include:

  • WAMP (Windows as operating system)
  • MAMP (Mac OS X as operating system)
  • XAMP (any operating system, Perl and PHP as script in­ter­pret­ers; platform-in­de­pend­ent FTP server)
  • LAPP (Post­gr­eSQL as database for en­ter­prise projects)

The ‘M’ listed above can also stand for MariaDB, the MySQL spin-off. Read on about LAMP stack and its in­stall­a­tion in our Digital Guide series on the matter.

WISA—the Microsoft stack

Unlike the LAMP stack, which is es­sen­tially an ar­range­ment of in­di­vidu­al, sep­ar­ately designed com­pon­ents, Microsoft has pro­grammed the com­pon­ents of its WISA stack spe­cific­ally with co­oper­a­tion in mind, which guar­an­tees optimal function of the software package. Of course, the im­ple­men­ted software is pro­pri­et­ary, which is why its cor­res­pond­ing licenses need to be purchased. Users also have access to the software giant’s support service as well. Microsoft’s web stack makes use of:

  • the operating system, Windows Server,
  • the web server software Internet In­form­a­tion Services (IIS),
  • the re­la­tion­al database man­age­ment system, SQL server
  • and the pro­gram­ing language library, ASP.NET

Thanks to the ASP.NET library, web projects can be pro­grammed based on VisualC# or Visual Basic.NET, which can be directly executed from the system with the help of a compiler. WISA doesn’t require the use of any script in­ter­pret­ers, and because of this it’s at a con­sid­er­able per­form­ance advantage when compared to other web stacks that do need them. This makes the Microsoft stack a good solution for chal­len­ging, complex web projects.

MEAN—modern ar­chi­tec­ture for single-page web ap­plic­a­tions

The so-called MEAN stack presents an al­tern­at­ive to the classic web stack set-up. Due to its com­pon­ents, the need for multiple pro­gram­ming languages for servers (PHP etc.) and clients (JavaS­cript) is no longer necessary given that all the elements of this modern software package support JavaS­cript. Ad­di­tion­ally, operating systems and web server software occupy a secondary role with this model. MEAN’s building blocks are

  • The NoSQL database, MongoDB
  • the server side web ap­plic­a­tion framework, Express.js,
  • the client side frontend-framework, AngularJS
  • and Node.js, which is based on the JavaS­cript runtime en­vir­on­ment.

One of the main ad­vant­ages of this web ap­plic­a­tion stack is its extremely sleek and ac­cel­er­ated de­vel­op­ment process as well as the op­por­tun­ity for scaling projects. And thanks to the document-based data transfer in JSON format, client-oriented single-page ap­plic­a­tions and mobile apps can be mas­ter­fully im­ple­men­ted. There is even variation among MEAN web sticks. For example, MEEN, with Ember.js as the frontend framework, or MERN, which uses React.js as its frontend framework. Meteor presents a com­pletely compiled and expanded execution of a MEAN stack.

How to find the right web stack

Finding the right software package and runtime en­vir­on­ment depends on a multitude of factors. While JavaS­cript-oriented stacks are first and foremost intended for realising single-page ap­plic­a­tions, classic web stacks, which are based on PHP, Python, or Perl, have clear ad­vant­ages when it comes to designing multipage projects. The pro­gram­ming language also play a generally large role when it comes to making the right decision: normally, you’ll achieve better results with a script and markup-language based web stack, provided that you’re competent in these languages.

Of course, before any decision can be made, it’s important to also take technical dif­fer­ences, such as the per­form­ance and stability of the software en­vir­on­ment, into account. Con­sid­er­ing al­tern­at­ive com­pon­ents, like nginx as web server software for web projects with high hit rates is a further ‘must’. In any case, it’s clear that no one-size-fits-all approach can be taken when picking the right web stack solution.

Go to Main Menu