Friday, May 1, 2015

Migrating On-premise .Net Web Applications to Microsoft Azure - Part 5

Schedulers


Schedulers is an important part of the batch jobs if its time bound. Traditionally, developers use Windows Server’s task scheduler to take care of executing tasks in a fixed time interval.  This is good enough for executing a job within the server or in a remote server, it also provides a basic monitoring window to display the current tasks, view task properties and history etc.

However, this system is not highly scalable and reliable simply because if the server where the scheduler configured goes down, all the jobs will ultimately fail. Unless your customer scream or you have a monitoring system for the hosted server nobody will notice this.

You can replace your existing scheduling mechanism with Azure Scheduler which provides advanced scalable and reliable Scheduling functionality in Azure. Benefits of Azure Scheduler includes


  • Call HTTP/HTTPS services inside your Azure subscription and resources at your onpremise
  • Run jobs on any schedule—now, later or recurring
  • Use Azure Storage queues for long-running or offline jobs


Scalability and High Availability Considerations


Key aspect of the application migration is to enable the existing application to leverage the elastic scalability (Scale up and Scale Down) aspect of Azure cloud. It is important to analyze and refactor the application to adopt to the scalability attribute of Azure Cloud. Often, this doesn’t require any rewriting or modifying your existing application and it can be easily achieved using configurations
with less effort. Scalability strategy may differ from one application to another and time zone to time zone. For example, a multinational company might have branches all over the world, so it might be accessed heavily in the Daytime and accessed with the same heavy traffic during the night time, whereas an organization having employees only in a specific country or region might scale down the CRM application during the Evening and night time due to less traffic. 

Identifying the Scalability pattern of the application and configuring the scalability requirements will help you to leverage TCO and ROI of adopting Azure Cloud.

Business Continuity (Backup & Resiliency Data Recovery)


Onpremise applications suffered backup deficiency due to unavailability of efficient storage, manual overhead involved, connectivity, geo locations involved etc. Out of many applications we analyzed, we found very few applications had Backup and Data recovery planned, rest all had only either files backup or database back up that too very few were automated and most of them were manual.

Whether the application you are migrating have/haven’t possess a Backup and Data recovery strategy, it’s recommended to setup Application and Database backup especially when the application is hosted on cloud.  Azure Backup & Site Recovery is a suite of backup solutions for your applications, databases and even you’re VMs.  

TCO & ROI

Microsoft Azure new breed of services helps enterprise and SMBs to move out of Capex to Opex way of looking at IT investments. Existing applications heavily suffered from variety of hardware and software shortages due to Capex burdens and the manual interventions required to acquire and setup machines. Enterprises either over or less provisioned their resources which attracted huge IT investments and ongoing maintenance. With Azure Cloud, virtually huge amount of hardware and software resources are available for the developers on demand with the simple pay as you go model without the need of understanding the license terms and conditions.

From the TCO & ROI point of view, Migrating to cloud may look like a costly initiative in a short term, but operating wisely by architecting your application to leverage the key promise of cloud i.e Elastic Scalability and Virtually No limit Hardware with bundled licensed options and Enterprise Agreement for Enterprise and SMB customer will help to reap the benefit in the long term.

Below is a simple cost estimation for a medium sized 3 tier Web Application with the components like Compute, Database, Storage etc. But this is just an indicative cost estimation, but the actual cost may vary depend on your actual application requirement.


Resource
Description
Cost
Web Role
Standard D2 (2 cores, 7 GB RAM, 100 GB SSD) Count 2
$473.19$ (0.636/hr)
Worker Role
Standard A2 (2 cores, 3.5 GB RAM)

$238.08
($0.32/hr)
SQL Database
Standard (Performance Level S2, 5 DBs)
$375.00
Redis Cache
Basic (6 GB)
$133.92 ($0.18/hr)
Storage (Geo Redundant)


Block Blobs
100 GB (Geo Redundant)
$4.80
Tables & Queues
100 GB (Geo Redundant)
$9.50
Storage Transaction
6 Millions
$0.22
Storage Backup
200 GB
$9.60
Bandwidth
United States + Europe egress (10GB)
$0.44


$1244. 75


Deployment/Continuous integration & Maintenance


The biggest benefit of adopting cloud is the simplification of deployment and continuous integration of solutions to production, thereby releasing new features, enhancement and bug fixes in nearly minutes and hours compared to days and weeks. Conventional deployment mechanisms allowed developers with very less option like FTPing the deployment to production servers. Configuring the development, staging and Testing/QA environments was a pain and usually takes months to
configure and provision. On top of these challenges, synchronizing product to development or development to staging was a huge challenge.

By adopting Azure cloud, developers are empowered with so many options and simplified mechanisms to develop and deploy the solution in a click of a button. Getting a development environment with all the preloaded softwares, replicating the production data to the staging environment, duplicating development environment to testing is now simplified.

Visual Studio IDE is a one stop solution for developers to develop, debug (locally as well as remotely) stress test and deploy the application to Azure Cloud. Visual Studio natively integrates with Team Foundation Server (TFS). VS + TFS online lets you to collaborate, version control, continuously build, integrate and test your solution on cloud. 

Developers can also choose Open Source alternatives like GitHub to build a collaborative development and deployment environment and use NuGet to consume and distribute packages within your team and others. 

Overall Migration Approach


Migrating your onpremise applications to Azure cloud may be challenging or a breezy path, it completely depends on the application, the size and how it is architect or built. But, irrespective of the application, you have to go through the various stages of Application Migration, right from application discovery, dependency identification till migration and testing the production application.  We recommend spending at least 30-40% of time allocated to analysis phase and do a detailed analysis and developing a migration plan. 


Conclusion


In this whitepaper, we have captured the various real time scenarios and use cases usually found in the existing onpremise application migrations and discussed about the various strategy and recommendations for the suitable migration approaches. However, not all applications are equal, hence we recommend you to strategize the best approach based on your business application and criticality and take a step by step approach and migrate your applications to cloud.
Need assistance in your migrations, analysis, or lift and shift, feel free to reach out to us! We are glad to help you out with any kind of migration scenarios.