Containers 101: Why They're Critical for Government Tech Modernization
May 29 2020
Computing revolutions are driven by big changes in underlying technology architecture. Take the emergence of server virtualization, for instance, one of the key drivers of cloud computing and its success. In turn, we’ve now seen virtualization evolve into something called containerization.
The impact of containers goes much further than data center efficiency. Containers are revolutionizing the way applications are developed, deployed, and maintained. We’ve seen the game-changing implications for application agility, scalability, and efficiency first-hand.
DevSecOps is a crucial gateway to agility. Gartner suggests that government agencies must adopt an agile-by-design approach and not settle for “set-and-forget” measures. However, agile technology relies on a range of tools and methods.
In our experience, containerization is another core tool.
Containers: akin to virtual machines, but more agile
Thanks to OS virtualization, developers can decouple the operating system from the physical machine. In practice, this means that several operating systems can run simultaneously on a single physical computer and that operating systems are transportable – with advantages for data center efficiency and flexibility. That, however, was just the start.
Introducing containers
Containerization evolved from full OS virtualization by essentially reducing the degree of abstraction – a smaller section of the system is virtualized.
Compared to a virtual machine, a container does not abstract the entire operating system – containers only abstract the application layer. Containerization leaves the host OS intact and creates independent containers that bundles together an app and its associated libraries and dependencies.
Applications hosted in a container are isolated from other applications in the host operating system. In contrast, hosting multiple applications on an OS the usual way means that apps share the OS environment and application layer and that apps are exposed to one another.
Containers may appear like a simple evolution of the virtual machine. But when you look at containers more closely you start seeing important differences.
Three key benefits of containers
Three important characteristics make containers incredibly useful:- Resource-light. A full virtual OS can take minutes to start up, but containers go online in seconds. Containers also take up less disk space than a virtual OS—crucial for military customers who could employ Delayed/Disconnected, Intermittently-Connected, Low-Bandwidth (DIL) network. Container packages are much more compact than a virtual OS, a single host machine can support many more containers than virtual OS instances.
Containers deliver server and data center efficiency – optimizing the use of physical machines and physical space. Containers’ lightweight qualities also benefit your application development and deployment process. - Standardized containers are highly portable. Use a container engine such as Docker and your containers become independent of their environment. Easily transportable from development to staging environment, and from one staging environment to another.
The portability of containers means that applications become incredibly agile. You are re-assured that a containerized application is likely to run in a new, unknown environment – and that an app in a container is less likely to be affected by environmental changes.
These standardized containers offer an automated, hardened platform from the jump—which saves government agencies time and effort. - Containers can be orchestrated (automated). In other words, when using an orchestration platform such as Kubernetes, you can automatically and dynamically deploy and manage a containerized application—at massive scale.
Deploying, monitoring, and maintaining apps at scale can be a real headache. Container orchestration allows you to group apps into clusters, starting and stopping apps en masse, while coordinating processes around apps e.g. health monitoring, updates, and failover.
Prior to this automation, containers weren’t prepped for production. Sure, you could run containers on a docker-compose, but your scale is just a single host. Container manager and orchestrators have made container production possible.
So yes, containers are an evolution of the virtual machine. Yet in practice, we’re seeing how containerization brings momentous advances for modern-day workloads.
What do containers mean in practice?
How does the use of containers affect application development in the real world? What practical benefits can you expect to see by adopting containerization in the SDLC and throughout ongoing deployment?
Flexibility and agility
Compactness and portability are the core characteristics of containers. You benefit from a more nimble, lightweight codebase that acts independently of its environment. Containers can run as black boxes, supporting the services-orientated architecture that underpins resilience.
Containers are image-based, easily deployed on a range of platforms. Small differences in the runtime environment are less likely to affect containerized applications, so you can move from development to staging, and back again, with ease.
Efficiency, twice over
Containers deliver further efficiencies in two areas. Depending on the deployment scenario containers can imply higher workload density, so you need less hardware to handle the same workload.
Containerization also drives development efficiency because containers are less cumbersome to manage in comparison to a full virtual OS by virtue of their lightweight, componentized, and abstracted nature.
Automation and scalability
At Geocent, we harness containerization to efficiently structure and automate the development and deployment of complex applications. The discrete, portable, compact nature of containers enables parallel, autonomous coding efforts. And when ready, we effortlessly join these discrete efforts into a functioning solution.
Next, container orchestration allows us to automate the deployment and management of apps and updates. Orchestration makes it easy to configure large numbers of containers, to allocate resources, and to enforce security measures around the interaction amongst containers.
Finally, because containers are lightweight and relatively independent of the host environment, it implies that containers can quickly be distributed at scale and scaled up. With fewer concerns about server capacity and environmental differences.
Modernizing government IT with containers
In another report, Gartner suggested that by 2022, 75% of organizations will be running containerized workloads. In other words, containerization is now a proven part of the tech stack. Vetted, tested, and approved by early adopters.
Government agencies that continue to wait to adopt containers in their technology solutions risk falling too far behind. Instead, it’s imperative to re-evaluate your tech stack in the context of containers — and embrace the efficiency, agility, and scalability containerization offers.