Development and operations (DevOps) covers a wide range of functions – everything from software development to quality assurance to configuration management to infrastructure. Now, let’s take a look at 30 terms and definitions to help you better understand DevOps.
An agent is a program installed on a physical server, and it executes various server processes.
- Agile Software Development
Agile refers to an iterative set of software development best practices. The top priorities related to agile software development include software quality, user feedback and the ability to “fail fast” and implement rapid changes as needed.
Autonomy involves self-governance. An autonomous DevOps team empowers each member to act based on the situation and resources available – all without the need to defer to a superior.
- Behavior-Driven Development
Behavior-driven development is a form of software development that involves ongoing communication between developers, business analysts, quality assurance teams and others. It promotes constant communication and helps key stakeholders work together to achieve common software development goals.
Branching refers to a programming technique in which a source code copy is used to create two versions of software. This enables the source code to be modified by two developers at the same time.
- Capacity Test
A capacity test allows a DevOps team to determine the maximum number of end users an application, computer or server can handle before it crashes.
- Complex-Adaptive System
A complex-adaptive system consists of an IT platform or project that includes multiple components. In this system, each component interacts with others in ways that cannot be accurately predicted or controlled.
- Configuration Drift
Configuration drift occurs when a hardware or software infrastructure configuration changes from a recovery or secondary configuration. It may occur due to inconsistent configuration items across a set of computers or devices.
- Configuration Management
Configuration management refers to a systems engineering process for creating and maintaining product consistency. It involves management of a product’s performance, function and physical attributes relative to its design and requirements.
Containerization refers to the use of virtual software containers that include operating system resources, memory and services to run an application or service. It often helps a developer test production flows for services deployed in the cloud.
- Continuous Delivery
Continuous delivery is a software engineering approach that involves the use of short, frequent cycles to produce software.
- Continuous Deployment
Continuous deployment involves the use of an automated software code test. If code passes this test, the software automatically moves into a production environment.
- Continuous Integration
Continuous integration is a software engineering practice that involves merging developer code changes into a single repository. Once continuous integration is complete, the merged code is used to automate software builds and tests.
- Continuous Quality
Continuous quality involves the integration of software quality reviews into the continuous delivery pipeline. It requires quality assurance team members to review software code as soon as it becomes available, as well as address any potential code issues during the software development cycle.
- Continuous Testing
Continuous testing refers to the execution of automated tests as part of the software delivery pipeline. It enables a DevOps team to obtain feedback it can use to identify potential risks before software is publicly released.
Deployment describes all of the activities performed before software is publicly released.
- Event-Driven Architecture
Event-driven architecture is a form of software architecture that involves the creation of events by a system; the system then uses these events to identify or consume similar occurrences in the future.
- Exploratory Testing
Exploratory testing is a strategy that provides human software testers with the ability to analyze different areas of a piece of software. It empowers human software testers with the flexibility to test potential software issues that may otherwise go undetected during automated tests.
- Infrastructure-as-a-Service (IaaS)
IaaS refers to a form of cloud computing that involves the use of virtualized computing resources over the internet.
- Integration Testing
Integration testing involves the evaluation of myriad software components. During an integration test, software components are combined and analyzed as a single group.
- Mean Time Between Failures (MTBF)
MTBF is commonly used to measure hardware component or system reliability. It is calculated as an average of the time between hardware component or system failures.
- Mean Time to Recovery (MTTR)
MTTR refers to the average time it takes to return to production status after a hardware component or system fails.
Microservices, aka microservices architecture, refer to a software development methodology that involves building single-function modules with clearly defined interfaces and operations.
- Model-Based Testing
Model-based testing requires the use of test cases derived from visual models that represent the desired behavior of a particular system or environment. It is commonly used to generate manual tests, test data and automated tests.
- Pair Programming
Pair programming is a software development technique in which two developers simultaneously work on a single feature. It promotes collaboration, as both developers can analyze each other’s code to bolster overall code quality.
- Platform-as-a-Service (PaaS)
PaaS is a form of cloud computing services that involves the use of a platform to develop, run and control applications. With PaaS, a third-party provider delivers hardware and software tools to end users via the internet.
- Technical Debt
Technical debt is a programming concept related to the implied cost of extra development work. A DevOps team may build technical debt if it implements a solution that delivers short-term results versus a long-term solution that requires additional time to produce.
- Test Automation
Test automation involves the use of software to perform tests and compare actual and predicted test outcomes.
- Unit Testing
Unit testing is a software testing methodology in which each part of an application (unit) is evaluated individually.
- Virtual Machine (VM)
A VM is a computer file that acts like a computer system. It runs like a typical computer program and replicates the system experience.
Ultimately, DevOps enables an organization to quickly and efficiently produce applications, products and services. With a clear understanding of key DevOps terms and definitions, an organization can optimize its DevOps results.