Editor’s Note: This post was written by Sunitha Muthukrishna, Program Manager on the Windows Azure Web Sites Team
Windows Azure Web Sites (WAWS) enables you to build highly scalable websites on Windows Azure. Here is an overview of the benefits of WAWS:
- Efficient resource utilization: As your customer base grows, the usage of your application increases as well. You can proactively scale your websites based on the traffic patterns to your website
- Usage based costing: Cost plays a key role in selecting the Cloud based strategyfor your needs. Azure websites has usage based model (Pay-as-you-Grow) and 6 or 12 month plans to choose from. To learn more , see Windows Azure Websites Pricing
- Faster time to market: You can focus on the application and not the infrastructure. This opens up more time to unleash the creativity and productivity of the developers in turn reducing the time to market for your application
These practices will help you make optimal use of the infrastructure offered Windows Azure websites and provide a high performing, reliable website for your end-users.
- Build a scalable architecture
Windows Azure Websites allows you to build a scalable solution on Azure, but it is critical that your website take full advantage of the scalable infrastructure provided by the service.
A few things you can do to design a scalable solution:
- Bottlenecks in the architecture can cause higher latency. You should identify all major bottlenecks in your current architecture which can be caused by various reasons for example bad application design, bandwidth restrictions. Refactor your application architecture to avoid them.
- Load test your website using different scale configurations (combination of Instance size and number of instances) to understand the right scale configuration under regular load. Various tools like Visual Studio, Apache Jmeter can be used to perform load tests.
- Use Web Analytic tools like Google Analytics or WebTrends to identify the traffic patterns and the average requests per second for your website.
- Setup auto-scaling to manage unexpected traffic peaks.See How to scale websites to learn more
- If your application uses a database tier, integrate a distributed caching solution such as Azure Cache service to improve performance
- Design the architecture to be resilient to failures
Although, WAWS offers a high SLA . For business continuity, it is important to understand the risk of service failures when using a cloud solution and identifying ways to reduce the impact during such an event.
Here are some must-do solutions to mitigate in such situations:
- Have an automated backup-and-restore strategy for your content by building your own tools with Windows Azure SDK or using third-party services like Cloud Cellar
- Setup redundant copies of your website on at least 2 datacenters and Load balance incoming traffic between these datacenters.
- Setup automatic failover capabilities when a service goes down in a datacenter using a Global traffic manager
- Setup Content delivery network (CDN) service along with your website to boost performance by caching content and provide a high availability of your website
- Remove dependency of any tightly coupled components/services you use with your WAWS website if possible.
For example, if your website uses a database and for some reason the database service is down at a given time causing a single point of failure in your architecture. The database here is a tightly couple component but cannot be removed from your architecture. In such scenarios:
- You must replicate your database across multiple datacenters and setup automated data sync across these databases to mitigate during a failover.
- You must design your application to be resilient during these situations
If you must have a dependent component, replication strategy can helpmake your architecture more robust.
- Design a risk-mitigation strategy before moving to the cloud to mitigate unexpected outages
- Create a staged environment and simulate failure scenarios by stopping your sites to evaluate how your website performs under failure
- Automate Infrastructure
There are a lot of operations involved outside the cloud solution which includes development, deployment and various other operations to successfully maintain your website. Automating these operations can make it easier to manage the shipping cycle for your application. All WAWS features can be accessed using WAWS REST API making it easier to automate.
Some of the key operations for managing your website:
- Deployments to the website :
You can use various deployment strategies like Web deploy, GIT, FTP etc. that can be easily automated to push out the content to your website(s) by building tools using Windows Azure SDK for the deployment tool of your preference.
- Test inproduction using Staged sites :
WAWS supports staged publishing that enables you to deploy updates to your staging version of the website and test it out in a production environment before updating your customer-facing website. See Staged Publishing on Windows Azure Web Sites to learn more.
- Enable diagnostic logging:
WAWS has built-in diagnostics to help you with debugging your application. There are two types of diagnostics:
- Site diagnostics: It allows you to enable detailed error logging, failed request Tracing and web server logging.
- Application diagnostics: It allows you to capture information produced by a web application.
See How to enable diagnostic logging for Windows Azure websites to learn more
- Enable monitoring:
WAWS supports monitoring functionality via the Monitor management page. You can setup alerts for various metrics like CPU Time, HTTP Client Errors, HTTP Server errors etc. to continuously monitor your website. See How to monitor your Windows Azure website to learn more.
WAWS platform complies with the key industry standards for security and reliability to provide our customers a secure platform but if your application has security vulnerabilities then it can make your architecture susceptible to an attack.
To build a secure solution on WAWS, you must follow secure coding practices when building your application to withstand an attack. See How to write secure code to learn more.