In an earlier blog, I explained the need for DevOps database platforms. The DevOps database requirements apply to all variations of containerized SQL databases as needed to support the variations that exist in the wild. Organizations are increasingly evaluating SQL databases packaged in containers and orchestrated by Kubernetes.
Microsoft extended SQL Server support to Linux containers in recent years. Surprising as it may be, Microsoft discontinued support for Windows SQL Server containers in July 2021, which has left organizations that continue to use Windows SQL server containers in DevOps pipelines scrambling for a solution. Windocks is one solution that provides support for Windows SQL Server containers. This article reviews the trade-offs between Linux and Windows SQL Server containers and explains why DevOps needs SQL Server containers for Windows in certain use cases.
Windows and Linux SQL Server containers have similar but critically different structures. Linux Docker containers combine base images for Ubuntu, Red Hat or other Linux distributions with a base SQL Server image, providing a layered SQL Server container Linux image. Windocks containers, in contrast, are created by cloning a locally installed SQL Server instance that acts as the base image. The resulting SQL Server container is identical to a conventionally installed instance, written to the Windows registry and namespace, but delivered on-demand and managed using container APIs and commands.
Windocks’ approach of cloning a local SQL Server instance delivers a SQL Server container in seconds while preserving compatibility with existing apps and infrastructure and the SQL Server security model. Container size, density and performance are reportedly similar between Linux and Windows.
SQL Server Images
Microsoft’s Linux images are limited to SQL Server 2017 and 2019, with support for the DB engine and SSIS. Linux SQL Server containers do not support SSAS style sheets, the SSRS reporting service or the SQL browser.
Windocks supports all releases and editions of containerized SQL Server 2008 to 2019 with the DB engine, SSRS, SSAS, SSIS and SQL Agent running as Windows services. Linked servers, distributed transactions and external key managers (EKM) are also supported.
Both platforms support custom images with persistent volumes and claims. Windocks supports images with cloneable databases (writable databases based on copy-on-write file systems) for on-demand delivery of complete terabyte-class database environments.
Database Cloning and Cross-Platform Orchestration
Database cloning or virtualization complements container delivery of writable, terabyte-class production databases in seconds. Clonable images are built from database backups or files or with automated operations on Cohesity, Actifio and other storage systems. Database clones are delivered from the image in seconds with file pointers to the image for read data and with writes persisted on the clone via a copy-on-write from the image. Database clones complement containers with fast delivery of data and storage efficiency by using only 40 MB on delivery.
Windocks also supports Linux database cloning for containers and database orchestration. Windows and Linux servers are joined to create a scalable, cross-platform database orchestration solution. Database orchestration is a supervisory service that oversees the delivery and management of containers, database clones and storage operations. Orchestration also applies data engineering needed for customized environments for different needs. Developers, for example, can specify a Git feature branch and run migration scripts on delivery. Some user groups work with only masked databases while others may work with different masks or even unmasked data.
While Kubernetes is the most popular container orchestration solution, many organizations adopt solutions using Docker swarm, Jenkins and other CI pipeline-based delivery and simpler methods of management. Both Windocks and Microsoft Linux containers support the Docker API and commands, while Windocks also provides a web UI that simplifies the use of containers for end users.
Microsoft Linux containers are each licensed as a minimum four vCPU core VM. As Windocks containers are simply added “named instances,” they are covered under all existing Microsoft SQL Server licenses and require no new licensing, consistent with per-core or per-server license terms.
While comparing the details of Linux and Windows containers is interesting, what I’ve found more interesting is how these technologies are evolving for ever more sophisticated DevOps processes. DevOps is evolving from infrastructure-as-code toward increased end-to-end automation (orchestration). As I indicated in my book Engineering DevOps, orchestration improves support for event-driven workflows and simplifies scale and management of high-volume DevOps systems. DevOps engineers and architects should consider a broader range of capabilities including containers as well as database cloning and orchestration.
I want to express my appreciation for time spent with the Windocks team, which has pioneered many of the concepts outlined in this blog and which contributed valuable insight.