Will my business operations come to a standstill, if the Cloud is not available?
Cloud technologies being fairly nascent and the space evolving rapidly with the emergence of new players and re-positioning of leading platform players honing their products for the cloud has given way for several new and innovative opportunities to be explored but then its rapid adoption is being hindered due to several concerns primarily revolving around data privacy, loss of control, reliability etc... I shall touch upon reliability here.Read on..
The evolution of technologies such as the Internet, SOA and Virtualization which have laid the cornerstone for the Cloud, read more here, provides the following key benefits:
- Low Cost
- Global Scale
- Better Agility
From a Technical standpoint, requirements could be as listed below:
- Critical systems can still go on in spite of a network outage to the cloud
- Client does not lose ability to execute even if cloud is down. Cloud is used for scalability and performance. But if required customer can turn off and roll back immediately. Get flexibility and benefit of cloud but don’t lose control.
- No single point of failure
- Access to near real time information at all times
From a Business standpoint, requirements could be as listed below:
- What if the Cloud is not available tomorrow, will my business stop functioning?
- Information available to me from my systems should be near real time if not real time.
I would attempt to address this problem statement by considering the Azure technology stack available from Microsoft today. And here are my thoughts behind developing, an Architecture for the cloud which is both reliable as well as resilient,
- Code deployed on the Windows Azure platform will be on .NET and which is portable to run both on the cloud as well as on-premise AS-IS. Code can be executed on any platform that has the .Net Framework installed. The code you build for the cloud will not be locked-in.
- Service based architecture will inadvertently address the integration issue. Hosting the service endpoints on the Azure .NET Services, provides for location transparency enabling service clients to be independent of the physical location of services. In our case a client request can be transparently routed either to the cloud service or in case of failure to an On-Premise instance of the running service hence switch from active to passive link rather seamless for clients accessing the cloud.
- In order to address the outage or unavailability issue, the Enterprise can host a failover site with a similar architecture running in an Enterprise Disaster Recovery data center. Although the Cloud by nature is designed to be available at all times, in times of eventualities when the Cloud itself goes down, a Low cost DR site or a Hosted Infrastructure will have to be kept alive with the “Lights On”
- Cloud storage can also be a single point of failure. We can address that in this scenario by using a 2-way sync / replication approaches using either SQL Server or the Microsoft Sync Framework
Below is a figure which depicts my proposed Reliable and Resilient architecture model that leverages the Cloud as well as the On-Premise world, with benefits realized by this design.
The application components get published on the cloud at the same time deployed to the data center during the Go-Live. A redundant set of binaries would exist which are duplicated on the cloud as well as in the data center. The binaries in the data center will seldom be used.
As can be seen, the additional DR site may marginally add to the overall TCO of an enterprise. However enterprises will have to weigh the costs with respect to the criticality of having an application available guaranteed 99.999% of the time to keep the business processes operational at all times.
Alternatively desktop applications can function in the absence of a cloud by providing offline storage and synchronization capabilities. This design is especially relevant in the following scenarios:
a. Augment to the functionality of on-premise legacy applications by leveraging the cloud
b. Applications which have intermittent connectivity to the cloud
c. Software + Services scenarios
More on this design pattern covered in my next blog.