DevOps

from Wikipedia, the free encyclopedia

DevOps describes a process improvement approach from the areas of software development and system administration . DevOps is a portmanteau of the words Development (English for development ) and IT Operations (English for IT operation ). DevOps should by common incentives , processes (English: and software tools Tools ) more effective and efficient cooperation between divisions Dev , Ops and quality assurance enable (QS). With DevOps , the quality of the software , the speed of development and delivery as well as the cooperation of the teams involved should be improved.

The development of software is strongly influenced by a combination of specially coordinated tools, infrastructure and organizational processes. The better the teams, tools and infrastructure involved are coordinated, the faster organizations should be able to deliver their software in better quality.

term

Of DevOps in 2015 there were different interpretations and definitions. The term is best understood as a description of an operating procedure in contrast to earlier methods. An example of a definition from 2014 is the following:

"DevOps is agile IT (operations) delivery, required to match the cadence of agile IT development. DevOps is a philosophy, not a method, or framework, or body of knowledge, or * shudder * vendor's tool. DevOps is the philosophy of unifying development and operations at the culture, practice, and tool levels, to achieve accelerated and more frequent deployment of changes to production.

  • Culture = behavior, teamwork, responsibility / accountability, trust / empowerment ...
  • Practice = policy, roles / RACI , processes / procedures, metrics / reporting, KPIs / improvement ...
  • Tools = shared skills, toolmaking for each other, common technology platforms ... "

“DevOps means agile IT (operational) provision, which is necessary to match the rhythm of agile IT development. DevOps is a philosophy, not a method, a model, a body of knowledge, or * shudder * a tool for sale. DevOps is the philosophy of standardizing development and operation at the culture, practice and tool level in order to achieve faster and more frequent implementation of changes in production.

  • Culture = behavior, cooperation, responsibility / liability, trust / authorization ...
  • Practice = principle, roles / RACI , processes / procedures, metrics / reporting, KPIs / improvement ...
  • Tool = shared knowledge, mutual toolmaking, common technology platforms ... "
- Rob England : The IT Skeptic

The agile software development changed the way the programming team. DevOps, on the other hand, represents a change in corporate culture based on the way software is commissioned and operated .

The DevOps idea can also be understood as a cross-departmental, company-wide cooperation of managers, developers, testers and administrators with the involvement of customers. All parties involved work together to achieve the common goal: the provision of software for the customer. This corporate philosophical approach is called BizDevOps ( Business plus DevOps ).

Waterfall, agile methods and DevOps

In the software development process, one or more procedural models are usually used , for example the waterfall model or the V-model . Depending on the process model used, a software life cycle can include the phases of planning, analysis, design, development, testing, delivery or other phases.

In 1991, James Martin introduced the principle of prototyping for an iterative development approach in his Rapid Application Development (RAD) model . In combination with the creation of test cases and the execution of unit tests , prototyping involves both the developers and the business side in the software development process. Agile software development, Extreme Programming (XP) or Scrum use the generic approach of the RAD model with the aim of accelerating software development.

The use of agile methods in the software development process offers more flexibility and the possibility of faster adaptation to new requirements. Code development and execution should be closely interlinked so that errors can be found and corrected promptly. Continuous integration (CI) software such as Jenkins enables automated software builds with the aim of maintaining higher code quality and resilience ( robustness ) in the event of errors.

The deployment (English: deployment ) of a new software version traditionally creates tension between developers and IT operations. The developers want to provide the customer with updates or new functionalities as quickly as possible. The IT operations tend to see a failure risk for the IT system in every change. Belgian system administrator Patrick Debois recognized that an improved way of working between dev and ops could lead to faster software delivery with fewer errors. Since the first DevOpsDays conference in Ghent in 2009, this approach and the associated measures have been summarized under the term DevOps .

Introduction of DevOps

A few measures are recommended for the successful introduction or implementation of DevOps :

  • Creation of business cases to prove the need for DevOps ,
  • Successful business cases (English: Success stories ) to increase acceptance by users and management,
  • Building a holistic culture of collaboration,
  • Implementation of measures for the use of automation,
  • Common metrics to measure success for Dev and Ops teams or
  • Harmonization with (existing) IT standards or frameworks such as CMMI or ITIL .

DevOps in practice

The use of the DevOps approach means that the developers are more concerned with installing virtual machines , with aspects of IT security (“DevSec”) or with the planning and implementation of deliveries.

New for the administrators will be dealing with automation in combination with "Infrastructure as Code" as well as dealing with version management and automated tests.

Developers and IT operations may have to adapt to new, cross-departmental key performance indicators (KPIs) and thus common incentive metrics.

With DevOps many stable releases should be made possible. This requires the development of an improved (agile) collaboration between developers and IT operations. Ensuring code quality and working more efficiently through increased automation of Dev and Ops tasks are just as important .

For example, the build from the repository, static and dynamic code analyzes as well as unit, integration, system and performance tests should run automatically. Continuous, as automated as possible, monitoring monitors the so-called deployment pipeline.

Continuous integration and continuous delivery tools enable the required high degree of automation of the "deployment pipeline". Several tools in combination are used together in the context of the software development process.

code
Code development and code review, tools for version control, merging of code,
Build
Tools for continuous integration and creation of a "Build Status",
test
Static and dynamic code analyzes and tests,
Package
Package Manager for delivering binary formats (ZIP, JAR, WAR, DLL, Docker Image),
Release
Change management , e.g. B. according to ITIL, release of releases (application release automation (ARA) tools),
Configure
"Configuration" or "Systems Management" tools (Infrastructure as Code tools),
monitor
Monitoring of applications (application performance management), customer feedback.

The tools known in 2016 included Docker (provision and distribution of software containers), Jenkins (Continuous Integration), Ansible (Configuration Management), Puppet (Infrastructure as Code) or Vagrant (virtualization platform).

In the Microsoft environment, Team Foundation Server (TFS) or Azure DevOps (for continuous integration, build, test, packaging, release management and systems management via PowerShell or AzureCLI Python scripts ) and Microsoft Azure (hosting and monitoring) are also established .

DevSecOps

While DevOps takes care of the provision of the infrastructure for services and the delivery of these services, DevSecOps is responsible for the security of this infrastructure and IT compliance .

DevSecOps' areas of responsibility:

literature

  • Gene Kim, Jez Humble, Patrick Debois, John Willis: The DevOps Handbook. Successfully transform teams, tools and infrastructures . O'Reilly, Heidelberg 2017, ISBN 978-3-96009-047-2 (English: The DevOps Handbook. How to Create World-Class Agility, Reliability, & Security in Technology Organizations .).
  • Nicole Forsgren, Jez Humble, Gene Kim: The Mindset of DevOps Accelerate. 24 key competencies to build and scale high performing tech companies . Vahlen, Munich 2019, ISBN 978-3-8006-5963-0 (English: The Science of DevOps Accelerate. Building and Scaling High Performing Technology Organizations .).
  • Jez Humble, David Farley: Continuous Delivery. Reliable Software Releases Through Build, Test, and Deployment Automation . Addison-Wesley, Upper Saddle River 2010, ISBN 978-0-321-60191-9 (English).
  • Michael Hüttermann: DevOps for Developers. Integrate Development and Operations, The Agile Way . Apress, New York 2012, ISBN 978-1-4302-4569-8 (English).

Web links

  • DevOps. Informatik Aktuell - series of articles on DevOps, February 1, 2019, accessed on March 7, 2019 .
  • Felix Massem: Operations today and tomorrow. heise developer, April 28, 2015, accessed March 7, 2019 .
  • Fabian Schaub: DevOps under the microscope. Browigo, April 22, 2018, accessed April 22, 2018 .
  • Brian Dawson: Misconceptions About DevOps - And How To Do It Right. What actually is DevOps? In: Developers.de. Software & Support Media, January 6, 2017, accessed April 19, 2017 (part 1/2).
  • Brian Dawson: Why DevOps is so important. DevOps is not a flash in the pan. In: Developers.de. Software & Support Media, January 9, 2017, accessed April 19, 2017 (part 2/2).
  • Asami Novak: Going to Market Faster. Most Companies Are Deploying Code Weekly, Daily, or Hourly. In: New Relic Blog: Modern Software. February 4, 2016, accessed April 19, 2017 .
  • Ravi Tharisayi: DevOps 101. Moving Fast With Confidence. In: New Relic Blog: Modern Software. April 13, 2017, accessed April 19, 2017 .
  • Thomas Fischer: DevOps as modern IT outsourcing. (PDF) Agile software development thought through to the end. In: noris.de. August 14, 2017. Retrieved August 14, 2017 .

Individual evidence

  1. a b c Wilhelm Hasselbring: DevOps. (PDF; 2.614 kB) Software architecture at the interface between development and operation. In: GI conference on architectures 2015, Hamburg. July 10, 2015, accessed February 24, 2016 .
  2. ^ Rob England: Define DevOps. What is DevOps? In: The IT Skeptic . November 29, 2014, accessed February 17, 2016 .
  3. ^ A b Brian Fitzgerald, Klaas-Jan Stol: Continuous Software Engineering - A Roadmap and Agenda . In: Journal of Systems and Software , July 4, 2015 doi: 10.1016 / j.jss.2015.06.063
  4. a b Nayan B. Ruparelia: software development lifecycle models. (PDF; 345 kB) In: ACM SIGSOFT Software Engineering Notes 35 No. May 3 , 2010, accessed February 24, 2016 .
  5. DevOpsDays 2009 Ghent. In: devopsdays.org. 2009, accessed February 17, 2016 .
  6. Patrick Debois: DevOps. A software revolution in the making? In: Cutter IT Journal 24, No. 8th 2011, accessed on 11th August 2015 .
  7. Floris Erich, Chintan Amrit, Maya Daneva: Report. (PDF; 248 kB) DevOps Literature Review. October 6, 2014, accessed May 26, 2019 .
  8. a b c d e Patrick Peschlow: The DevOps movement. What is it actually and what does it mean for us? In: Java magazine 1.2012. codecentric AG, January 2012, accessed on June 29, 2020 .