Choosing an architecture for HA & DR requirements

This section covers the following topics:

  • Understanding your Business Continuity Requirements

  • Understanding Scalability requirements

Understanding your Business Continuity Requirements

The ability of a business to resist the downtime and to continue its functioning and operations normally with zero or minimum interruption is known as business continuity. The main goal is to provide zero downtime and 100% uptime. It also considers how to keep the business as a whole operating.

To achieve business continuity, a collection of services of the system environment is needed which includes the software, hardware, and documentation of relevant procedures, its implementation, and regular practice. The business continuity solution must address the data, the operational environment, the applications, the application-hosting environment, and the end-user interface. All must be available to deliver a good, complete business continuity solution.

Business continuity includes High Availability (HA) and Disaster Recovery (DR). HA focuses on eliminating Single Point of Failure (SPoF) by providing a fully automated failover to a backup system. DR preserves the continuity of service after a disruptive event such as a fire or earthquake. The purpose of DR is to restore access to technological assets like data and applications. It aims to restore as much as possible in the minimum amount of time.

Understanding Scalability requirements

Scalability simply refers to the ability of an application or a system to handle a huge volume of workload or expand in response to an increased demand for database access, processing, networking, or other system resources. A scalable system is one that can handle increasing numbers of requests without adversely affecting response time and throughput. The web application is said to be scalable if by adding more hardware resources the application can linearly take more requests than before.
There are two ways of achieving this:

  • Vertical Scaling

  • Horizontal Scaling

Vertical Scaling

The growth of computational power within one operating environment is called vertical scaling. Vertical scaling refers to adding more computing resources (CPU/RAM/DISK) to your server as on-demand. One of the most common examples of Virtual Scaling is to buy expensive hardware and use it as a Virtual Machine hypervisor (VMWare ESX). However, even after using virtualization, whenever an improved performance is targeted, the risk for downtimes with it is much higher than using horizontal scaling.

Horizontal Scaling

Scaling horizontally refers to adding more physical machines to your server or database. It is about adding more nodes in the cluster, reducing the responsibilities of each member node, and providing additional end-points for client connections. Organizations prefer to scale horizontally to increase I/O concurrency and reduce the load on existing nodes.