How databases fit into the world of containers and Kubernetes

Containers and Kubernetes have gained widespread use in the development pipelines spanning dev, test, and staging of stateless applications and microservices.  The same types of orchestration can be used for the development pipelines of stateful applications that utilize databases.


Concepts in stateless applications and microservices

Containers - Containers are isolated lightweight processes running applications or microservices on different ports on a single machine. Containers are delivered from images which are built with all the software and information needed to deliver the containers.

Kubernetes - Kubernetes is a container orchestration system that runs multiple containers from multiple images in a cluster of machines.

Containers are used in dev, test, staging, production environments to run applications or services. An image is built, containers from that image are delivered into dev, test environments and as the containers pass tests in these environments, the build is promoted to staging and then production.

There is widespread use of containers for running stateless applications and microservices. Technologies such as docker enable delivery of containers with the application or microservice from images. For example, you can build an image of a .Net application using a dockerfile by specifying the version of .Net you use, the files that are needed to build the application/service, and the dotnet command to run. Once the image is built with docker, you can create containers, each running that service. Docker takes care of instrumenting all the dependencies, the files and starting the service in each container.

Relevant technologies in database applications

Database containers - For databases, firstly, you need the container technology for that database and version. Docker provides the container technology for Oracle. Windocks provides the container technology for SQL Server Windows. Because, production environments for SQL Server are on Windows, the dev, test, and staging environments also need to be SQL Server Windows.

Database cloning - It is a best practice to test and stage with production data. You need database cloning technology to clone production databases in seconds (no matter how big the database). Windocks provides database cloning technology for Oracle, SQL Server, PostGre, MySQL and other databases. You may also use proprietary volume cloning or VM cloning technology and do the work necessary to adapt these cloning technologies to database cloning.

Database masking - Test data must not have sensitive data to be in compliance with data security regulations. Data masking technologies solve this problem by discovering sensitive data in databases and obfuscating the data. Windocks offers built in data masking technology for SQL Server and Oracle.

Database orchestration - An orchestration technology is needed to orchestrate all relevant services - database container, cloning, masking, script repositories, authentication, authorization - to deliver databases based on requirements. You may write and maintain code yourself to do this or use database orchestration technology from Windocks that supports Oracle, SQL Server, MySQL, PostGre and others. Simply provide a spec (in the form of a dockerfile) and Windocks does the orchestration for you. Windocks orchestration is an open technology that orchestrates cloning, masking, container technology from Windocks as well as other solutions. For example, Windocks can deliver databases using Windocks cloning, docker Oracle Linux containers, and masking technology from Curiosity, a combination like Windocks orchestration delivering databases with Pure Storage volume cloning, Windocks SQL Server containers, and Windocks masking.

Extend CI/CD to your data layer