DevOps has taken on strategic importance over the past few years, enabling business to achieve more, compete better, and ultimately providing the underpinnings to what many call Digital Transformation. But what does that really mean? And how can we break down the DevOps problem space to better understand the dimensions of what’s required to achieve a holistic solution? At Flexagon, when we think about the problem space and its solution we break it into 2 broad dimensions; one which focuses on different aspects of the software delivery lifecycle, and the other which focuses on the capabilities required.
The first dimension includes Build/Continuous Integration, Deployment Automation, and Release Automation which are all focused on different aspects of the software delivery lifecycle and cut across the entire stack such as infrastructure, database, middleware, and applications.
- Build & Continuous Integration – The process of packaging code, configurations, and other artifacts and versioning the resulting ‘build artifacts’ which will subsequently feed into the deployment process. In many cases, source/version control management software such as Subversion, Git, Perforce, TFS, etc. are used to store the source code and other artifacts. An artifact repository is used to store the resulting build artifacts. Builds can be performed on demand, on a schedule, or via a Continuous Integration process whereby a build is triggered when a developer/admin checks a change into the source control system.
- Deployment Automation – Deployment includes a broad set of capabilities such as infrastructure provisioning and configuration management of on-premise and cloud resources, environment management, and migrating build artifacts across test and production environments. In many cases, the same build artifacts are deployed across the environments to ensure consistency and repeatability.
- Release Automation – Orchestrating changes across an environment pipeline can be challenging for many reasons, and release automation streamlines and simplifies the release process. The changes associated with a release are defined, and might include infrastructure, middleware, database, and application changes that should be managed together as a whole. A pipeline is created which includes a combination of development, test, and production environments and their associated quality gates which put controls such as approvals, automated tests, and other manual activities into the process. Not only can release automation processes ensure a smooth and repeatable process across test environments and into production, it can eliminate many spreadsheets and other ad-hoc processes used by many IT departments.
The second dimension includes three broad capabilities that are required (or embedded into) Build/CI, Deployment Automation, and Release Automation as described above: Automation, Controls, and Visibility.
- Automation – At the heart of a repeatable, fast, and scalable IT processes is automation. Without automation, the costs increase, quality suffers, and frankly the entire software delivery process is slow, fragile, and non-sustainable. Automation comes in many forms and eliminates manual, scripted, or semi-scripted processes that many (most) IT departments have implemented today.
- Controls – We need to inject various checks and balances into our processes. Counter to the historical belief that controls result in slow and cumbersome processes, done the right way, injecting controls and appropriate governance helps speed up the overall delivery and maintenance processes across IT. Segregation of duties for developers, operations, release managers, etc. can allow everyone to work together more effectively, achieving the high degree of collaboration that is central to DevOps. Several examples of controls which should be considered include approvals, scheduling, and integration with issue and change management tools.
- Visibility – Insight into the end-to-end delivery process is vital for both real time execution, and effective management of releases and environments over time. Visibility can be enabled in many ways, including dashboards, reports, notifications, and access to logs and other information in the context of whatever the user is attempting to achieve. For example, a developer needs to know when a build or deployment fails in a development environment, and having detailed log information at their fingertips can ensure a rapid troubleshooting and issue resolution process. For a release manager, the insights gained via dashboards or reports which provide a historical view of quality related to builds/deploys/tests, can be very helpful as they manage a release.
Although not a focus of this blog article, Flexagon’s FlexDeploy product provides a platform for orchestrating and automating the build, deploy, and release processes in a comprehensive and integrated way. In addition to extensive automation, FlexDeploy provides controls and visibility to increase speed, improve quality, and decrease the cost and risk of software delivery. Unlike other open-source and commercial solutions, FlexDeploy’s comprehensive and integrated approach is fast and easy to implement, and much more scalable and affordable.