05 Dec 15 DevOps Terms Made Simple
It seems like these days you can’t go a single day without hearing something about the DevOps movement. Like most things in tech though, people like to create new words or phrases for everything, which makes understanding things like DevOps more difficult than it needs to be. So unless your nose is buried in The Phoenix Project or the DevOps Handbook, you might be a bit overwhelmed. To make your life easier, I’m going to simplify the 15 most common terms associated with DevOps.
- Agile Development: Since the term DevOps begin by Andrew Shafer and Patrick Debois presenting in 2008 about applying the Agile principles to IT Operations, you will constantly hear this term mentioned. In short, Agile Development is about short dev cycles, better collaboration across teams (business managers, devs, end users), self-organizing teams and constant, or continuous improvement. To dig deeper into this, which is highly recommended if you plan on learning DevOps, there are countless books, blogs, websites, videos and more to reference.
- Continuous Delivery: Continuous Delivery (CD) is the ability to get changes of all types—including new features, configuration changes, bug fixes and experiments—into production, or into the hands of users, safely and quickly in a sustainable way.
- Continuous Integration: Continuous Integration (CI) is when isolated changes by developers are immediately tested and reported on when they are added to a larger code base. The goal of CI is to provide rapid feedback so that if a defect is introduced into the code base, it can be identified and corrected as soon as possible.
- Continuous Deployment: Continuous Deployment is taking Continuous Delivery one step further. The idea here is that every change that passes all the stages of your production pipeline is released automatically to your customers with no human intervention.
- Automation: To make terms 2, 3 and 4, along with many other steps in DevOps more efficient, automation software is used to minimize the number of manual steps and tasks that need to be performed. Automation not only saves time in the SDLC, it also reduces the number of mistakes that can be made by standardizing. Also to clarify, there is a difference between process automation and test automation, which both take place in a DevOps process and are often confused for each other.
- Configuration Management: Configuration management (CM) is a systems engineering process for establishing and maintaining consistency of a product’s performance, functional, and physical attributes with its requirements, design, and operational information throughout its life. As a discipline, configuration management has been around far longer than DevOps. But DevOps practices have changed traditional configuration management practices, putting much more emphasis on automation to handle these mundane tasks.
- Microservices: is an architectural style that structures an application as a collection of loosely coupled services, which implement business capabilities. The microservice architecture enables the continuous delivery/deployment of large, complex applications. It also enables an organization to evolve its technology stack.
- Containers: A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings. Available for both Linux and Windows based apps, containerized software will always run the same, regardless of the environment. Containers isolate software from its surroundings, for example differences between development and staging environments and help reduce conflicts between teams running different software on the same infrastructure.
- Provisioning: Simply put, provisioning is used when creating environments/resources as a substitute to the phrase “spin-up” such as “We need to provision a staging environment”.
- Infrastructure-as-code: Infrastructure as Code (IAC) is a type of IT infrastructure that operations teams can automatically manage and provision through code, rather than using a manual process. Infrastructure as Code is sometimes referred to as programmable infrastructure and is popular in DevOps because it makes it easier to use automation to manage and configure your systems.
- Test-Driven Development: Test-driven development refers to a style of programming in which three activities are tightly interwoven: coding, testing (in the form of writing unit tests) and design (in the form of refactoring).
- Unit Testing: Unit Testing is a level of software testing where individual units/ components of a software are tested. The purpose is to validate that each unit of the software performs as designed.
- Iterations: Iterations are basically processes that get repeated over and over. You hear this term frequently in DevOps, and in Agile as well, due to the goal always being to have shorter iterations (update cycles) than traditional teams.
- Technical Debt: Technical Debt is code that is substandard (in design, execution, or both), and which may cause problems in development, debugging, or operation. It may not be buggy (and often isn’t), but it’s poor design and/or execution makes it more likely that it will eventually result in some bugs. Due to the demand for faster iterations and speed, DevOps teams are at a higher risk for creating technical debt.
- Regression Testing: Testing of the end-trend system to verify that existing functionality has not been impacted by changes to the application.
There you have it. Hopefully those definitions make these terms and buzzwords easier to digest. Of course, I could have made this article with 20, 30, 40 or more terms, but keeping it simple and narrowing in on the most frequently used terms was the goal. Let me know what terms you are hearing that are causing you headaches. Until next time…