Key Concepts Associated with Windows Azure Development
As a developer first looking at diving into Windows Azure Development it is important that you are familiar with a few concepts.
Windows Azure is for Everyone
When adopting Windows Azure as a development platform people are often concerned about having to learn a new development environment and language. In an effort to embrace the open nature of software development and providing the developer with choice Windows Azure applications can be written in many languages including .NET, PHP and Java. Eclipse and Visual Studio have additional feature for developing on the Windows Azure platform but other IDE’s can also be used including our favourite Notepad.
Developing for Scale
When creating a scalable application you can build it to scale horizontally or vertically. Vertically scaling is when larger machines are put in place to handle increases in load. In general this is typically the easier method of development but has the downside of being more expensive from a hardware point of view with the larger machine costing in proportionately more than their smaller counter parts and being limited to the largest machines available. Horizontally scaling is when additional machines are put in place (ex. a Web Farm) each doing its part to handle the load. Horizontal scaling tends to have a linear cost when using standardized machines but it includes several development challenges. Windows Azure’s design targets horizontal scaling and applications should be architected to take advantage of it.
In an ideal scenario each machine should be able to sit behind a load balancer without session maintained. This means that session specific details should not be stored locally on the machine such as the hard drive instead it should be stored in a centralized location that all of the servers can access.
In most scenarios synchronous or blocking operations directly oppose high scalability and flexibility. Creating loosely coupled architectures that are asynchronous are very important when leveraging Windows Azure and can be accomplished using Azure Queues or other similar structure.
Although there are many other considerations when developing highly scalable applications those are some of the big ones that should always be considered.
When looking at Windows Azure features they are typically broken down into 3 large buckets.
1) Windows Azure – Highly scalable compute and storage often used to run background processing and application interfaces such as ASP.NET.
2) Microsoft SQL Azure – The relational database of choice on the Windows Azure platform. This will seem very familiar to any DBA that leverages Microsoft SQL Server 2008 R2.
3) Windows Azure AppFabric – Middleware components that can be used to create highly scalable application that can exist across geographic and security boundaries. An example is when the Windows Azure Service Bus is used to reach from Windows Azure data centres and pull information from an on premises accounting system (spanning firewalls etc.).
These are some of the core pieces of information that you should keep in mind whenever dealing with anything related to Windows Azure. Keeping these in mind while reviewing the rest of these blogs will be helpful.