Over a decade ago one of the main practices that I looked for in teams were automated testing and continuous integration. If teams were able to do these well then it seemed like the “golden bits” would be ready at all times for Operations to deploy. Many teams were thrilled to have delivery from planning to local development to continuously integrated and then let Ops handle it from there.
Earlier in my career I had worked in a couple of companies where there was no separate Ops team. We had to deploy, manage, and maintain our own operational environments. I recognize now that not having the ability to take delivery from plan to operational made me feel uncomfortable.
Around a decade ago I started asking the teams I was working on to focus on “Push Button Release”. Even if we couldn’t access the deployment environment we would ensure that the number of steps to deploy our software was 1 or as close to 1 as we could possibly get. Our team should automate the deployment process as though we would have to manage the actual deployment ourselves. Not only that, we should also tend to the rollback deployment process in the same way. In fact, we created CI jobs that deployed and rolled back just to ensure that these automated scripts acted as expected after all the builds, tests, and packaging jobs completed.
A decade later our industry is tending towards new possibilities due to progressive and somewhat obsessive approaches revealed publicly by companies such as IMVU, Netflix, Etsy, and others. It is no longer enough for teams to hand off a validated build with a “push button” deployment script. Teams now run their own configuration management via Puppet, Chef, Ansible and Docker and are finding many different ways to manage the deployment environment configuration dynamically.
The next few years will bring many tools and platforms that will attempt to tackle the deployment environment configuration challenges such as service discovery, log aggregation, monitoring, alerting and notification, attached storage, security, policy management, data transport and more. It is an exciting time to see how we are progressing past automated testing and continuous integration and as an industry looking to automate all the way into operations. With the momentum of the DevOps movement and PaaS (Platform as a Service) innovation, this is an exciting time and I intend to be part of it as much as I can. Lets make the promise of DevOps and PaaS a reality.