DevOps: What you should know about DevOps and the use of the DevOps concept
When development and operations are in tension, separate teams, each with their own self-image and different principles, concepts and tools, become a major challenge, and not just in the IT sector. Inevitably, conflicts or problems arise that stand in the way of rapid, agile development and deployment of new applications or software. With DevOps, companies can solve this dilemma and bring development and operations closer together. Processes are accelerated without the quality of work suffering.
We will show you what is behind DevOps, demonstrate concrete technologies and tools, and provide real-world examples.
What is DevOps?
The word DevOps is made up of the first letters of the two English terms "Development" and "Operations". It is a conceptual approach that improves and accelerates the processes in software development and system administration through closer integration. It is a response to the weaknesses of traditional software development, such as the classic waterfall model. Development, testing and operation are much more closely networked and coordinated with each other through continuous feedback. The goals of DevOps are the fast and agile implementation of new requirements, short release cycles and the provision of stable, high-quality software.
Often, the design of the DevOps concept is interpreted differently: Some focus more on the technologies, tools and ways of working, others more on culture, management, leadership and working philosophy. What unites both is that DevOps is a comprehensive concept and concerns the interlocking of different areas. If DevOps is to be introduced in the company, not only technologies, tools and working methods have to be adapted, but the corporate culture, management style and working philosophy will also change.
One more note at the end of this definition: IT security is increasingly being integrated into the DevOps concept. The so-called DevSecOps extends the DevOps concept to include the security aspects. DevSecOps is a logical continuation of the DevOps idea.
How did the DevOps concept come about?
In the past, traditional software development was guided by models such as the waterfall model.
The waterfall model is a linear model with the precisely defined, sequential development steps of requirements analysis, application design, programming and testing. After testing, delivery is made to the operations team, which moves the application into production and makes it available for use. For each new requirement, the entire development process has to be gone through again. Between development and operations, there is only the delivery interface and hardly any feedback. For these reasons, the processes are slow and error-prone.
For the modern application environment with rapidly changing requirements, these compromises are no longer acceptable. To speed up processes and improve product quality, closer collaboration between software developers and IT operations is required. The DevOps idea has emerged from the desire for more agile software development.
DevOps principles and methods
In some ways, DevOps is similar to the Kaizen principle. If you are not familiar with Kaizen, Kaizen is a Japanese word and means "improvement" in English. The Kaizen principle stands for a concept that involves all functional units and acting persons involved in order to continuously optimize a process. Kaizen is used in a wide variety of industries. For example, if a problem arises in a production process, the employees involved in the process report it immediately and interrupt their work. The problem is analyzed on the spot and corrected together with development, control and management. If you would like to take a closer look at Kaizen, you can find more detailed information on Wikipedia, for example.
Transferred to the DevOps idea, Kaizen means that the development and operational processes are in a continuous cycle consisting of the activities Plan, Do, Check and Act. The teams and management involved must internalize the Kaizen principle. Linear models such as the waterfall model described above are replaced by a cyclical process with constant feedback. This cycle involves the planning, development, deployment and operational phases. None of these phases is assigned to a specific role. Each role (development, test, operations) is involved in all phases to some degree.
In our post, "The Three Ways - the principles of DevOps and why other teams in an organization can benefit from it", we outlined the three DevOps principles - better known as "The Three Ways" consisting of
- Flow Principle
- Feedback principle
- Principle of continuous learning and experimentation
described in more detail.
Methods such as Continuous Integration and Continuous Delivery (CI/CD) are derived from these principles. They play an important role for DevOps. The CI/CD process combined from both methods automates all steps of integration and deployment of new program code.
What is Continuous Integration (CI)?
Continuous Integration is a method of continuously integrating the new or changed program code into the main code of an application in small steps. Automated tests take place during each integration and ensure that the main code base always remains stable. Time-consuming feedback and correction processes of the complete code, which would be necessary in the case of a non-steady (continuous) integration of a faulty code, can be avoided. Errors are discovered much earlier than in classical software development processes.
What is Continuous Delivery (CD)?
Continuous Delivery provides new versions of an application or software automatically in regular short intervals in the production environment. The current software can be delivered at virtually any time. The user receives a current version of his software executable at any time. Automated tests ensure that the applications are checked, regardless of their development status. The continuous updates reduce the risk of deployment errors compared to large software jumps.
What are the benefits of DevOps?
Most of the benefits come from the close integration of development and operations, which allows for better communication, faster feedback loops, and agile actions in the first place. All aspects in the lifecycle of an application are mapped in a comprehensive overall concept. Software can be delivered faster, more flexibly, and more agile without compromising the quality of the application and the stability of operations. The requirements of modern applications, which change in shorter and shorter cycles, can be better mapped from both a development and an operational perspective. High quality and rapid deployment of new or adapted software no longer represent contradictions. The advantages of DevOps are briefly summarized as follows:
- fast, agile implementation of new requirements
- accelerated delivery of high-quality software
- accelerated innovation cycles
- shorter time-to-market
- early detection and elimination of faulty code
- reliable operation of applications
- Closer collaboration and better coordination of previously isolated teams
- More efficient management of complex systems
- Optimization of workflows and more efficient use of employee resources
- Improve the customer experience
What is the relevance of DevOps in today's enterprise environment?
In today's business environment, software plays a critical role in all areas of the enterprise. Applications support or control almost all business processes. Increasing digitalization and Industry 4.0 further increase the importance of software. Hardly any part of the value chain can be done without software support. In order to keep pace with the rapidly changing business world and the competition, it is crucial that applications can be adapted quickly and made available in high quality and reliability. IT problems or software errors discovered too late can lead to production downtime and enormous financial losses. Classic development and operational processes are overwhelmed by the speed of today's business world. DevOps provides appropriate solutions and is highly relevant for companies regardless of size and industry.
With DevOps, the required application functions can be provided quickly and in high quality, IT architectures can be improved and work resources can be used more efficiently. In this way, companies deliver excellent service to their customers.
What technologies and tools are typical for DevOps?
In addition to working principles, methods, corporate culture and working philosophy, DevOps has a lot to do with technologies and tools. In the implementation of the DevOps concept, the use of the following technologies is typical:
- Cloud computing
- Container virtualization
- Container orchestration
- Micro service architectures
- Serverless computing
- Code repositories
Cloud computing with its service models Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (SaaS) paves the way to abstracted IT environments. For example, the infrastructure required for application operation can be mapped as code, versioned like software and provided on-demand. Providers such as Google, Amazon or Microsoft, and many other companies provide corresponding cloud platforms.
Container technology ensures the virtualization of applications or services and separates them from the underlying resources. Container runtimes such as Docker or containerd have established themselves as the de facto standards in the field of containerization. Micro-service-based architectures for cloud-native applications can be built from many individual containers.
The management and proper interaction of the many different containers is handled by container orchestration. The most popular and widely used tool for container orchestration is Kubernetes. Kubernetes automates the creation and deployment of containers and enables the elegant mapping of complete CI/CD pipelines.
Code repositories such as GitHub serve as a central code version management in the DevOps environment. A variety of different developers can work simultaneously on a code base while others review and evolve the code. The consistency of the code is ensured at all times.
The concrete use of the DevOps concept: Two concrete examples of DevOps
Case 1: New application of a startup that needs to adapt quickly to changing market requirements
Speed and efficiency are critical to the success of a startup. Suppose a startup provides a new innovative application. Adaptations to the application must be made available in short intervals, often only a few days, in order to respond to the demands of the market or the emergence of possible competition. The classic linear development process is not suitable for such an application, because there is simply no time to go through the development process completely for each new feature and only then roll out the software. In addition, money and labor resources are scarce in a startup company. If the software adjustments are made according to the DevOps concept in a CI/CD pipeline, new functions can be implemented in short regular cycles and released directly for production. The entire process is automated, extremely efficient and requires little manpower. Costly, time-consuming and conflict-related coordination and handover processes between development and operations teams, which are typical of classic development processes, are avoided. Continuous, automated testing ensures the quality of the software.
Case 2: Business-critical applications in the balancing act between reliability and new features
Software used in the enterprise resource planning (ERP) environment, for example, places high demands on availability and reliability. The applications control critical business processes. A company simply cannot afford application failures. At the same time, the latest functions must always be available in order to efficiently map all relevant processes in the company. For an IT service provider that specializes in such software and provides it to its customers on the basis of cloud computing, the use of the DevOps concept is recommended.
DevOps resolves the conflict between reliability and functional scope. New features can be integrated into the software step by step at short intervals in a continuous process. There is no need for a "big bang" in which the software is upgraded to the new version in a semi-annual or annual cycle. It is not uncommon for such a large update to cause significant disruption to the operational processes controlled by the ERP software.
The continuous updates have the advantage for the users of the software that always only small areas are affected by the changes, the rest of the code base has hardly changed. Automated feature tests carried out in advance ensure high quality standards for newly introduced functions.
Conclusion and what the nine cloud navigators offer you in terms of DevOps
The nine cloud navigators offer extensive support in the area of DevOps. In particular, we take care of the Ops part and provide you with our managed services more time to focus on your core business of software development.
Our products like nine Managed GKE (Google Kubernetes Engine) provide the optimal technical base to manage development and operation of your applications in a holistic way. We offer direct support from Switzerland and deep expertise in container orchestration with Kubernetes. In addition, we operate two redundant Swiss data centers with our own servers, on which customer applications can be run reliably, with high availability, securely and with high performance.