As the transition to a digital economy takes place, IT has never been more important. Consequently, IT is now viewed far more strategically by enterprises and the demands on IT shops far exceed their ability to keep up. Agile development techniques and, more recently, microservices have allowed developers to cut cycle times and reduce application backlogs. Virtualization has permitted better resource utilization and lifecycle tool chains permit applications to reach production status somewhat faster. At the same time, cloud services have fueled the emergence of shadow IT despite security and governance concerns regarding mission-critical data and processes residing outside of the corporate data center.
However, fundamental challenges still exist between how to support a much faster cadence by developers for application delivery, and how to optimize the performance of deployed applications. These challenges begin with the adoption of agile development techniques and automation of key lifecycle activities. However, these challenges rest on the rate at which resources can be provisioned and how quickly the enterprise can accept managerial responsibility for new production applications. While these challenges describe application development and deployment, once applications are in production, there are additional application management challenges. These application management issues revolve around how to predict issues and optimize the performance of the application given changing application demands, resource availability, and business priorities.
While the term DevOps has been with us for a while, it is important to clarify what DevOps means. The DevOps term, a concatenation of development and operations, implies a unified and coherent approach to IT. As we will see, DevOps is really about reengineering IT so that development and IT operations activities can function in a unified way but with maximal autonomy so that lifecycle activities can move forward unimpeded. This approach opens the door to technologydriven automation that is able to shrink cycle times by 1-2 orders of magnitude while simultaneously improving application quality, maintainability, and business value.