In previous blog posts, we’ve emphasized the importance of support for modern app container and container-orchestration technologies like Docker and Kubernetes with the goals of consistently delivering higher quality, more flexible, and more resilient and performant software faster and at lower cost. Let’s take a bit of a deeper look at what application containers are, and why embracing them is so important to modern application development. I hope this blog post proves helpful as you think about your requirements for next-generation development.
Here are the major benefits of embracing app containers:
1. Platform independence: Build it once, run it anywhere
A major benefit of containers is their portability. Containers are a solution to the problem of how to get software to run reliably when moved from one computing environment to another. Put simply, a container consists of an entire runtime environment: an application, plus all its dependencies, libraries and other binaries bundled into one tidy package.
By containerizing the application and its dependencies, differences in operating system (OS) distributions and underlying infrastructure are abstracted away. This enables you to easily and reliably run applications on different environments such as your local desktop, physical servers, virtual servers, testing, staging, production environments and importantly, public and private clouds. This portability makes it easier to manage applications between environments on-premises, migrate applications to the cloud, and even move applications from one cloud provider to another if necessary.
2. Resource efficiency and operational cost savings
This may sound like a form of virtualization—and indeed it is. But with classic virtualization based on virtual machines (VMs), each VM includes an entire operating system as well as the application. A physical server running three virtual machines would have a hypervisor, a “host” operating system and three separate “guest” operating systems running on top of it. By contrast, a server running three applications containerized in Docker, for example, runs a single operating system; containers share the operating system kernel with the other containers.
Containers are much more lightweight and use far fewer resources than virtual machines. While a VM is often several gigabytes in size, a container is usually only a few dozen megabytes, making it possible to run many more containers than VMs on a single server. This means, to the extent that you’ll continue to deploy workloads on-premises, you’ll require less hardware, resulting in a reduction of bare metal and data center costs. If you’re in the cloud, the efficiency of containers means you’ll spin the dials that determine your monthly or quarterly bill far more slowly.
3. Speed: Start, create, replicate or destroy containers in seconds
Containers are so lightweight, that they start in less than a second (remember, they don’t require an operating system boot). Creating, replicating or destroying containers is also just a matter of seconds, thus greatly speeding up the development process, time to delivery, and operational speed. Releasing new software or versions is easy and fast, offering great opportunities to improve user/customer experience/satisfaction and SLA as it enables developers to act quickly – for example when it comes to fixing bugs or adding new features.
4. Immense and smooth scaling
A container-based architecture allows for easy and powerful horizontal scaling by simply adding identical container instances (in the Mendix Cloud this is accomplished by simply dragging a slider in the Mendix portal). Also, as containers support a true microservices approach to development, you can scale applications (or indeed parts of applications) individually as required and without needlessly scaling others simultaneously.
This flexibility allows you to right-size each app to reflect its unique usage patterns, reduces your resource costs drastically, and accelerates ROI on the platform. Horizontal scaling of container-based applications has been used to this effect by major vendors like Google and Twitter for years, but through platforms like Mendix, this technology is now broadly available.
5. Improved developer productivity and development pipeline
Finally, a container-based infrastructure promotes an effective development pipeline. As mentioned, containers ensure that applications run and work as designed locally – anywhere. The elimination of environmental inconsistencies makes testing and debugging less complicated and less time-consuming since there are fewer differences running your application on your workstation, test server, or production environment.
The same goes for updating your applications: you simply modify a configuration file, create new containers, and destroy the old ones, a process which can be fully automated (and is fully automated by Mendix—containers are super easy to automate – especially vis a vis scripting deployment of virtual machines). Also, container-based applications are easier to backup and version control, making it possible for you to roll-out or roll-back with literally zero downtime (a game-changer in application support).
Mendix offers the only platform in the hpaPaaS market that takes advantage of containers. While it may seem like technical esoterica, or perhaps a matter of degree, it isn’t. The benefits of container support reverberate through the entire application lifecycle – from development and iteration, through deployment, to operations and support. It’s a fundamental difference that explains, in part, why Mendix was positioned furthest for completeness of Vision in Gartner’s hpaPaaS Magic Quadrant, and why SAP and IBM have partnered with Mendix to make our platform the default rapid application development tooling for their respective clouds.
So much has changed for the better in recent years on this front. In addition to helping you develop applications much faster, the unique architecture of the Mendix platform affords you the opportunity to revolutionize IT operations and support as it relates to your applications, so you can better support your business.
* Please note that the Top 5 above was sourced, in part, from more extensive articles on Kumina and CIO.com