I’d argue that at this point in history, we’ve got more people building (or hacking together) tools, services, and applications than ever before.
After all, the combination of community, open-source software, and the Internet has made it incredibly easy to pick up some form of programming if even just for small changes to their a site.
Sure, some people that are going to attempt to make a few custom changes to the their blog or website don’t care much about application architecture, but I think that there’s something to be said for being able to conceptualize how an application is put together if only at a high-level.
Although there are a variety of languages, platforms, operating systems, and technologies used to develop web-based software, many of them follow the same basic architecture…
Perhaps the easiest way to think of web applications is in terms of layers (or perhaps a stack). Each layer as it’s own specific set of responsibilities and each layer typically only interacts with the layer below it.
From a 30,000 foot view, the basic architecture of a web application looks something like this:
Of course, this doesn’t really explain anything so it’s worth taking a look at each layer by itself.
This is the layer with which many of us are most familiar primarily because it’s what we see. This is what the user interacts with and how they navigation the application.
Browsers are responsible for displaying the presentation layer.
The application layer is the part of the software that translates information provided by the user and translating it into a format that can be saved. This layer is also responsible for sending information back to the presentation for the user to see.
On top of that, the application layer is responsible for managing other aspects of the application such as session information, cached data, and enforcing authentication rules.
The layer is usually written in a language such as .NET, PHP, Ruby, or any number of other languages.
Finally, the database layer is where all information managed by the application is stored. Just as desktop applications typically save information to a file, web applications usually save information to a database.
When it comes to web-based software, there are a number of database systems from which to choose – MySQL, SQL Server, CouchDB, or PostgreSQL to name a few.
Like the Presentation Layer communications with the Application Layer and the Application Layer communicates with the Database Layer, the Database Layer communicates with the actual file system in order to save and retrieve data from the hard disk.
Yes, application architecture is a rich topic and each layer usually has teams dedicated to that specific component of the software. Still, I think it’s important for anyone doing any kind of development on the web to have a basic understanding of how this stuff is put together.
It could go a long way in helping to build your own custom projects.