Wednesday, July 03, 2013

Journey to Cloud - Scenario V - SharePoint and Integration with Active Directory

While more and more customers, everyday, move towards adopting cloud as the platform for hosting their applications, they still adopt a hybrid scenario where the applications need integration with Active Directory on-premises, for identity and authentication.

Consider the following scenario

Scenario V:
An organization with 500+ employees have around 200 Intranet applications, most of them on SharePoint 2010 and others on a technology stack of ASP.NET with SQL Server. While the customer is looking to migrate his 200 odd applications on to Azure, he wants to make sure that his Active Directory and Domain Controller still remain on premises, and the applications still leverage these, even after these are moved to Azure.

Solution:

With most applications on SharePoint 2010, the best bet for the customer will be to use Azure Infrastructure as a Service (IaaS) to migrate these existing applications as such to Azure Virtual machines. Following the DRY (Don't repeat yourself) principle, the whitepaper here gives a clear step by step procedure on how this could be achieved. 

For other applications that require an integration with AD on premises, Windows Azure Active Directory (WAAD) services can be leveraged. Windows Azure Active Directory (Windows Azure AD) is a modern, REST-based service that provides identity management and access control capabilities for your cloud applications. The best part of this service is that if there are Office 365 applications, this identity service can be integrated across Windows Azure, Microsoft Office 365 and other cloud services such as Dynamics CRM Online, Windows Intune too. Thus, with WAAD, we get a a seamless,
 single sign-on experience across Microsoft Online Services. 


The How part:

The first step involves creating a Windows Azure AD Tenant.  Windows Azure AD tenant is simply a dedicated instance of Windows Azure Active Directory (Windows Azure AD) in the cloud that your organization receives and owns when it signs up for one of Microsoft's cloud services.You can get a Windows Azure AD tenant by either signing up for a Microsoft cloud service that you want to start using or evaluating or by creating one with your Windows Azure subscription - from Azure Management portal as shown below:



Once a tenant is added, similar to how we configure on premises application, we have some administrative activities to be done. The next step now is on Administration and Integration of the application. A detailed step by step procedure on how this can be done is given here.
This gives a solution to integrating with on premises Active Directory and existing O365 applications.

Now for organizations who need their complete applications with AD on cloud, we could also
 install the entire Active Directory and Domain controller on Azure Virtual machines and configure these as we do on-premises. 

This article gives the complete steps on how Active Directory Domain controller can be installed and configured in Azure.


Tuesday, July 02, 2013

Journey to Cloud - Scenario IV - Windows Azure for Backup

In the past 3 posts, we covered the three major scenarios and solutions where Windows Azure can be used. One of the most frequently asked features in Azure is how cloud can be leveraged for Backup scenarios.

Scenario IV:
Recently we had a customer who had SharePoint running on Hyper-V on premise and they were using Symantec NBU to back up the environment as per their policy (full back up every week, incremental backup every day). The customer was looking out for Backup options and reached out to us if we have something form Azure that could take care of his requirements. They want a backup strategy for  SharePoint in Azure Virtual machines where in it can be stored on Azure VMs only.

Solution:

With Windows Azure, there are several options one can choose from - for Backup. When we say Backup, what we want to back up is the first question. Hence, depending on what we want to backup, we have different solutions in Azure that will be the best fit.

1. Back up of Files and Appplications:

This includes item level backup and restore of Azure Virtual machines - Windows server 2008 R2 or Windows Server 2012 and backup of applications like SQL Server 2012. The best way to do this is to use Windows Azure Backup services.To backup files and data from your Windows Server to Windows Azure, you must create a backup vault in the geographic region where you want to store the data.

As of the time of publishing this article, the service is in Preview. Hence, we need to first sign up for the service.  Windows Azure Backup needs System Center Data Protection Manager (DPM) to copy SQL backups to Azure.

Once signed up, the service can be accessed from Storage services-> Recovery services -> Backup vault-> Quick create



A complete step by step tutorial on how Backup Vault can be leveraged for Backup solutions can be found here.

2. Back up of Virtual Machines:
The second scenario is when you will need to take a complete backup of your virtual machines as such and restore them later. This can be either from on-premises to Azure VM or from one Azure VM to another Azure VM.


For backup of VMs on Azure, we can use blobs to take a snapshot of the backup and restore it using PowerShell scripts. These links give the steps and scripts for doing this:

Hope this gives a good idea on how Azure can be leveraged for Backup and DR solutions. 










Monday, April 29, 2013

Journey to the Cloud with Windows Azure - Scenario III - Windows Azure Virtual Machines


We covered Azure Cloud Services and Azure Websites in the earlier posts.  Now, lets take another customer scenario, which is as below:


Scenario III:
A customer in hospitalization sector has around 300 virtual machines, some of these on Windows Server 2008 Operating system and some on open source platforms, such as Linux, Ubantu. There are around 200+ applications running on these servers. He also has some internal Intranet based portals running on SharePoint Server 2010. He has no plan of changing anything with respect to the applications, and his main challenge is IT Infrastructure procurement cost and management of these servers. He is looking at both cost optimization, at the same time wants high availability and performance of his applications.

The real power of cloud computing is the flexibility it offers when it comes to the kind of offering that we would like to manage.  The above scenario requires basically infrastructure with more control over the machines, with cost optimization. This is exactly where Azure Infrastructure as a Service helps. With Azure IaaS, the customer can have full control of virtual machine on cloud, with implicit features of Load balancing and High availability.

Similarly, administrators and even certain Developers who want much control of the deployment environment particularly in cases where there needs to be integration with other components, can leverage the advantages of Azure IaaS. 

In the above case, IaaS offers the flexibility to power up virtual machines of specific operating system, configuration, and platform image from the portal. Another cool thing about Azure IaaS is that even open source platforms such as Linux and Ubantu are supported. There are also images for SharePoint Server 2013 and BizTalk Server that can be used.

How to deploy Azure Virtual Machines:
Lets assume a case where we need a Windows Server 2012 or Windows Server 2008 R2 edition running on the cloud. We can simply login to the portal and choose the configuration required and have a Virtual Machine running in few minutes. The VM provisioned can be logged in using a RDP (Remote Desktop Protocol), similar to how we connect to any server on-premises.

Here below is a sample screen of the virtual machine offerings, available in Quick Create
Azure Virtual Machine Images

Sometimes, we will have specific requirements like, to run a Virtual Machine that has SQL Server installed, or a Virtual Machine with BizTalk or SharePoint Server.  These are resource intensive products and having them run on the Cloud powered by the Virtualization makes more sense than having the required hardware and servers locally.
Windows Azure IaaS offers Platform Images in the Gallery that one can choose and have it up running.  The example screen below shows the available platform images.

Not just that, you can also choose the region where you would like to have these running.  Also, make them part of an Availability Set and Affinity Groups where you would like to host them in combination with other services, for a lesser network latency.
All of these in configurable screens to choose the optimum configuration/settings for our Virtual Machines.
Azure Virtual Machine Operating System Gallery

We will explore more on Virtual Machines in the subsequent posts.

Trivia: IaaS Virtual Machines use Windows Azure Blob Storage for storing the virtual hard disk, so you would need to create a Storage Account when creating a Virtual Machine.

Saturday, April 27, 2013

Journey to the Cloud with Windows Azure - Scenario II - Windows Azure Websites


Let’s continue from the earlier post on moving to the cloud. If you haven't checked out the previous post, you can find that here.

Scenario II:
The retail customer also has a lot of legacy applications built using .NET 2.0, .NET 1.1, ASP etc.,   While he has usage for these applications, he doesn’t have plans to migrate them to the latest versions of the framework.  Neither does he have the resources to do that, nor does he feel the necessity.  These are typically applications like Performance Management, Rewards Portal, Attendance etc., which are important but not mission critical.  And the existing technologies used then suffice the very purpose.  There are also a few open source portal applications built in Joomla and Drupal with MySQL that need to be maintained. However, managing servers for these applications is a nightmare and he would ideally  want them to be hosted in Windows Azure.

Going by our earlier post, in order to migrate an app to Azure Cloud Services, it has to be at the minimum in .NET 3.5, hence that is ruled out.

So which Azure offering best suits this scenario?

Azure Websites offer the best solution for this case. 

Azure Websites offer a fast and easy way to deploy ASP.NET 2.0 and older versions as well as ASP Applications to Virtual Machines running IIS on Windows Azure.
Another cool thing about Azure Websites is that even portals built using open source platforms such as WordPress, Joomla!, Drupal, DotNetNuke and Umbraco and MySQL database.

Azure Websites offer Free, Shared & Reserved instances to choose based upon the needs.  When one signs up for a FREE Azure account, they get to host upto 10 websites for free.  Gradually as the demand for power increases, one can switch to Shared or Reserved instances.  
If you need a comparison of the Free vs. Shared vs. Reserved instance, check out https://www.windowsazure.com/en-us/pricing/details/web-sites/

Technically FREE and Shared are similar except that Shared provides more performance for the website when hosted in Shared vs. hosting it in FREE.  The model also uses pay-as-you-go billing after 5GB Bandiwdth.  For a more detailed comparison, check out http://www.windowsazure.com/en-us/manage/services/web-sites/how-to-scale-websites/#freemode

Websites also provide additional components such as MySQL Data Storage.  You can also use Windows Azure SQL Database for storing your data.

The biggest advantage is that Websites support FTP Deployment.  So, the customer needs to just configure the FTP Ports and then publish the files. Check this article on FTP Publishing with Windows Azure Websites http://geekswithblogs.net/ranganh/archive/2012/06/25/ftp-publishing-with-the-new-windows-azure-release.aspx

If you are creating or have an ASP.NET Application that you would want to deploy on Azure Websites, its just 3 steps.
1.       Create the website in Azure portal.
2.       Download the publish profile
3.    Publish the Web Project and provide the publish profile location in the wizard and complete the deployment

For a beginner level how-to article on Azure Websites, check out 

For advanced scenarios, check out 

So, the customer now has a quick solution to have his legacy web apps run on Azure using Azure Websites option.
You can read more about Azure Websites here.

Trivia: An Azure Website hosted in FREE and Shared Mode are the same except the capacity and the load that can be handled is higher in Shared Mode. 

Thursday, April 25, 2013

Journey to the Cloud with Windows Azure - Scenario I - Azure Cloud Services




One of the responsibilities in my new job is to help customers adopt and migrate to Windows Azure.  A majority of our customers choose Windows Azure as the cloud platform for optimizing costs while improving the performance and scalability of their apps.
   
While it would be great to architect an app ground up for the Azure platform, real life customers have a lot of their existing apps that need to be migrated. 

Typical customers’ on premise applications are web applications developed in .NET 2.0, .NET 3.5 or .NET 4.0 running SQL Server as the back end.  Some of the apps also have middleware services built using Web Services or WCF Services. 

There can never be a complete architecture without integration of existing LOB Applications.  Not surprisingly, most of these apps have integration with their internal AD, LDAP or other authentication subsystems. 

Most of these apps were developed in days where the organization had lesser man power, more time to manage and fewer demands for these systems. With the increase in employee workforce, more and more demand for these applications, the decision to move to cloud becomes all the more important.
But the biggest question customer’s face is how does one go about re-architecting these systems for Windows Azure? 

In the following series of posts we will see where each of the components fit. We'll delve through different scenarios and also on which Azure offering best fits the scenario.

Scenario I
A Retail customer has several of his web applications written using .NET Framework with SQL Server as backend. The applications are enterprise applications which are multi-tiered, with several scheduled jobs that are run in backend. The application is architected well using Best Practises prescribed by Microsoft.
The following are some of the top challenges he is facing currently and evaluating the options for moving to cloud:
1. The web applications are being used by customers world-wide and the performance becomes a concern many times, during Promotional offers.
2. The customers using the applications are increasing by time and its becoming difficult to increase the hardware for scaling out the applications.
3. Managing IT operations costs is becoming huge and this needs to be optimized

Which Azure offering best suits this scenario?

With this scenario, we see the first and foremost component to be migrated are   Web Applications – typically built using ASP.NET 3.5 or ASP.NET 4.0 in the recent past using Visual Studio 2008 or Visual Studio 2012.  This looks a straight forward candidate for Windows Azure Cloud Services.

Windows Azure Cloud Services offers Virtual Machines or what we call as Web Roles that run your ASP.NET Applications on the cloud with little bit of additional packaging and configuration.
The scheduled jobs and other start up tasks that the customer runs are taken care by what are called as Worker Roles, which are basically Windows Services that are run in Virtual Machines.

The "How" part:

For migration to cloud using Cloud Services, all you need is Visual Studio and the Windows Azure SDK (a free download toolkit that can be downloaded from here).  In case you are fine with command line utilities, you can even use the Windows Azure Powershell commandlet to compile and package your application to deploy in cloud services.  

You can download windows azure command line utilities from here.



As per the scenario in discussion,  you have an ASP.NET Application which reads data from SQL Server Database or any other Service.  There are also some scheduled jobs that need to be migrated. Both these applications ("Projects" in terms of Visual Studio) can be migrated by adding a Cloud Project Template (available in Visual Studio 2010/Visual Studio 2012).  You can even simulate the cloud platform using the Emulator that ships along with the Windows Azure SDK.  So, the first time you add the cloud project template and run the application locally, it would open up the emulator where you can see how, in the cloud environment the web roles would be provisioned.  Is this not awesome? Having seen how difficult it is with other cloud providers to simulate a "cloud-like" environment and debug in local machine, Windows Azure is definitely a boon!

Finally publishing to Azure is as simple as a right-click -> Publish from Visual Studio

In the spirit of DRY (do not repeat yourself - keeping things in a central place), I am going to provide the resource available in windowsazure.com for a step by step detail on migrating existing ASP.NET Applications to Cloud Services:


Summary
To sum this post, if you have an ASP.NET Application written using .NET 3.5 and above, the logical choice to port to Azure would be is to use a Cloud Service Project.

Moreover, Cloud Service Project offers the flexibility of using Remote Desktop to remote login and manage the virtual machine, in addition to setting up preconfigured installers that are required for the application (installing a reporting component or any dependant assembly).
Finally, if you want to migrate a three-tier application with Web Services/WCF Service in a separate Service or having them on-premise etc., then Windows Azure Cloud Service is your best bet.

Subsequent posts will concentrate on other scenarios that will best fit for Azure Websites and other Cloud Components.

Trivia: A Web Role can have multiple web applications hosted and a web application can be hosted in multiple web roles.



Friday, March 22, 2013

Cloudifying Mobile applications through Windows Azure Mobile Services


Its been fairly long since I blogged, hoping to catch back into the momentum. In the past couple of years I've been involving myself more into solution engineering predominantly for cloud, mobile, SOA platforms.

"Cloud" and "Mobility" are the buzz words today. Most of the "Web" app customers of yester years have been wanting to move to cloud, and also enable mobile access of their applications. The primary challenge that comes up for Enterprise mobile applications is scalability and availability of the apps across regions. 

This is where a cloud platform, can help, especially, if the platform could do a service from backend that can connect to any of the form factors, either a mobile, laptop, slate or tablet. Having this service in cloud makes the service extremely scalable, with increasing number of users across devices.

Windows Azure as a cloud platform brings about a nice feature of providing Backend as a Service (BaaS) through Windows Azure Mobile Services (WAMS). WAMS provides an extremely easy way to develop scalable backend on cloud that can connect to mobile or client applications. 

With this move, Windows Azure has established in the world of cloud in PaaS-IaaS-BaaS stack, thereby distinguishing from other cloud providers like AWS, who are yet to provide such a kind of service.

The other interesting part of Azure mobile services is that this service can be integrated to any of the mobile phone applications, such as Windows Phone, Andriod, iOS or even an HTML5 app. So now the question comes up on when exactly should we look at using WAMS.

When should you use Azure Mobile Services:
1. When you want your mobile application to be available across devices including Windows 8, Windows Phone 8, iPhone, iPad and Android

2. When you need to create highly functional scalable mobile applications using Windows Azure

3. When you need to enable back-end capabilities of existing native mobile applications

4. When you want your app to integrate with with well-known identity providers (like Live ID) for authentication.

5.  When you want to integrate with notification services to enable push notifications in your app.

6. When you need to integrate your mobile app with other cloud services

7. When you want to enable service monitoring and logging in your mobile applications.

If any of these requirements sound familiar to what you are looking for, then do login to Windows Azure  portal and check out this cool feature of WAMS here :)

In the forthcoming blog posts, I'll be writing more on how WAMS can be developed and consumed in HTML 5 applications and other mobile applications.





Friday, December 10, 2010

ASP.NET : "Only one usage of each socket address (protocol/network address/port) is normally permitted"

You might get an error "Only one usage of each socket address (protocol/network address/port) is normally permitted" when trying to run an ASP.NET application. This might happen when you either have muliple apps using the same port in Casinini web server or when you have many ASP.NET apps running simultaneously.

For a workaround, use the following steps:
1. Close the ASP.NET solution in Visual Studio.
2. Navigate to the folder containing the Project file of the ASP.NET application.
3. Right click on the Project file of the ASP.NET project (the one with extension (.csproj))
4. Do a Find for "" tag. Change the value to "False".
5. Rename the "" also with a different number if you wish.
6. Save the file and close it.

Now open the ASP.NET solution again and try to run your app. You'll now be able to run the application without the error quoted above.

Cheers!