This blog series explains how to engineer applications for DevOps.
Topics covered in this blog series:
• Factors to consider when deciding whether an application is a good candidate for DevOps.
• Best practices for engineering designs for DevOps
• DevOps applied to enterprise apps and software services
• DevOps applied to COTS systems.
• DevOps applied to manufactured (embedded) systems software.
• Five levels of application maturity
This blog covers factors to consider when deciding whether an application is a good candidate for DevOps.
Factors to Consider for Engineering Applications
The extreme worldwide hype around DevOps products and services seems to suggest that DevOps is good for everybody and applies equally well to every software-based product or service in every organization. Here is my experience with that assumption: It is not true!
On the other hand, I have heard people say that DevOps does not apply to applications for which it absolutely does! Before you go a step further in your DevOps journey—or decide that your application does not qualify for DevOps—you should consider carefully how well your application is engineered to become a model for DevOps implementations.
Best Practices for DevOps Determination
The following are important factors you can use to decide whether an application is a good candidate for DevOps:
• The application will benefit from faster lead times.
• Leaders with responsibility for this application are open to collaboration and will be sponsors of change.
• Team players that are associated with the application team (product owners, Dev, QA, Ops, infrastructure, security, PM) are open to collaboration and change.
• The application is currently using or planning to use service-oriented, modular architectures or microservices.
• There are at least ten people associated with the application including product owners, Dev, QA, Ops, infrastructure, security, PM. Smaller projects with smaller teams may not show sufficient impact or justify substantive DevOps investment.
• The application is expected to undergo changes for more than a year. Less time would not likely yield return on the investment required for DevOps.
• The application represents a good level of business impact and visibility but does not involve an extreme amount of risk for the business.
• The application experiences frequent demands for changes from the business.
• Not all tools used with the application need to be replaced to implement a DevOps toolchain. The costs of changing out all tools can negatively affect the ROI and business case for DevOps transformations.
• Efforts to build, test or deploy releases of the application are substantial and could be reduced significantly by automation.
It is not necessary for an application to perfectly fit all the factors, but the more closely it fits the more likely your application will benefit from using DevOps and will, therefore, be worth the cost to implement a well-engineered DevOps practice.
DevOps can be used with all types of software applications and services. However, not all applications and services should be engineered to use DevOps. The factors that determine whether to engineer DevOps for an application have more to do with business factors than technology differences between different types of applications. Applications must be engineered in specific ways for DevOps to operate effectively.
What This Means
This blog is part one of a series explaining how to engineer applications to be most suitable for DevOps. This blog series explains how to engineer applications for DevOps including:
• Factors to consider when deciding whether an application is a good candidate for DevOps.
• Best practices to engineer designs for DevOps.
• DevOps applied to enterprise apps and software services
• DevOps applied to COTS systems.
• DevOps applied to manufactured (embedded) systems software.
• Five levels of application maturity
This blog covers the first two topics: factors to decide whether an application is a good candidate for DevOps and best practices to use when engineering designs for DevOps.
For more information on engineering applications for DevOps, refer to my book Engineering DevOps.