DevOps is a set of practices that help companies ship software releases frequently, reliably, and with better quality.
Every company today is under pressure to be great at developing and delivering software. The DevOps movement has created an awareness and mindset that encourages better collaboration and automation. As a result, Development, Test, and Operations teams have started automating their activities.
The ultimate goal of DevOps is Continuous Deployment, when every change goes from source control to production in a fully automated manner with no human intervention.
Though most organizations adopting DevOps have found some success with combination of cultural changes and localized automation, Continuous Deployment remains an elusive elixir of life that is still out of reach for most organizations. This is primarily due to the following four challenges.
There are many tools to automate individual DevOps activities like CI, infrastructure provisioning, or building AMIs, but there is no easy way to connect the different tools you use for each. As a result, your activities are optimized locally but not across your end to end software delivery workflows, creating disconnected "islands of automation".
Every organization having a mix of heterogeneous applications. For example, you might have a mix of traditional and modern apps, or a mix of apps using different languages, tools, databases and deployment endpoints. This makes it difficult to commit to a standard toolchain and to avoid the "matrix from hell". Your custom scripts soon look like spaghetti.
Application architecture is evolving rapidly as applications are broken down into smaller and smaller fragments. The number of pipelines needed to ship these apps explode, and current Application Release Automation (ARA) tools are not enough to manage the complexity. Also, manual processes at the edge of each silo slow things down even further.
Many organizations have made some progress towards faster software releases with a combination of a cultural change and automating discrete activities. However, efforts plateau after a while and it's difficult to measure where you are with your DevOps efforts, or how success is defined. This leads to a lot of frustration.
The car industry went through a similar evolution and perfected a highly efficient approach as it went from highly custom cars created manually, to automated parts production with manual assembly, to fully automated assembly lines. It is time to consider a similar approach towards DevOps and software development. We call this approach “Assembly Lines (AL) for DevOps”.
An Assembly Line approach has the following characteristics:
Connect "Islands of automation" into end to end workflows that enable
Define workflows as code with a
Gain end-to-end visibility with