Move .NET + SQL Server Workloads Between AWS and Azure in 90 Seconds, With Containers

DZone 's Guide to

Move .NET + SQL Server Workloads Between AWS and Azure in 90 Seconds, With Containers

See how you can get your data moving between AWS and Azure in no time flat all while incorporating containers in a different approach to a hybrid cloud setup.

· Cloud Zone ·
Free Resource

The continued growth of AWS and Azure is a testament to the preeminence of cloud computing, but public cloud adoption by the enterprise has been constrained by inadequate portability of VMs and enterprise data. Gartner recently offered new insights and continues to emphasize that Hybrid clouds are strategically important.

WinDocks is a port of Docker’s open source project to Windows, with support for .NET and SQL Server containers, and the full Windows Operating System family. We partnered earlier this year with NetApp, and our efforts have taken a step forward recently with the addition of DevOps and Automation expertise of Wirestorm. This article owes much to the good work of the Wirestorm team.

A New Approach to Hybrid Cloud

The ambition to move into the public cloud is hindered by the challenges of application and data portability. These challenges stand in the room like two great elephants, leaving us scratching our heads searching for a solution.

Containers give us a new ability to move, deploy, and re-deploy applications quickly. Integrating containerized applications with NetApp’s Data Fabric technology should open up new options for moving workloads between on-premise and the public cloud. In this project, we combined containers with NetApp Data Fabric to pursue the following goals:

  • Provision a .NET and SQL Server environment with the latest code and data in under two minutes.

  • Leverage a cloud-based Disaster Recovery system to support development.

  • Push the limits on VM and data storage consolidation to achieve a minimum of 10:1 savings on VMs use in development.

.NET + SQL Server With the Latest Code and Data, in a New Cloud — in 90 Seconds

Our test is based on a production 200 GB database that is replicated via a VPN between a NetApp ONTAP Cloud system in Amazon and a second system in Azure.   The replication conveys changes to the replica, so once the inital copy is completed the ongoing network traffic is minimal.  To support a development process, a PowerShell script is run against the replicated data to create a new set of FlexClones based on the replicated snapshot copy and mount the clones to SQL Server container instances. As a port of Docker’s open source project to Windows, WinDocks is compatible with standard Docker client commands and DockerFiles, which are used in the PowerShell script to accomplish these steps. The process continues by building a .NET container, pulling the latest code from the Source Control system, and starting the .NET application. The architecture of the solution is illustrated below.

Image title

In this environment, the production database server lives in an Amazon EC2 instance and the databases reside on a NetApp ONTAP Cloud system. NetApp SnapMirror technology is used to keep the sites, in this case cloud environments, in sync over an IPSEC VPN between AWS and Azure. Because the data is already replicated, we can leverage the built-in cloning technology of NetApp to present full copies of the storage to the SQL Server containers. Each database is almost 900GB in size but clones in a matter of seconds. This integration allows each WinDocks container to instantly start working with a dedicated copy of the database and the cloning delivers tremendous storage savings.

In 90 seconds, integrated and running .NET + SQL Server environments are provisioned with a mounted cloned databases, using the latest data and code.   We can deploy ten or more of these isolated and integrated environments on a single, dual core VM with 8 GB of RAM.  This drastically reduces the number of build environments and lowers the cost of maintaining copies of data.  Using NetApp cloning we saw a 10:1 space savings for the ten container sets that were deployed.  Where it is common for a team of 10 to require as many as 20 or more VMs, this solution delivers great performance on a single VM, yielding dramatic license and operational savings. 

High Availability and Disaster Recovery

The premise of our design is that many organizations are employing a public cloud to support Disaster Recovery, and these systems can provide support for cloud-based development. For Disaster Recovery the time to recovery could be shortened by mounting the recovery database to a container, which would yield a time to recovery roughly equivalent to the development environment (90 seconds). On the other hand, many enterprises would choose to start a new VM to host the production database (without a container), in which case the time to recovery would be a handful of minutes to launch the new VM. For this project, we have a stand-by server built using our automation and is ready to start. Because the storage handles the replication, we can leave this system powered off and reduce the cost of our cloud disaster recovery solution.


.NET and SQL Server containers combined with NetApp solutions is a new option for hybrid cloud support that provides compelling benefits:

  • .NET and SQL Server containers combined with NetApp DataFabric delivers application and data portability between private and public clouds.

  • A Disaster Recovery system can be used to support .NET and SQL Server development environments, provisioned in seconds, on a single VM.

  • .NET and SQL Server containers support a dramatic reduction in VMs used in development, with up to 20:1 reduction in VMs used.

Not surprisingly, the Wirestorm and WinDocks team will be demonstrating the solution at NetApp Insight later this month (Las Vegas, September 26 – 28, 2016). To learn more about how containers can work for you, visit our web site and download a free Community Edition of WinDocks.

.net applications development, aws enterprise, azure sql, docker containers, hybrid cloud, sql server 2014

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}