SYONE - Open Source Lisbon Blog

Containers: all you need to know (AND AVOID)

Written by Vitor Calil Silva | 09/02/21 14:00

Everyone is talking about containers and app modernisation, right? It’s not just because it’s a trend but is actually a big improvement for DevOps team on how to work and how to optimize their time and experience on a project.

So, in this article you’ll find out more about containers, containerisation, app modernisation, an example of a solution for your business and more.

What are Containers after all?

Containers are self-contained apps that provide a standard way to package your application's code, configurations, and dependencies into a single object.

They share an operating system installed on a server and run as resource-isolated processes. This ensures quick, reliable, and consistent deployments, in spite of the environment. This could be from a developer's computer to a test environment, from staging into production, from a physical machine to a virtual one, in a private or public cloud.

Benefits of containerisation

When a business starts to grow, it is normal that the IT systems will follow. This can be a challenge to many companies, but you should see it as an opportunity to upscale.

Containerisation has evolved over the years to solve some of these challenges and to allow companies to grow while maintaining the organisation efficiency.

By the way, it is a complementary approach to virtualisation, designed to solve application management issues.

This way, let’s check some benefits of containerisation:

Be faster

Help developers to work quickly and easily. That’s a huge deal, since developers are one of the main cores of a project.

Don’t waste time on ensuring that every developer has the same development environment configured, the same dependencies and modules versions, etc.

Be more flexible

Containers make it easier to move your applications to the cloud, increasing the company’s flexibility. It’s the same container image your developers already use on their system!

Be open to the future

Your business starts to rely on open source, a positive aspect if you think about the future of your company.

You can build your strategy with open source technologies and contribute to software development as well.

Be safer

Improve security by setting each application’s major process in separate containers. This allows you to share specific resources without risking any internal or external security.

Be more productive

Enhance productivity with a new level of efficiency and a rapid development environment. Be able to change a platform’s source code and instantly track these changes as the applications are running.

Why are containers so important for app modernisation?

Imagine that you need to do and upgrade on your aging applications or want to update them with modern features and capabilities.

By migrating them to containers, you can easily add new functionalities, change the code, upgrade the front end, etc. Or even re-platform it, in case of applications that are so old that may not be optimised for mobile.

This way you can take the DNA, the original idea of your app, and modernize it to bring in more revenue, higher engagement and better user experience.

Besides, the benefits of modernisation are really worth it:

  • Cost Reduction: you can reduce costs when using a manageable and scalable operating system;
  • Staff Productivity: fewer application incidents, improved team operations, new features and functionality;
  • Help your Customers: improve customer experience by enabling new services and processes with a more user-friendly interface;
  • Create New Revenue Streams: rely on an easier to update system to create new services and processes that add value to your customers.

That being said, the concept of containers emerged as a way to manage modern applications by packaging and isolating applications with all the files necessary for them to run. This allows for the contained applications to be moved between environments while still maintaining complete functionality.

Containers takes all the tools, technologies, and code required to run an application to create a single, portable package.

And what about Container Orchestration?

This solution is the automatic process of managing or scheduling the work of individual containers for applications, typically based on microservices architectures within multiple nodes forming clusters.

It aims to utilize performance within containers and allow developers to quickly deploy, update or rollback applications without effort.

The way containers and microservices play together is the utmost importance for a business looking to scale. As more businesses digitises or becomes hybrid, these solutions offer plenty of flexibility when building out an ecosystem.

Containers, Kubernetes and Derivatives

Kubernetes is an open-source system for automating deployment, scaling and management of containers that group them, making up an application into logical units for easy management and discovery.

The positive thing about this combination is the possibility that Kubernetes gives to all programmers: do an efficient orchestration with open source containers that automatically implements the management and scaling of containers application.

Given the open source nature of the project, a lot of other manufacturers create new functional “layers” on top of Kubernetes, adding functionality, graphical management interfaces, integration with specific network providers, security contexts, etc. Some examples of this was CoreOS’ Tectonic (now part of Red Hat), Rancher or an even greater example: Red Hat’s OpenShift Container Platform (which we'll discuss in a minute).

What you can do with Container Orchestration on Kubernetes?

  • Configure, Provision and schedule the deployment of containers;
  • High-Availability and Auto-Recovery of containers, ensuring your applications keep running even after a fatal error;
  • The configuration of applications in terms of the containers that they run in. Different execution contexts and environments on the same cluster;
  • Scaling of containers to equally balance application workloads across the infrastructure;
  • Load balancing, traffic routing and service discovery of containers;
  • Monitor the health of your containers. Know your system and how well it’s performing;
  • Secure the interactions between containers.

All of that sounds good right? Is it always that easy? - Well, not always.

What to avoid when adopting Containers?

Failing to monitor containers effectively

Adopting containers also brings some added complexity to the management of normal operations.

Containers are meant to be ephemeral and can be spun up or down at any time. But, this also means that a lot of times administrators will skip on implementing effective monitoring policies that allow the organization to keep track of what’s going on with the containers and supporting infrastructure.

Treating containers the same way as VMs

Enterprises often fail to fully grasp the differences between containers and VMs. For instance, overlooking the fact that containers are immutable and stateless. And this lack of understanding can lead to significant challenges further down the road. Everything you do to change containers needs a clear strategy, instead of recomposing your pipeline all the time.

Running containers as privileged

It's been a long-standing best practice in security that you don’t want processes to run as privilege, unless they need those requirements. Put processes and policies of least privilege in place, as there is no reason for apps and containers to run as root.

Failing to integrate containers into a continuous security loop

This includes image provenance, patching, security scanning and policy-based monitoring. Developers love the control over the deployed environment, but operations and security have concerns about it.

Build security tools that check for known vulnerabilities that are integrated into the EI process. Then automate as much as possible to check to see if the images have newly discovered vulnerabilities.

Why OpenShift?

OpenShift is an application platform built for containers with Kubernetes. This platform provides automated build, deployment and management of applications, to assure the possibility of keep writing code for new ideas.

OpenShift has the power to gather physical, virtual, private and public infrastructures and packaging all of them in a single host. It’s a RedHat cloud development Platform that allows all users to create, test and run applications while they deploy them to the cloud.

Main benefits of OpenShift

  • Simplify the complexity of managing containers;
  • Makes container use viable for enterprise applications;
  • Combats many of the challenges that containerisation can bring, like difficulty on tracking and monitoring containers, excessive time that people spend in system architecture and issues with scaling application;
  • Possibility to innovate and go faster to the market, accelerating application development;
  • Allows companies to take advantage of a large community of Docker-formatted Linux containers;
  • It uses PaaS (Platform as a Service) to automate the hosting, configuration, deployment, and administration of application stacks in a cloud environment;
  • The application works faster than other ones – supporting all containers and transforming them in a simple cloud where the process of managing is automatic.

So, now comes the question: which solution to choose?

There are a lot of different cloud providers, many of them offering solutions based or built on top of Kubernetes.

So, how to make sure that you are making the right decision when choosing a provider and orchestration platform?

Luckily, I did that work for you and have a recommendation.

I recommend: OpenShift on Azure

With these two big players combined, enterprises can empower themselves to create a hybrid cloud environment that meets their business needs.

Azure Red Hat OpenShift combines the enterprise leadership of Azure with the power of Red Hat OpenShift to simplify container management on Kubernetes and help customers innovate on their cloud journeys.

Benefits of using OpenShift on Azure

  • Ensure a consistent application life-cycle experience across on-premise and cloud environments;
  • Scalable, reliable, and supported hybrid environment;
  • Develop, deploy, and manage container-based applications at scale and in a trusted host environment;
  • Rely on an open platform that supports a wide variety of languages, middleware, databases, and applications.

Why Red Hat?

Red Hat is an open source solutions leader, using a community-powered approach to deliver high-performing Linux, cloud, container, and Kubernetes technologies.

Besides, the company is one of the leading contributors to Kubernetes, and has built key features and components of the open source project. And as a catch-all container platform, Red Hat OpenShift is more than a software product. It can be the key to adopting a DevOps culture — automating routine operational tasks and standardising environments across an app’s life cycle.

Why Azure?

Azure is the most trusted Cloud with 50 compliance offerings.

It is also the most intelligent one, being the only public cloud that provides Cognitive APIs, Bots, Machine Learning and Blockchain as a Service (BaaS) capabilities for developers and data scientists.

Besides, it has more regions than any Cloud provider, allowing users to achieve a global scale. Azure also has unmatched hybrid capabilities, it’s the leading Cloud Platform. The only recognized in the industry to have leading solutions in IaaS, PaaS and SaaS and a leader in open source, allowing you to develop and build the way you want, with your choice of tools, application and frameworks.

Check our OpenShift Datasheet for more information:

Contact us if you have any doubts or send me an e-mail: vitor.silva@syone.com.