This article was originally published on Technology.Info.
As part of our continuing strategy for growth, ITProPortal has joined forces with Technology.Info to help us bring you the very best coverage we possibly can.
The role of applications within business and consumer companies continues to grow. From new customer apps delivered via mobile devices to new Internet portals for media, finance, services or e-commerce, organisations have dramatically changed how they interact with users. New companies have disrupted established markets, as the rise of vendors like Netflix and Amazon have flourished at the expense of Blockbuster and HMV.
Scaling up, regardless of size
App availability is non-negotiable
Operating at this sort of scale puts tremendous pressure on traditional database and application architecture's ability to remain online all the time. Although it is possible to run business continuity programmes for this kind of system, any relational database element will be in a 'parent-child' relationship, where one instance controls the activity across the whole set-up. If anything happens to that individual instance, then the whole application will come crashing to a halt while a fail-over is carried out.
The response to this has been to design the new back-end systems so that they can run without single points of failure. For NoSQL platforms like Cassandra, each node within an instance will contain copies of the data held on others so any node can execute any transaction. This is a 'masterless' configuration, so the loss of any node does not affect the running of the overall application.
This in itself scales up regardless of geography. For companies that run global applications and services, multiple instances can be hosted around the world, with transaction data spread across all the sites. Even if a whole data centre or cloud instance is lost, the remaining sites can continue processing transactions with no impact on service. This is true 'continuous availability' compared to the relational world’s 'high availability' or 'disaster recovery' strategies.
For organisations that run in the cloud, this concept of running through any issue and not affect services is critical to their ability to compete. Netflix even developed its own Chaos Monkey application that randomly turns off sections of their applications during testing, so that their design and application development work can demonstrate true continuous availability.
Running in a hybrid world
Cloud computing has made a big impact on how companies run their IT going forward. From a database perspective, hosting instances in the cloud can be a great way to achieve greater scale and consistency of application performance compared to traditional on-premise installs. However, I think more companies will look at a hybrid approach to cloud.
For some data, it makes sense to use less expensive cloud services to host information. For others, issues like latency or performance may make it more appropriate to have that data local to the company on their own servers and storage. For NoSQL, the architecture of these databases lends well to hybrid models where on-premise and cloud instances can be mixed. Running Cassandra on platforms like Amazon Web Services or Google Compute Engine can be a useful option for achieving scale and availability for an application. Given the right platforms, it is also possible to run in a cloud-of-clouds environment, where the failure of one cloud instance or provider does not impact the rest of the application.
Alongside this, it is important to think about scaling up and down: not all applications will run at full utilisation all the time. Using cloud to supplement peak activity is one good option here. Cloud can also support those second tier applications within a company that don’t require on-premise equipment, while mission-critical ones get the full hybrid approach.
This combination of cloud, scale and availability will continue to affect how companies design, build and run their applications. The decisions made here will provide opportunities to compete in the market and maintain the levels of performance that customers and users have come to expect.