Wireless Services: Delivering Production Data to Dev and QA

Provide production SQL Server 2012 database environments that include 26 databases totaling over 1 TB, for use by Development and QA.

The challenge and the solution:

Prior to adopting WinDocks, 15 VMs were built approximately weekly, each with a 4 cpu and 8 GB of RAM. The time required to build each VM was over an hour.

A daily snapshot of the production environment is taken. A PowerShell script runs a dockerfile that copies the databases to a fresh SQL Server container, which are attached when the container starts. Once the container is built, it is committed as an updated image to support environments for that day. Developers are able to run a PowerShell script that delivers their personal database environment. They are free to write to the database, and simply rerun the PowerShell script to replace it (the script performs the cleanup of the used container).


With WinDocks, daily environments are provided, with the freedom to delete and replace containers as needed. The number of SQL Server licenses has been reduced from 15 instances and 60 cores, to a single bare metal 8 core, 96 GB machine. The time to provision each environment is down to under 5 minutes.

Enterprise distributed software development

Support for a distributed team developing a two tier application using .NET and a 300 GB SQL Server 2014 database. The application under development is in production, hosted on AWS.

The challenge and the solution:

The team includes front-end developers in Romania, with a back-end team in the US. The application was in production and hosted on AWS, and the team wanted to work with current production data. The production environment was supported with NetApp ONTAP that supported asynchronous replication for DR purposes.

The team used Git effectively to distribute updates of the .NET application, but updates of the 300 GB database were infrequent as each developer setup and maintained local virtual machine development environments.

The team implemented use of WinDocks containers with integrated NetApp ONTAP commands to automate the creation of a daily snapshot based the database replication. The snapshot is used to generate database clones, that are mounted to the SQL Server containers. The process continues with a PowerShell script that parses the SQL Server port and credentials, and updates the .NET web.config as the .NET app is Git pulled and a .NET container is built. The two tier application environment is built and provisioned in two containers in under two minutes. Updates to the database were captured in a SQL Server script, or the cloned database could be used to generate a new snapshot volume.

In a final touch, the DevOps engineer automated the creation of 8 environments daily, with email distribution of environments to each developer with ports and SQL Server credentials.

The distributed team now works exclusively on a WinDocks server with 4 cores 8 GB VM, and the associated NetApp ONTAP vm supporting the replication of the production database.


The team estimates that each developer has saved close to 4 hours per week that previously was required to maintain and update individual developer environments. Team productivity has improved due to working on daily production data environments, and time to resolve production issues is down. Total storage requirements is also down, as the use of NetApp cloned databases is very storage efficient.

Where previously the team used 8 SQL Server 2014 instances, now the team is supported with a single VM on AWS.

Production Data Environments using EqualLogic SAN

Daily replicas of SQL Server 2012 production data were unused until WinDocks was applied.

The challenge and the solution:

The production database involved 340 GB mdf and 120 GB LDF files available daily through an EqualLogic replica. The daily snapshot needed to be cloned to generate mountable files. Using SSH client commands we were able to automate the creation of the clones, and using Diskpart \s the iSCSI based volume was mounted to Windows. A PowerShell script builds a dockerfile that mounts the cloned databases to the container. The whole process takes less than two minutes.


Using single 4 core 16 GB server containerized production data environments are now provided to the software development team.

     RSS Feed