By cStor’s Engineering Team
Recently cStor published a great blog on how to embrace and leverage the containerization trend and gave a great overview of why micro-services are becoming all the rage too. If you haven’t seen it, I encourage you to check it out first. It’s a quick read, I’ll build on those concepts here.
First, a ❗SYSTEM WARNING❗ It definitely requires a complete rewiring of everything you currently believe and know about development, programming, culture, SDLC and delivery. Yes, the Docker Open Source project released in 2013 was part of this mind-bending transformation, but even the prior virtualization trend played a tremendous part in where things are headed.
Containers are really just another form of virtualization, with or without the entire stack, allowing for hardware and software to be separated into different virtual machines, hypervisors and clouds, so resources can be shared and provide potentially higher utilization.
Where things get interesting is, we’ve traditionally managed VMs, now we manage abstract, stripped-down blobs instead of VMs, which support limited features in the form of code instead of an entire stack inside of an entire stack. Due to the limited features and API as opposed to system calls, we can mitigate – and in some cases – remove most of the unnecessary overhead.
So here are a few surprising ways to leverage containerization and the resulting benefits that can dramatically transform your development efforts.
1. Think Outside the Box… But Think BIG Inside Small Boxes.
Containerization can allow pieces of code to be deployed into smaller, more transportable pieces that can run anywhere, and be accessed via APIs. That means they are not platform specific, so suddenly any device is a potential platform (including phones and tablets) which can run APIs, freeing you from the proverbial ‘OS tethers’ of the past. You can run on virtually any platform with its own configuration without the traditional overhead of a virtual machine, while still running applications across multiple IaaS/PaaS.
These kind of ‘bite-sized code snippets’ are faster to create, run, test, deploy, manage and update. Ironically, the smaller you go, the more flexibility you have, and therefore, the more creative you can be with what code runs where, when, why and for whom. While you may first get slightly uncomfortable with the level of control and complexity you’re left with, don’t worry. Splitting up code also means you can split teams managing the code and still have all the needed oversight and control you want. You can create and deploy containers just as easily as you can destroy them when necessary to reduce costs, for example.
All these ‘smaller boxes’ don’t mean you have to be entirely stateless, however, which to many CXOs and technology leaders means you lack visibility, security and control, but that’s not the case. Containers actually have viability within all five primary application states: persistent, configuration, session, connection and cluster. To dive a bit deeper into this, check out this InfoWorld article.
2. Take a Wrecking Ball to Those Monolithic Applications Bogging Innovation (or at Least Break Them Down)
Containers help break down the barriers of being bogged down by slow, monolithic, inflexible – yet mission critical – applications necessary to the run operations, which in many cases, prevent you from innovating where you really need to. Need a new API? Try throwing a container up to interface with your existing ERP, Data Warehouse, CRM, etc. so you increase accessibility and usability of those otherwise largely inflexible systems.
As the next evolution of the consumption model, containers allow you to scale up or down and pay as you go for only the specific function you need without impact to the whole application. That means you can increase scalability on-demand in seconds rather than hours or days, without the need for more servers. You can test more, do more, fail faster and break free of those outdated systems, applications and maybe most importantly… monolithic mindsets.
One method to leverage this concept in practice is to create an IT service catalog of containerized services and make it accessible to users. This allows you to quickly respond to requests, and more easily track service usage on a micro and macro scale. I don’t know any CXO that wouldn’t love finally having the ability to create a clear cost and ROI model for every service being delivered throughout the organization.
3. Apply AGILE Concepts to Hardware, Software and Teams, Not Just Process.
I’ve seen Agile revolutionize development processes, significantly improve quality, and dramatically reduce time to market. Consider taking those same Agile concepts to the containerization world of your programming initiatives. You can parse out functions, create smaller teams to focus on specific tasks, and speed the development process by allowing developers to place apps and code pieces into containers which are more easily portable. Detaching code from the host system means zero impact to runtime environments through production.
Containers help you accomplish new levels of efficiency, accountability and productivity by putting developers close to production and creating faster feedback loops for testing and QA. Your team can edit source code from whatever platform it’s running on and even track changes instantly as the applications continue running the same source code. Can you say, “faster deployment with fewer dependency errors?” It’s a beautiful thing.
In the end, your use of containers is truly as wide open as your imagination… there’s really no limit to potential applications. If you’re interested in brainstorming how to use containers in your organization, don’t hesitate to contact us.