The following is an edited excerpt from our webinar that took place March 10, 2015. The entire recording may be viewed here: https://attendee.gotowebinar.com/recording/737060184353086210. This is the first in a series of webinars on DevOps Engineering and discussed why DevOps Engineering is important. The webinar was given by Mr. Jeffery Payne and Mr. Richard Mills of Coveros.
One of the main things we’ve learned about building DevOps solutions is that there is a lot of code involved. There is automation code, code for managing builds, code for deployments, code for testing, etc.
When we first started doing DevOps, we would dive right in and start building DevOps pipelines. Many people still do this today. We would start simple by going out and grabbing some needed tools. We would download Jenkins, Chef or Puppet, Selenium, among others. We download all these tools and would string them all together into what we call a DevOps pipeline … a pipeline for automatically moving code from development through test and into production.
When doing so, things became really cool really fast and software teams would see the power of DevOps! They would started bringing more and more software to us they wanted deployed. They would commit it into their version control software of choice. We would pull it out. Build it and integrate it. Run tests against it. Deploy it into different environments. Then we’d work to run more automated tests against the application to increase quality. We’d promote it, build it, label it. We’d do all these wonderful things and demonstrate the power of an automated build, test, and deployment process to the organization.
And of course, we were learning things as we went. We began building more and more complex pipelines for software development teams. It becomes sooo easy to create environments with DevOps that we would often say, “let’s create twenty of them!” Our DevOps solutions got bigger and bigger and more complex.
As we grew our DevOps solutions, pipelines became mission critical software.
Suddenly software teams were relying upon our DevOps pipelines to deliver to production. Our solutions became a 24×7 capability that had to stay up at all times. Meanwhile, we were continuously trying to add new features and this became a problem because if a new feature didn’t work right, our pipelines would break and not be available for use.
At this point, it was no longer just “the devops guys” who were using our DevOps pipelines. Lots of people were using them. The application teams needed to be able run it to get their builds. The ops teams were like “Hey, you can deploy software with this thing? We want to do that too.” Management staff wanted to look at build and test results. See quality metrics. Measure security. The problem is, they had no idea how to wield these tools effectively and their user interfaces were terse and command line oriented.
What do we do about a system too complex for people to use?
To solve these problems, we put our engineering hats on. Those of us who went to engineering school learned some things there about design and design patterns. We also learned how to build and test things in a rigorous manner.
And that’s where the DevOps Engineering concept came from … the need to engineer DevOps solutions for the long haul. For us, DevOps Engineering is the use of engineering principles and practices to build rigorous, robust, maintainable, usable DevOps pipelines for users. Key components of this approach include:
- Use of DevOps design patterns to build scalable, robust pipelines,
- Software engineering practices for building maintainable DevOps code,
- Usability analysis and user experience design to improve usability for users,
- Separation of DevOps development and test environments from the production DevOps pipeline to keep 24×7 availability while building and testing new capabilities … we call this a pipeline for the pipeline,
- Integration of automated security analysis to assure secure code is delivered to production and all security requirements are met.
In summary, we’ve figure out how to build, test and deliver automation code in a way that supports the rest of the organization. With DevOps Engineering, DevOps becomes a product.
You can learn more about this approach in our ongoing webinar series. The next one up is Continuous Security in a DevOps Environment, Tuesday, April 28 at 12pm EDT. REGISTER NOW at https://attendee.gotowebinar.com/register/2957645962444657154