As a systems engineer, I enjoy building deploying production and pre-production services. These production services tend to be built at scale in a highly redundant architecture. The problem has always been how do we give developers a sandbox that matches production in all the ways that matters-- but without the pain (and love), overhead, compute and networks resources actual production environments require. Moreover, how does one snapshot this environment so it can be recreated at will. This has been a holy grail in IT for a while. While there have many, many attempts at solving this problem, they all seem to have pitfalls and don't really serve the purpose.
Enter the CDK...
An exciting development in this space is the Red Hat Container Development Kit. Langdon White, Platform Architect at Red Hat gave his presentation on using CDK 2.0, which is a container CDK based on Vagrant, Docker, Kubernetes, and OpenShift. It also has Eclipse integration... basically, everything someone needs to build production-quality applications for use on OpenShift.
Langdon starts with decomposition being a major driving factor in today's software development world. Docker gives us a major step-forward in decomposition and helps with the separation between system errata updates and what the application actually requires. The CDK will help in your journey to re-architect your applications and "sprinkle in some devops" (one of my favorite new phrases from the DevNation keynote).
The CDK runs on Windows, Mac and Linux (of course). It ships with Vagrant files allowing you to easily execute the CDK VMs without having to install everything yourself. The CDK Eclipse has plugin integration for Vagrant, allowing one to run the VMs from within Eclipse, which is kind of cool. From there you can start the OpenShift Local VM for deploying your code, mimicking a production push.
Still within Eclipse, you can define your Dockerfile, giving your container all the dependencies your application requires, including the base image. Of course, you can define multiple ones of each tier of your application, all without leaving your development environment.
This gives you a great mechanism for starting to containerize your application. With large monolithic applications, usually you will start out with one application container and one database container. Once you get your application is installed within this environment, you may then iterate, slowly breaking up your application into multiple containers... in a few months, break out the caching tier, then the front-end and so forth.
In short, the CDK provides all the tools developers need who want to start the container journey and realize the immediate productivity gains offered by Docker and friends. In many ways, this gives developers the long sought development environment that actually matches production.
In related news, Red Hat announced CDK 2.1 today, which is available for immediate download.
About the Author
Brian J. Atkisson is a Senior Principal Systems Engineer and the technical lead on the Red Hat IT Identity and Access Management team. He has 18 years of experience as a Systems Administrator and Systems Engineer, focusing on identity management, virtualization, systems integration, and automation solutions. He is a Red Hat Certified Architect and Engineer, in addition to his academic background in Biochemistry, Microbiology and Philosophy.Last updated: March 15, 2023