There are a number of benefits in deploying an application to the cloud, but also some challenges that come with it. Added distance and components between the business users and applications in the cloud can cause performance and availability challenges.
- Increased latency and reduced bandwidth between client and services deployed to the cloud can cause performance issues in the application. Changes to the application may be necessary and measures may
- Shared environment and lack of control over the connectivity between servers in the cloud could mean connections between servers do not meet the needs of the application design. Some applications require highly specialized hardware as part of communication requirements between systems where even an additional 1/10th of (ms) of additional latency can have significant impact on performance.
Utilize cloud features and infrastructure
Azure ExpressRoute enables you to create private connections between Azure datacenters and infrastructure that's on your premises or in a colocation environment. ExpressRoute connections do not go over the public Internet, and offer more reliability, faster speeds, lower latencies and higher security than typical connections over the Internet.
Content Delivery Network (CDN) and near-site application caches and acceleration.
Internal networking features like VNET can also be used to reduce latency between systems within the Azure Cloud environment.
Design considerations and changes to the application may be necessary to accommodate increased latency between on-premises clients/services, and cloud deployed services.
Reduce chattiness across higher latency networks. Communications between some existing applications may have been implemented with a different set of assumptions, and may need to be re-designed and optimized for increases latency between clients and servers.
Reduce the amount of data over the network through caching of data that may be redundant across requests and/or users in the enterprise. This can be incorporated in the client application and/or an on-premises appliance or server.
Content Deliver Networks (CDN) can be used to bring some of the application dependencies closer to the site. Files are cached around the world for redundancy and availability.
Protocol proxy translation and IP application accelerators. Sometimes the protocol necessary for communicating with a server in the cloud may not be the most suitable over a lower bandwidth higher latency connection and a proxy place in the cloud in between can be used to simply proxy requests to one more suitable for this type of connectivity.
Asynchronous or background requests in the application.
Given the additional distance and components between the client and the solution deployed in the cloud there are also potentially more things to fail. Generally, availability is addressed through redundancy.
Design on-premises clients or servers to temporarily work disconnected. Allows the business to continue operating with either all or a limited set of mission critical features necessary to maintain business continuity in the event of a network failure. A 99.99 available service is not that useful with a 99.9 network connection.
Redundant carrier connections and networking components.
Highly Available Cloud Solutions
Design and build the application with redundant components or services.
Fault Domain Isolation reduces the chances that a hardware failure will interrupt service. Highly available services; Azure Storage, Service Bus, SQL Database.
Multi Data Center Deployment
Applications can be deployed to multiple data centers for even higher levels of availability. A number of deployment topologies across multiple data centers with trade-offs in cost, complexity, and availability.
Azure features to help support this Multi-DC
Azure Storage BLOBs, Tables, and Queues are replicated to different data center with read access to the replica.
For Microsoft Azure SQL Database Premium databases, Active Geo-Replication can be used to create geographically redundant replicas of the source databases. In addition these active secondary databases can be used for read workloads.
Traffic Manager can redirect traffic to services in another data center in the event of a failure.
Guidance for Resilient Cloud Architectures
Cloud Design Patterns
Azure SQL Database Business Continuity
Multiple Datacenter Deployment Guidance
Resiliency Patterns and Guidance
Windows Azure Business Continuity Technical Guidance
Disaster Recovery and High Availability for Azure Applications
Azure SQL Database Business Continuity