Hints for building an effective website support system

Non-lyric intro

Website support should adhere to the following frequent requirements:

  • minimum downtime of the working site during functional updates or bug fixes;
  • complete history of all edits;
  • ability to track the user who have made the changes.

The proposed architecture below ensures the fulfillment of these requirements to a certain extent.

Description

The supported project should consist of at least three entirely independent from each other websites. They should have no common data base, nor coding, nor any other shared resources.

A general repository of the version control system should be the only common thing among these three websites.

Production environment

All updates for the main website are made through the version control system, such as git for example. Ideally, all possibilities of altering the main website except git should be prohibited on both ends – administrative and technical. It’s only acceptable to run the website through the script of the database structures after updating it. The main website should be updated only after a successful update of the pre-production website.

Pre-production environment

Pre-production website is used whenever an update for the main website is needed prior to any changes on the latter one:

  • Firstly, a full copy of the actual version of the main website is made. In case you have any third-party services used on the main website, it’s highly recommended to establish them for the pre-production website as well. Ideally, it should be a 100% duplicate of the official website. 
  • Secondly, a complete version of an update is first applied to a pre-production website. At the same time, all procedures should be 100% identical.
  • Thirdly, you need to run a complete audit of the pre-production website. In case of bugs or errors, you need to track down their causes and fix them on the development website. Afterwards, the entire update process should be repeated. 

Development environment

Development website is used for testing, improvements and experimenting. An access to this website can be given to all web developers and tech staff members. 

All edits should go through the version control system, the usage of which is a different big topic that goes beyond the purpose of this article. It’s important to note though, that all edits of code and/or database structure should end up in the repository. Furthermore, the format of these edits should be relevant for further updating process.

Development-2,3,N

Sometimes it’s worth having several development websites whenever you are building a new comprehensive functionality. In this case, all development data should be stored in the repository in a separate branch. Once ready, you can merge this separate branch with the actual one.

Important notes

The main and pre-production websites can be stored on the same host. This simple solution makes a process of duplicating pre-production site a lot faster and easier. 

At the same time, the development websites should be located on different hosts and preferably on different servers. It’s better to stay on the safe side considering their totally unpredictable nature. 

Ideally, the repository of the version control system should be located on a third remote server.