"> Full Stack Development and the Modern Web – Code Immersives

Full Stack Development and the Modern Web

A large modern web application relies on more than one server, and multiple technologies. The best developers understand to some extent all the moving parts even if they are not expert in all of them.

Why is it important to understand the full stack when developing applications for the modern web?

Think about the old story of 4 blind men describing an elephant. The one holding the tail has one picture of the beast, the one holding the trunk another, then you have the fellow holding the ear and another holding the leg. While they each can describe what their part of an elephant is like they have no idea what the whole beast looks like, nor do they know how it functions.

In much the same way a developer that knows only one part of the technology puzzle is blind to the whole of the project. Yes it is possible to “code to spec” with each developer working on his part and reach a working solution, but if any developer is not 100% in line with the spec, or if the spec for each part was unrealistic to start the result will be failure.

A large modern web application relies on more than one server, and multiple technologies. The best developers understand to some extent all the moving parts even if they are not expert in all of them.

Below are the parts of a modern full stack application:

  • Server Hardware
  • Server Operating System – usually BSD, GNU/Linux or Unix
  • Web Server Software – Apache, thttpd, nginx
  • Database Server Software – Postgress, Mysql, Sybase
  • Front End HTML/CSS/JavaScript
  • For presentation and input validation
  • Backend Programming
  • This is where the bulk of the application work takes place. This may happen on the web server, or could be on an independent dedicated system.
  • Database server
  • Any non-trivial web application has data that must be stored, accessed, searched, and sorted. A database server is central to modern web applications.
  • Network
  • Any multi-tier web application needs to have communication not only with the web clients (browsers), but also with the other servers used on the backend. Understanding this communication is key to building an application that will scale well and perform properly under load (slashdot effect).

A basic understanding of all the above components will make a developer better able to code his portion of the application to work in synergy with the other components and the underlying hardware/operating system.

In addition to understanding the basics of the technology stack it is important to know about different software options for each part of the stack. For example different web servers have different strengths. If you need to serve static content very fast then thttpd, or nginx might be exactly what you need, but if your site has little static content and is mostly dynamic developed in PHP, PERL, or Python then Apache might be the best tool for the job. Often large web properties will make use of different server software for different parts, with a server optimized for static content handling images and one optimized for dynamic content taking care of all program generated pages.

The developer who understands that any web application has a large number of moving parts, and how those moving parts interact is the developer that is more valuable to his teammates and manager. The developer who understands how to select and implement the correct technology for a given tier of a web application is the developer who will produce a better solution and again be more valuable to his entire team.

So no matter what portion of web application development you love it is very important to be exposed to, and understand Full Stack Development.