Many years ago the lifecycle of software was simple: a development team worked on a new version for 6 to 12 months and once the version had been tested the software was put on discs and shipped to operators of the software. These operators were responsible for installing, configuring, and operating the software for consumers.
Since then, development practices have evolved substantially. The typical development team you find in a software organization today is a tightly-knit group of multi-functional developers who follow the Agile methodology of the software development lifecycle. Agile methodology allows the gaps within a development pipeline to narrow significantly, which means that code is pushed out even faster for testing. As the output of the development teams accelerates, the output and performance of the operations teams also has to accelerate.
DevOps is the natural progression of the Agile methodology throughout an organization. It brings together both the operators of the software and the developers of the software into one cohesive unit through the use of the DevOps toolchain.
The aims of DevOps are to shorten the development cycle, increase deployment frequency, and release dependable code. In practical terms, we realize these goals through the increased use of automation and monitoring at all stages of the software lifecycle, as well as better infrastructure management. The cultural aspect of DevOps is a bit more tricky, but we at MonkeyMedia Software have always been fortunate in embracing a culture that closely aligns with the DevOps principles.
This coming year we will be adopting more of the DevOps methodology and toolchain, with three primary principles behind it:
Infrastructure Automation - We will be moving to Microsoft Azure in the coming year. With this move we will have the opportunity to set up our infrastructure as code, which will allow us to automate the spin-up of new servers and scale according to demand. This also allows our team to provision independent development environments that will be identical to production.
Continuous Delivery - We are already making use of some tools which allow for Continuous Delivery (Jenkins) and will continue to make improvements to the automation of our tools.
Site Reliability Engineering - We have expanded our monitoring abilities significantly this year already and are starting to make use of the data that we are getting back from our tools. We are adopting the Incident Command System and also shifting the perspective of designing our sites for operability.
As we adopt more and more DevOps principles and tools, a beautiful thing begins to happen. Our work becomes more efficient through the benefits of automation, inter-team understanding increases, and the productivity decrease caused by context-switching diminishes. Ultimately, this allows each of our team members more time to focus on the work they are invested in, translating to a better product and greater value for our customers.
The DevOps transformation of the MONKEY team has already begun.