There's one technology that shortens release cycles and makes no distinction between staging and production environments. Container technology supports you in optimizing your processes and offers the highest possible degree of independence in software development.
In this blog post we will show you how and why companies work with containers, and what advantages they derive from them. In the context of this contribution, we asked our customer PwC Switzerland to provide you with solid arguments that speak for the use of containers.
The Experience Center of PwC Switzerland, the leading auditing and consulting firm, offers innovation, design and implementation as an agency service. They have chosen to use our Managed Container Platform to improve their processes.
Before Using Containers
Traditional development has a number of potential challenges, but there are usually three major roadblocks that drive people towards containers:
- Conflicts between the staging, testing and production environments - since different environments may use different operating systems or packages and, especially in web applications, environment impacts runtime, meaning that problems may arise in production that were not anticipated during development.
- Slow release cycle - a manual, and therefore error-prone deployment process that does not well support agile development methods and decreases confidence around releases for both the developer and customer.
- Inflexible environments - inflexible environments make it harder to create bespoke applications due to external factors influencing availability of resources and this additionally makes it slower to experiment with and iterate over new ideas.
PwC Switzerland's Experience Center had a complex working environment due to different technical environments and the collaboration of different software development teams within the company. This presented the Experience Center of PwC Switzerland with the challenge of exchanging relevant context between the individual projects.
The Experience Center of PwC Switzerland wanted to break down the silos between teams, minimize the risk from manual deployment processes, customize runtime environments and work on a platform where scalability is inherent.
Get more information about container technology in our new whitepaper:
During the Implementation
Before you consider using containers for daily use, the following steps are necessary for the implementation. They serve as examples, which can be adapted to your needs.
1. Container Technology: Everything starts with the selection of a container technology, such as Docker. With this technology you can start experimenting with creating and using images and containers locally.2. Container Platform: Selecting which platform you will run your containers on and how to build them. Since there are often dependencies between platform and build processes, it is important to check these components carefully. There are numerous options for how to proceed with the chosen path and platform. Below we have specified some of the most common approaches for you:
- The image definition is located directly in the project, built locally or in a CI, and then pushed to a repository for the respective container technology (e.g docker hub). The container hosting platform (e. g. OpenShift) then pulls this image directly from the repository and runs it.
- The image definition is also directly in the project, but the Paas platform additionally builds and hosts the image (e.g. Openshift with Redhat Container Registry).
- The image definition is seperate from the application project repository (e.g Source2Image) and is built in a generic way to allow re-use between projects.
3. Technical Environment of the Platform: Consider the technical environment around the container platform. Switching to container technology means that a new infrastructure mus be built around you in order to reap the greatest benefits. For this reason, you need to choose the tools to log and analyze container output, define the transition to Infrastructure as a Code, find a way to remove barriers from your deployment process, and raise awareness of new skills and technologies in your development teams.
4. Business Environment of the Platform: The environment around the platform from a business point of view must also be taken into account. The following sample questions can help you with the analysis: What challenges arise from the use of shared nodes, which are necessary for compliance with corporate compliance? What is the relationship between the cost of running dedicated hardware in clusters and the savings that can be made through reduced deployment times? Does your current environment support the DevOps philosophy of fast and frequent release publishing? Does your current corporate culture support the DevOps philosophy?
5. Automated Replication: Put in place the needed tools to build and use these images in all environments. In this way functional processes are automatically replicated again and again and best practices of the first environment are implicitly used everywhere.
The Experience Center of PwC Switzerland started the implementation process with Docker as the core container technology and first started by creating working runtime application images locally. The Experience Center of PwC Switzerland then investigated possible Paas solutions, it was decided that a pure Kubernetes cluster would have exceeded the amount of knowledge required for operation in a company without a dedicated systems team and therefore the Experience Center of PwC Switzerland opted for OpenShift because of its low barrier to entry for users, fast development pace and for its underlying reliance on open source Kubernetes platform, thus minimizing vendor lock in.
Subsequently, they examined best practices for using OpenShift and decided on the s2i approach for image generation as this would allow reuse of base images across projects, thus reducing the maintenance and upkeep of the runtime environment whilst making updates and improvements easy to deliver in an automated way.
The challenges faced by the Experience Center of PwC Switzerland during implementation ranged from compliance issues, to the use of database upgrade paths during deployment and to questions in the area of application logging. The Experience Center of PwC Switzerland addressed the biggest challenges you face as a container user, as we have seen in discussions with other customers. Another important topic, in addition to the above, is the conversion of applications into a containerised format for both the Experience Center of PwC Switzerland and other users.
But Why a Container Now?
We have already listed some of the advantages of containers in the first section. But are containers really that good? The Experience Center of PwC Switzerland was able to answer with a clear yes and proves this with the following facts:
- Successful launch of the Switzerland Global Enterprise website.
- Complete transformation from VM based development to docker-based development, with a significantly decreased cycle time.
- 100% conversion of ci tests into docker-based tests.
- Significantly reduced deployment and feedback pipeline length.
- Lower error rates in projects due to parity in development, testing and production environments.
The Experience Center of PwC Switzerland was surprised by the increase of the general project quality, and how early in the development cycle it was possible to catch bugs, this was mainly due to the "real" parity of the containerised environments. The Experience Center of PwC Switzerland was also able to see an increase in the quality and convenience of the code release process, which previously took a lot of time and created a lot of risk.
In additiona, Adrian Christen, Head of Realization at the Experience Center of PwC Switzerland highlights the collaboration with a Managed Service Provider for the implementation and operation. This gave the Experience Center of PwC Switzerland a lot of support in handling containers and applies in particular to application execution and performance enhancement, logging configuration support, good practices in using dockers, and persistent data storage.If you are convinced of the advantages of containers and would like to find out more about this topic, you will find a lot of interesting information on our website or in our blog.