Formulating successful strategy for cloud development starts with technical and business objectives. This post outlines the problem areas that must address while building your cloud application. Each problem area outlines the challenges and solution as well.
Availability – defines proportion of the time your system is functional and working. An available application should consider the availability of infrastructure and dependent services.
This usually measured as percentage of uptime. Building a high-availability solution in cloud is challenging. Build an automotive process for a failure by assuming every component in your system will fail at some point. Availability strategy should include disaster recovery plan to recognize the failures quickly. The failure can be with technology, such as a downed service or a natural disaster, such as storm or power outage.
Addressing a server(s) failure begins with designing stateless applications that are resilient through services. Examples:
· Spread your application servers across the regions. Cloud providers refer them as zones or regions. Region contains set of zones which actually having your servers.
Image credit – http://www.rightscale.com/
Azure platform as service (PaaS) availability features
Microsoft Azure (cloud platform) has built-in features that support above scenario and addresses the recovery from local failures and region-wide service disruptions.
Azure has Fabric controller which serves as traffic manager. It monitors the condition of the Azure compute instances, when it detects a failure it automatically enforces the SLAs.
Each fault domain has Azure instances which basically a different hardware rack in the same region. The above solution reduces the local hardware failure. Azure automatically manages the allocation of fault domains that are allocated to your application worker and web roles. High availability embedded in azure storage that maintains the three replicas of blob, table and queue data.
What if I don’t use Traffic manager in above model?
Your application is limited to a single region for your resources and increases the latency to users that are not closed to the chosen region.
Azure limitations on storage and replication – Azure sql Database data is replicated synchronously with in the region. These replicas are not point-in-time backups. You cannot access the database replicas until Microsoft chooses to fail over to the alternate site.
Azure Infrastructure as service (IaaS) availability features
IaaS availability model uses availability sets which contain virtual machines. Availability set is similar to fault domain positions the virtual machines to prevent localized hardware faults.
In this model SQL server is installed and running on virtual machines. The replicas here are point-in-time backups. Total hosting cost is high in this model compared to PaaS. Though you prepared for temporary and large-scale failures, it is better to rehearse these failures and test the recovery of databases and applications. This requires lots of planning, time allocation and budget.