The software world is moving toward agile, and that's a good thing according to the speakers and attendees at Agile 2017, an industry conference taking place in Orlando, Fla. When agile expands to include both hardware and software, you can end up at DevOps, which promises continuous delivery of constantly improving software on a consistent, stable infrastructure.
But what, really, is devops? According to Amazon:
DevOps is the combination of cultural philosophies, practices and tools that increases an organization’s ability to deliver applications and services at high velocity: evolving and improving products at a faster pace than organizations using traditional software development and infrastructure management processes. This speed enables organizations to better serve their customers and compete more effectively in the market.
Which is fine, but what does all this look like when put into practice?
A session at Agile 2017 sought to answer these questions. I sat in on the session and came away with several large impressions about DevOps -- impressions that have implications for IT generalists and security specialists alike.
Eliminate the seven wastes
In the Toyota production system on which much of agile is based, there are seven "mudas" or wastes, that must be eliminated in order to optimize a process. The seven are:
- Overproduction -- When you make things before they're required, then you are over-producing. Don't make unnecessary things.
- Waiting -- Whenever goods are not moving or being processed, the waste of waiting occurs. Waiting is wasting time.
- Transporting -- When you move things around unnecessarily, it's a waste of transportation. This is true whether you're moving raw materials, physical product, people, or status messages.
- Inappropriate processing -- When you subject things to processing they don't need just because it's the way things have always been done, you're committing the wast of inappropriate processing. Reviews that don't lead to quality improvement, and approvals that exist only to satisfy an ego are examples of this waste.
- Unnecessary inventory -- When you have overproduction waste and you keep the items around, then you add unnecessary inventory to your waste list. This wastes space, money and energy -- if you can't justify, in process terms, keeping things around, let them go.
- Unnecessary/excess motion -- Sometimes, a process includes motion that is the equivalent of the spinning beachball on a computer screen -- motion that exists for the sole purpose of reassuring managers that something is happening. Eliminate unnecessary motion and increase efficiency.
- Defects -- In some ways, this is the worst sort of waste because defective products mean that the entire process has been wasted. Improving the product quality means that the process has been improved.
Eliminating these wastes involves the introduction of several practical processes:
Automation -- "Deployment should be boring. If it's not, then you're not doing it right." Processes like deployment should be standardized as much as possible, and standardization leads to automation. In the ideal situation, a developer should be able to, at the end of the dev process, commit updates to the code repository and know that they will be tested, verified and deployed automatically.
A large percentage of all deployment problems come from human errors. Standardizing and automating the process means that errors will be reduced.
Infrastructure is software -- Treating infrastructure as software, where you check configurations in and out of a repository, sign off on all changes and have a record of all changes made. As with software, standardization makes boring deployment possible, and boring deployment is the gateway to automation.
A principled organization-- When DevOps is embraced, it must result in changes to the organization. Without the proper principles in place, DevOps can't be successful. What are the principles that enable DevOps?
- Empowered individuals
- Accountable individuals and teams
- Continuous learning/improvement
- Feedback Loops
- Data driven decisions
- Customer focus
You'll notice that there aren't a lot of "DevOps requires this product" descriptions in the list. The reason is that every organization will decide how these principles are demonstrated in their particular processes. Even within agile, there are many different methodologies, and those expand when an organization evolves from agile to DevOps.
If your organization uses DevOps, I'd love to hear from you. Do you see these principles in action within your company? Do you think these principles are important whether or not your company makes use of DevOps? This is a topic we'll be covering in much greater detail -- it would be great to have your experience in our coverage.