10000 Foot View of Web Application Architecture

This is a very high level view of web application architecture.

Most web applications have the following parts:

1. A web server. This is a system that sits and waits for requests from users or other systems.

2. A client. This is something the end-user interacts with. It may be as simple as a series of HTML pages with links, or it may be a rich browser-based application like GMail or Facebook, or it may be a “fat client” application running on Android, iOS, Windows, Mac, or Linux.

3. Persistent storage. This might be a database, or it might be a directory of files, or both. Many products make use of multiple persistent storage systems. A common arrangement is for the web server software and client to be stored in files and for user data to be stored in a database.

All of these parts have to be deployed, updated, and they have to run somewhere.

The web server runs on a system that is accessible to the client. Web servers for use by the general public typically run in hosting centers that are open to the whole Internet. Web servers for use only by users associated with a business or organization might run on a private local area network.

The client may be anywhere, including on the same machine as the web server. For browser-based applications, the client is not the browser, but the pages that are sent by the server to the browser. The browser can be viewed as an operating environment that is able to “render” the pages and run the Javascript or other client-side interactive code that is included in the pages.

The persistent storage typically runs in the same place as the web server, or someplace close by. Persistent storage systems come in two major flavors, databases and file systems. Databases have advantages relating to ease of manipulation of the data, for instance using SQL statements to select data and make calculations based on it. File systems are simpler and more flexible, but doing any kind of data manipulation of data elements spread across files can be difficult and slow.

Typically, when developing a web server for serving up web pages (as opposed to a web service that only returns data), you will be making changes for all three major components. It is important when making changes to know which of these components you are operating on. When possible, the code for each of these major components should be kept separate, so you can tell where you are as you go.

Leave a comment