February 10, 2011 1 Comment
Over the last couple of years, Cloud Computing has risen to prominence as the single most disruptive technology in the enterprise software landscape. Unfortunately the word “Cloud” has become one of the most confused terms in IT terminology. It has been applied to almost any technology/software that is not hosted in your data center. There are also many flavors of Cloud, that it is almost impossible to get a clear idea of what the Cloud means from a platform and application development perspective. In this post lets look at one such Cloud initiative, Microsoft’s Windows Azure.
Microsoft has been promoting Windows Azure, its platform as a service (PaaS) solution for enterprises to move their critical business applications to the cloud. To describe Windows Azure it is necessary to take a step back and analyze the various steps you would take if you are developing a Line of Business application to run on-premise.
Step 1: Choosing the OS
To develop an application you need an Operating System for your application to run on. This OS needs to be scalable, flexible, extensible and secure and enable you to develop and deploy applications that leverage multiple programming platforms like .NET, Java, Python, Ruby etc. Traditionally Windows or Linux had filled this void for on-premise applications. If you decide to move to the Cloud, you still need an Operating system to run your applications. Microsoft’s answer to this is Windows Azure. Azure is the OS that enables you to run and deploy applications on the cloud. When you choose the Windows Azure platform you implicitly choose the Windows Azure OS to run your application. The Azure OS, which is built on Windows Server 2008, is designed for scalability and Microsoft manages this infrastructure so that you never have to worry about patching the OS, scaling it to multiple servers etc.
Step 2: Choosing your Data Storage
Any enterprise application needs to store data of some form. In most cases you have structured data stored in databases (like Oracle and SQL) and some unstructured data like images, videos, files etc. The Azure platform provides you solutions for both these scenarios. To store structured data when your application is running on the cloud you will need a relational database and Microsoft’s answer is SQL Azure. To keep it simple, consider SQL Azure as SQL Server hosted by Microsoft on the cloud.
To store unstructured data on the cloud, Microsoft provides the Windows Azure Content Delivery Network (CDN) and the Windows Azure Storage component. With CDN, files can be stored in one location and Windows Azure automatically caches and stores a copy of the file close to the user’s network. So if you have someone in Europe accessing a website that displays a video, the video is automatically delivered from a location close to the user. Windows Azure Storage allows you to store files on the cloud as well without the benefits of CDN.
Step 3: Data Integration
Almost every business application needs to integrate with external applications. If you ran every application on premise this task is easier. However when you run an application on Microsoft’s servers you need a way to consume external data that may be running on-premise. Microsoft solves this integration problem using its Windows Azure App Fabric solution. The Windows Azure App Fabric allows you to integrate data from anywhere using a service oriented model. With the App Fabric you can consume Cloud data into your on-premise application or consume your on-premise data into your cloud application. The App Fabric uses standards based Web Services model for data integration.
Step 4: The Development Environment
Now you have decided on the OS (Windows Azure), finalized the data storage(SQL Azure) and have identified the integration points(Windows Azure App Fabric) for your application. The next step is to go build the application. Windows Azure’s Cloud SDK integrates with Visual Studio and allows your developers to build solutions using familiar tools. The toolset promotes interoperability and the SDK provides samples for developing solutions even on non .NET languages like Python or Java. The SDK also provides a local environment for users to test their cloud applications.
Step 5: Deployment and Testing
Once your application development is complete, you will need to test and deploy this to the cloud for your end users. Windows Azure provides a one-click deployment option from Visual Studio to deploy your application to the Cloud. There is a separate Staging environment that you can leverage to conduct user acceptance testing before going live with your application.
As you can see, the approach to application development for the Cloud is similar to the steps you would take for application development on premise. The confusion comes from applying the word “Azure” to every component. So here is a short guide
Windows Azure – The OS that you never have to worry about
SQL Azure – SQL Server on the Cloud
App Fabric – The web services/integration component
Azure Storage – the Storage on the cloud for unstructured data
Azure SDK – Your development tools