This post attempts to explain the Microsoft Azure platform to someone who would like to have a quick overview with a little detail to whet their appetite for the platform. Simply put, Windows Azure is a cloud operating Software as a Service (SaaS). In Practice, Windows Azure allows us to store data and connect applications just like we do today. But, at scale, on the internet.
Why Migrate Applications to Azure?
To answer that, let’s take a look at what it takes to run an application today. We need:
- To have a server which contains an Operating System (OS)
- Some storage
- A database system
- A network
- Some way to control access
- To be able to scale our application for peak loads
- All of which will most likely require some service packs or upgrades
What are the most important tenants of hosting an application? The utility Reliability – Scalability – Availability
By using Azure, you may focus on adding business value and key features instead of worrying about setting up, managing, or scaling the infrastructure. Everything in the cloud is taken care of by Windows Azure, even the Utility’s.
Components of Microsoft Azure
Components of the Azure platform are as follows (all will be discussed in more detail later in this post):
Storage Service know as SQL Azure
A relational database in the cloud built on SQL Server technology
SQL Azure allows you to manage data in a reliable and scalable way
Allows you to connect applications (either cloud to cloud or Cloud to local) without having to code all of the communication
Access Control Service
Allows you to provide access to your cloud resources to people outside of your network without losing control of how those user are accesses your application
Why Not Have a Local Hosting Company Take Care of Your Application?
Well, you could. But, how are you going to give services hosted in the data center access to an Order Entry (OE) system hosted on your network? Your network most likely has a firewall. This firewall protects you from malicious attacks but also will prevent the communication from the services at your hosting provider to your OE system.
You could open a hole in your firewall to enable this communication but most network managers will not like this approach due to the risk. You could create a VPN from your network to the hosting site but these VPNs are difficult to set up and maintain and are not very flexible.
By hosting your application in Windows Azure, you have the ability to connect your application to the App Fabric (the Service Bus and Access Control Service) which handles all connection, communication, and authentication between applications and services. This allows you to maintain your current investment in local applications as well as taking benefits of the cloud.
Components of Microsoft Azure
Microsoft Azure storage allows your applications whether running in Windows Azure or locally at your data center to treat data as an inexhaustible resource. There are 3 types of storage in SQL Azure
- Blob storage
- This may be thought of as the My Document folder on your computer
- You may store any size or type of file
- Unlike your My Documents folder, the data in Blob Storage is replicated to ensure data is not compromised or lost. 3 copies of your data is maintained to ensure that you experience no data loss
- Table Storage
- This is not relational data but a way to store data like you do on a spreadsheet
- The data in Table Storage is semi-structured similar to the way you may enter data onto a spreadsheet
- The data in Table Storage does not enforced schema, again, like entering data into a spreadsheet. You may enter a date as 12/12/09, 12/12/2009, or Dec. 12, 2009, Table storage does not care
- You have the ability to perform simple queries but you do not have the ability to create joins between different tables
- Queue storage
- Allows the passing of messages between components of an application
- Using Queue Storage is reliable way to ensure that information we put into the queue is acted upon by at least 1 application.
- To explain in more detail:
- Let’s say we have a web application that accepts orders from a customer. After this order is places, it would be sent to the queue to be processed.
- An application (called a worker role) would be looking or “listening” to the queue for something to show up.
- Once the order is placed into the queue, the worker role picks up the order and does what it is supposed to do. Let’s say the worker role picks up the order, transforms the data into a format that the Order Entry system understands and sends the information to our back end Order entry system.
- If a worker role fails to complete its task, the message will reappear in the queue so that another worker role can pick up the message and process it.
- Now you have the ability to know that all orders that have been placed are going to be processed because nothing is hanging around in the order entry queue.
- All of this work allows the developer to create a front end application that responds quickly to user input and offloads long running tasks to reliable back end processes.
The Service Bus provides an accessible infrastructure for communication, distribution, and application publishing. Your applications can be exposed providing connectivity options that would otherwise be difficult or impossible to reach.
I like to think of the Service Bus as a system of highways. On the highway we have the road, traffic, pot holes, road construction and exits. The service bus will guide our user request from the application over the road, around pot holes, route them around road construction and lead the request to the correct exit which is our service. The Service bus is directing all of the traffic using internet communication standards which we really don’t need to worry much about.
Access Control Service
You would like to give partners, suppliers, and customers access to pieces of your Order Entry system. How are we going to do this? There are several ways, none easy. We could:
- Create user IDs for all requested users outside of your network
- This will not make your network manager happy
- The cost of provisioning users with account data is one of the more expensive manual activities in terms of people, time and IT budget. While tools can automate many aspects of user provisioning, the fundamental issue remains: A company takes on user-ownership costs when provisioning account data. While a company may need to take on this cost for employees, this approach may not be correct when dealing with external identities that are being provisioned in the company’s internal systems
- Users having to know a new user id/password combination, just what everyone needs another password to remember
- Create a trust relationship between your network and other required networks
- This is a security nightmare and difficult to configure and maintain, especially for two companies who so not share a fiduciary relationship
- This does not work for Joe user at home, he does not have a domain to trust
- Create a Federated Identity Agreement (FIA)
- These agreements are difficult to configure and maintain
Enter the Access Control Service. The Access Control Service enables external users to connect to your cloud resources using their own identities while still giving you fine grained control over what these users may access.
As an example, you have a User ID system in your organization. Your partner had a User ID system. You have an order entry system which you would like to grant them access to certain pieces. Using the Access Control Service, we could have your ID systems agree that they will trust each other and you can grant permissions to the resources each user requires. Even if the customer is small and does not have a large IT shop with expert resources to set up and configure a FIA.
You do not have to build these services; you just call them from within the application. These services are standards based so they will interoperate with any standards based platform.
The Developer Experience
All components of the Windows Azure platform have been packaged together into an SDK that you may download for free and run on your desktop. The developer experience is maintained in the familiar Visual Studio integrated development environment (IDE) once the SDK is installed on your desktop. This SDK allow you to develop and test an application locally before being deployed to the cloud.
Since you are a seasoned IT professional and have an idea of the application and infrastructure layers of Windows Azure, your next question will be what about Operation Activities.
Windows Azure has you covered.
- Deployment is performed by easy one click deployment of your application from Visual Studio
- Monitoring of your applications and services are enabled
- You will have the ability to analyze your application to determine requirements for future versions
- Automatic scaling of your application is performed by the platform
How do I pay for Windows Azure?
Before we discuss how we pay for Windows Azure, let’s look at how we pay for a traditionally hosted application.
When determining what hardware (servers and storage) you will need, you must determine peak load. The best example I have heard was at the 2009 PDC, regarding an event ticket site. Think about this ticket site: load is pretty constant most of the time. Then, bam! a big event's tickets are released to sell. The load on the site goes from 1 transaction a second with 5 concurrent users to 2,000 transaction a second with 10,000 concurrent users. In a traditional hosted scenario, the ticket site would have to pay for that peak load ability all of the time if they wanted to support the peak loads.
Do you want to pay for peak all the time? Microsoft has adopted the model much like an electric company, pay for what you need only when you use it.
Just as electricity use increases dramatically during the summer in Florida, a homeowner would not want to pay for the same usage in October as they would have to pay in August.
Let’s say that you have an online billing application. You have a steady stream of users for your application for most of the month, but when you release your statements at the first of the month, usage will peak. Let’s pay for only what we use.
It does not matter the size of your company, you can take advantage of Windows Azure today.