Developing A New Web-Based System? Have You Considered
Over the last couple of months, we have been taking a closer look at the different types of development environment, and outlining the different areas that should always be considered when starting out on a new development project. As things stand we have ruminated on the consideration points for both embedded and desktop application developments, so we thought that we would bring these thoughts to a close with a little investigation into the realm of Web-Based systems.
How will you maintain security?
In a world where the technology available is in a constant state of advancement, the level of online threats and susceptibility will only continue to grow. As a result, the security of any web based system is arguably one of the most important areas to consider during the development process to prevent the disclosure or even the loss of confidential information. The security of the system has to be considered throughout the whole development lifecycle and thoroughly tested on completion. Security will also need to be considered as part of the ongoing maintenance of the system, to ensure that the system remains robust to new and emerging threats.
Do you need a framework?
It isn’t essential to use a framework when developing web based systems, however they can significantly speed up and simplify development. Frameworks can also help with creating a secure system, although regular security patching is required as off the shelf frameworks can be subject to high profile vulnerabilities. The most suitable framework for each development depends on:
The target devices, i.e. mobile support, desktop support, tablet support.
The type of content, i.e. pages of information, versus more dynamic content such as graphing and data analysis with dashboards etc.
The future maintenance and use, i.e. how the site is populated with data/information.
Will you need to scale to increase or reduce demand?
In a select number of cases a system can have a very well-known user base that is unlikely to change during the course of the system’s life. In these cases, a system and its hosting platform can be designed that meets this in a cost effective way. However, for other systems it may be difficult to predict what the demand will be and how it will change with the life system or you may know that the user base or demand on system resources is going to increase dramatically with time. In these cases, the scalability of the system has to be considered. Failure to do so could result in a degraded user experience or even worse loss of service. Using a scalable design and platform, such as a cloud service, enables the system resources to scale to match the demand as it changes rather than having to re-platform or make significant architectural changes during the operational life of the system.
What is the best platform?
As with many aspects of software development there is no quick and easy answer to this question. Your choice of platform will very much depend on a number of different factors, such as:
How much you think the system is likely to need to scale. Use of a cloud based platform such as Amazon AWS or Microsoft Azure, offer quick and easy solutions to scaling, allowing the available bandwidth, performance and capacity of the web based system to be quickly adjusted to meet the demand. This allows more cost effective hosting, and confidence that if demand significantly increases the resources can be increase to match so that the users do not experience a degrade in system performance.
Security Requirements of the data. Use of a cloud system may not be appropriate if the data being stored has to be kept within a certain geographical area (kept on-site) or meet strict data security standards. Use of a dedicated server(s) may be more appropriate in this case as it is then easier to define the location and management of the data and its access.
Did you prepare for failure?
Losing data is never an ideal position to find yourself in, and when it comes to web based systems the loss of just a single server can have serious repercussions. A frequent solution to this problem is to create multiple, or redundant, copies of any data at risk of being lost to be stored on hardware ideally in a separate geographical location. This assures that even in the event of catastrophes such as flooding and fire at the main data centre, your data is recoverable. Consideration should also be given for introducing redundancies to services as a way to secure against the failure of a single node. Running multiple copies of a service simultaneously provides the capability for a system to failover to the ‘healthy’ service should the other fail or degrade over time.