Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / Hosted-services / Azure

Taking Application to Azure: Choose The Best Compute Hosting Option

4.95/5 (14 votes)
3 Jun 2015CPOL10 min read 14.9K  
How to choose the best compute hosting option

This article is an entry in our Microsoft Azure IoT Contest. Articles in this section are not required to be full articles so care should be taken when voting.

1. Introduction

If we talk about recent studies, there is a remarkable growth in Microsoft Azure’s revenue, making it the fastest growing cloud vendor, coming in second in size to the market leader. A large number of companies have already shifted their applications to Azure or are in the process of doing so.

There are many ways to host the application on Azure: Website, Cloud Service, Virtual Machine, etc. Each one provides a different set of services. Which one you choose depends on exactly what you’re trying to do with the particular application within the Azure infrastructure.

In this thought paper, I’ll be taking a case study of a fictitious company named EduMagica Corp., which wants to migrate one of its applications to the Azure. We will look to select the best way to host their application. I will describe the typical multistep migration process usually taken by a company which wants to get the benefit of the cloud and evaluate that as well. I will present the rationale for these steps as well.

2. EduMagica Corp.’s Case Study

2.1. The EduMagica Corp.’s EduMagicaStudio

EduMagica Corp. is a worldwide publisher of educational contents with around 10,000 employees across the globe; they deal in publishing paper books and developing online digital learning contents.

They have an application named EduMagicaStudio. The application was primarily designed to allow EduMagica Corp. publishing staff to create, edit and deploy online and offline digital products. Utilizing this online application, digital content can be produced by using authoring screen without any technical expertise. Once authoring gets completed, product can be published by the same application and would be ready for use. There could be several creators who would be authoring different products and might publish the products at the same time.

In short, EduMagicaStudio can be logically divided into two parts:

  1. Web application having authoring interface where course skeleton and course contents like tests, quizzes, animations, video player, games can be created by choosing the appropriate template and by uploading the assets like audio, video and image files.
  2. Background application which starts its work just after course authoring has been completed and marked for publishing. This background application publishes all such courses and those courses can be sold to different clients who are using a course player application developed by EduMagica Corp. I would not be discussing player application in any detail henceforth.

2.2. What EduMagica Corp. Wants to Achieve?

  1. At present, deploying new on-premise application takes too long; all procurement tasks, hardware arrangements, network configurations, etc. is very tedious process. EduMagica Corp. wants it rapid and easy.
  2. Get rid of underutilized infrastructure, which can’t be used for new applications..
  3. Monitoring of all parts of the application, including less critical ones, so that end-to-end availability is maintained all the time. .
  4. EduMagica Corp. wants to focus on the applications, which is its area of expertise, and not on the infrastructure.
  5. EduMagica Corp. wants to improve the experience of all users of its applications.
  6. The work of the course creators align with school sessions. So publishing (which is a resource intensive activity) happens at the beginning of the session and resources get overused, while it is less frequent during rest of the year. EduMagica Corp. wants better responsiveness during peak periods, without spending money to acquire infrastructure at the peak level of usage (because they would be idle for rest of the year)..

2.3. EduMagicaStudio’s On – Premises Computing Architecture

The image provided below depicts the high level application architecture of the On-Premise hosted EduMagica Studio before moving to the cloud.

tp1_1

3. Assessing Different Cloud Hosting Options

Anyone who is going to deploy their application on cloud should know and assess the different options, concepts and paradigm of cloud. Developers and solution designers at EduMagica Corp. asked 2 questions.

3.1. What are the Different Runtime Platforms Available to Me?

3.1.1. Infrastructure as a Service (IaaS)

I want to just rent the infrastructure. I would be responsible for providing and installing the operating system and software, as well as maintaining it (such as installing operating system and services updates, and upgrading to new versions). Cloud should just provide me hardware (the server) and the associated infrastructure and connectivity. If this is the case, I need Virtual Machines. I do not want to change my program to leverage other facilities of cloud at programming level. I am planning to shift my on premise application to cloud as it is.

3.1.2. Platform as a Service (PaaS)

I want to rent a ready-to-use platform for my application, including supporting frameworks like .NET Framework. . I would be responsible only for providing and installing EduMagicaStudio application, and maintaining it (such as fixing bugs and upgrading to a new version).

In this case, I would proceed to host my application suite as either Azure website or would use other cloud services like Web Role or Worker Role on the basis of some other factors.

3.1.3. Software as a Service (SaaS)

I am ready to forget about my application and use someone else’s. Does someone have a similar application? If yes, Can I take that service on rent? I’ll pay the rent for just the amount of service that I use.

3.2. What are Other Facilities Available to Me?

  1. Data Storage Facilities
  2. Security, Monitoring, and Management Capabilities
  3. Service Level Agreements
  4. Ancillary services and features like Windows Azure Caching & Content Delivery Network, etc.

4. Cloud Hosted Application Architecture

After assessing the different cloud hosting options, the image provided below depicts the evolved high level application architecture of the EduMagica Studio application, hosted on cloud, after performing the multistep migration described in the next section.

tp1_2

5. Typical Multistep Migration Plan of EduMagica Corp.

Following is the typical Multistep plan adopted by such a company which has already developed the application and is exploring the cloud capabilities for the first time. Hence, EduMagica Corp. took the following steps to deploy the application.

5.1. Step 1: Initially, Just Get the Cloud

Technology Selected
Virtual Machine
Migration Step Type
Infrastructure as a Service (IaaS)
Why:
  1. Quick and easy exploration of cloud hosting benefits.
  2. Same platform as present on – premise.
  3. Minimum code change.
  4. Just get rid of managing on – premise Infrastructure.

5.2. Step 2: Take Benefit of Azure Cloud Services

Technology Selected (For Course Authoring Web Interface)
Cloud Services Web Role
Migration Step Type:
Platform as a Service (PaaS)
Why:
  1. No OS maintenance.
  2. Easy scalability & Elasticity.
  3. More control on resource usage.
  4. Auto scaling feature.
  5. Some of my interdependent processes of authoring require admin access.
  6. Requirement to take remote desktop.
  7. Need to run code with elevated access.
Notes:
  1. Point 5, 6 & 7 of previous row forced EduMagica Corp. to choose Web Role, as these features are not available with Azure Websites. Web Role is a service component that is customized for web application programming as supported by Internet Information Services (IIS) 7 and ASP.NET. The web role is intended to serve as the front-end to your cloud service.
  2. This step requires some constructive changes in application design like shaping the authoring web application to turn into web role project. Dealing authoring instance as a web role opens up lots of flexibility in terms of scaling and deployment strategy too.

5.3. Step 3: Leverage Windows Azure SQL Database

Technology Selected:
  1. Windows Azure SQL Database.
  2. Transient Fault Handling Application Block.
Migration Step Type:
Platform as a Service (PaaS)
Why:
  1. Lower cost although some limitations on feature availability.
  2. No software maintenance.
  3. Better Fault Handling.

5.4. Step 4: Leverage Queue & Background Execution for Publishing

Technology Selected
  1. Windows Azure Cloud Services worker Role
  2. Queues
Migration Step Type
Platform as a Service (PaaS), Efficiency Enhancement, Additional Tasks
Why:
  1. Better scalability and performance
  2. Better user experience
  3. Improved efficiency
Notes:
  1. When any authoring web role makes publishing request, first it pushes into the publishing queue. Then Worker role/roles keeps seeking queue for popping the request and eventually executing the server level tasks in background.
  2. Worker role can be dynamically scaled at run time. Worker Role is a service component that is useful for generalized development, and may perform background processing for a web role. A worker role is frequently used for long-running tasks that are non-interactive, but you can host any type of workload.

5.5. Step 5: Using Windows Azure Table Storage

Technology Selected
Windows Azure Table Storage.
Migration Step Type
Capturing Application Level Data (This step can be used for switching away from relational DB if feasible)
Why
EduMagica Corp. used the table storage for capturing application level performance counter like memory and CPU usage and those would be used for dynamic scaling.

5.6. Step 6: Leveraging Azure Content Delivery Network (CDN)

Technology Selected
Windows Azure Content Delivery Network.
Migration Step Type:
Efficiency Enhancement
Why:
  1. The Microsoft Azure Content Delivery Network (CDN) offers developers a global solution for delivering high-bandwidth content that’s hosted in Azure. The CDN caches publicly available objects at strategically placed locations to provide maximum bandwidth for delivering content to users.
  2. Better performance and user experience for end users who are far from a content source, and are using applications where many ‘internet trips’ are required to load content.
  3. Large distributed scale to better handle instantaneous high load, say, at the start of an event such as a product launch.

5.7. Step 7: Geographical Deployment

Technology Selected
Windows Azure Web Role Deployments across multiple Geographies
Migration Step Type
Efficiency Enhancement
Why:
The deployment done in US might give the performance problem to the users accessing portal in Europe. Hence deploying one more instance in Europe geography enhanced the performance for that geography.

6. Conclusion

There are several general purpose Azure compute hosting models which let you build scalable, reliable applications in the cloud like Azure website, Virtual Machine & Cloud services. Opting among these facilities available at Azure totally depends upon the type of the application and the degree of control, flexibility, scalability and modularity you require.

Azure websites are the best choice for most modern web apps. Deployment and management are integrated into the platform. We can deploy directly from the source code repository using Git or Team Foundation Service and can achieve continuous development easily. Sites can scale quickly to handle high traffic loads, and the built-in load balancing and traffic manager provide high availability. If we take another scenario where we want to launch a site with just a few clicks using some popular open source systems like WordPress, Joomla!, and Drupal, Azure website is the best choice in that case as well.

Cloud Services would be best in the case where we need to deploy multi-tier applications where each tier can be scaled independently (i.e., user facing web interface, asynchronous background processing, like publishing) using both Web and Worker Roles. Cloud Services can provide more control over the web server environment, such as the ability to remote into your server or configure server startup tasks.

Virtual Machine is the best choice when we are not ready to change the application infrastructure to leverage the various cloud services. This may be due either to complexity of the application or to team maturity level to leverage the cloud services. In terms of complexity, our application might be using any custom created or generic applications that are required to be installed on the OS.

There are a few others compute hosting models also provided by Azure like Mobile services, batch and HDInsight etc. which can be used for achieving some specific and specialised need.

In conclusion, choosing the best compute hosting option for deploying our solution is a matter of analysis of the application requirements & understanding the capabilities and facilities provided by different compute hosting options at Microsoft Azure. There might also be situations where we can opt for more than one compute hosting options available at Azure for deploying our application.

7. References

  1. Dominic Betts, Alex Homer, Alejandro Jezierski, Masashi Narumoto, Hanz Zhang, [Moving Applications to the Cloud on Microsoft Windows Azure, 3rd Edition], Microsoft, 2012
  2. Sriram Krishnan, [Programming Windows Azure], O’Reilly, 2010
  3. Henry Li, [Introduction to Windows Azure], Apress, 2009
  4. Tdykstra, [Azure App Service, Cloud Services, and Virtual Machines comparison], Retrieved from: http://azure.microsoft.com/en-us/documentation/articles/choose-web-site-cloud-service-vm/, Last Accessed: 13/05/15
  5. Brian Swan, [Windows Azure Websites, Web Roles, and VMs: When to use which?], Retrieved from: http://blogs.msdn.com/b/silverlining/archive/2012/06/27/windows-azure-websites-web-roles-and-vms-when-to-use-which.aspx. Last Accessed: 13/05/15

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)