Modern Architecture

Posted on
The side of a highrise building with glass windows

Web development has undergone major shifts in the last 5-10 years, both structurally and technologically. The days when making a webpage meant hosting some HTML files on a server are largely long gone. As are the days of businesses employing a single web developer for the position of running an enterprise-level website, as mid-to-large scale companies now have internal development teams of at least a dozen engineers with various disciplines, or will more often use the resources of outside development shops that have the experience in producing high quality deliverables. The classic role of development as a part of IT is less relevant as web frameworks have taken on a larger scope, project management techniques have become redefined as creative processes, and development tools and resource usage have shifted radically.

For example, the hardware component in web hosting is nonexistent for any company with needs that are less than what Amazon Web Services can fulfill. Web frameworks play best with scalable servers these days, and hosting your own box is expensive, time consuming and requires expertise  in specific needs for web development. Code deployment through continuous integration platforms greatly reduces issues in your live environment, and for your internal QA team, allows the latest branch of code to be tested by users in virtual machines, as well as automated unit tests that execute whenever a developer checks in code. This is contingent on good source control. Source control, such as Git, not only gives developers the means to work in tandem on separate chunks of your web application, and the security of reverting bad changes, it also allows a team to follow best practices by having code that is reviewed prior to being merged into the main development branch by more experienced programmers. These are just the basics before any code is even written, but platform-as-a-Service vendors, such as Pantheon or AWS, offer solutions that trivialize the hard requirements for web development before web development starts. Cloud servers give infinite scalable resources for creating virtual machines that can handle QA or production instances, and are pre-configured for optimized performance. Some even have built-in versioning and continuous integration.

Of course, if web pages were still just HTML files in a document root of Apache, these would be significantly less important concerns for web developers. But that has not been the case for over a decade. Frameworks are king in web development. There are hundreds of them, covering server-side code, client-side code, unit testing, responsive sites for mobile and visual elements. But the main trend behind the most important ones is the architectural pattern of MVC. MVC comprises the separation and distinct use of three things that would have traditionally made up a single HTML file: your content or logic, your display, and the interaction between the user and the server. A controller is what a user would call when loading up any page on your site and sends the request to the model. The model retrieves the content based on the query and updates the view, which is what the actual HTML output that controls the site’s look and feel is run through. Each of these may be built on top of with other tools. Your model might retrieve or place content in a MySQL database. Your view might run through a templating engine that allows common components like a header and footer to be re-used across the site. Most MVC architected frameworks have run through common server-side stacks, such as LAMP (Linux, Apache, MySQL, PHP/Python), but more recent ones have found it more effective to off-load server resources to the client. Backbone, a Javascript-based framework for Node.js servers, creates lightweight MVC applications that allow client synchronization with the server and rely only on the browser’s Javascript library.

A step beyond MVC are content management systems. These encompass a number of applications, such as Drupal, Wordpress or Sharepoint. The basic idea is simply that the content of the site is stored in a database rather than in the view layer of a website. One advantage of this is that it better separates the structural layers of your website from the parts that should be easy to change. It could also allow you to take content loaded in one area with a particular look and feel and move it over to another area, just by having your model run a different SQL query. Over 60% of the web is not built on a content management system, however that number is falling year-by-year. Today, Drupal runs everything from most state and federal agency websites, to MSNBC, to the artist sites of every major recording label. Most of them were developed by experienced external contractors with teams of dozens of people working on these sites at any given time. However, the content can be manipulated and edited by internal employees with only the most basic skills required. This separation of concerns goes even a step further, as Drupal has the capability to have easy-to-install MVC add-ons called modules and themes. Modules essentially add more controllers that can interact with the data, such as a controller that can load a photo gallery, give users with appropriate permissions the ability to store comments, or modify another module in an eStore to add foreign currencies. Themes are simply the HTML, CSS and Javascript that the templating engine can load in to replace the default view and change the look and feel of your site. Theming and module development both require some coding ability, but to use any of the thousands of free modules and themes, a site builder in the Drupal-world can expect a pretty plug-and-play experience 99% of the time. With Drupal being the largest open-source project in the world with 10 times as many contributors as the Linux kernel, the hardest part of being a Drupal site builder is usually just knowing which things to pick to best solve your problem.

These changes to process and production have become commonplace in the last 10 years, but the rate of adoption, reimplementation and change has only been increasing. It may seem like web developers currently inhabit a realm of chaos, where the fundamental principles of the universe are constantly uprooted. However, this is only a sign of the maturity of web development as it becomes its own separate discipline, divorced from usual business needs. Web development exists in a place of open information and shared knowledge, where the concepts that were adopted last year are only the beginning of what can be improved on. The most frightening and thrilling part of web development is that these fundamental changes will never stop coming.

Photo by Beau Considine