In this new blog series we will be discussing some best practices and lessons learned about how to implement DevOps (Development + Operations) using the Inflectra platform in conjunction with other tools such as Jenkins. This is based on some experiences we've had internally implementing DevOps in the past 2-3 years as well as feedback and suggestions from our customers.
Traditionally the words of software development, testing (also known as Quality Assurance) and the IT infrastructure needed to support such activities (often called Operations) were separate worlds. The developers would write code based on requirements they were given, testers would test the features based on the same requirements (hopefully?!) and the IT staff would provide the computers, networks, and software needed by the two other groups to perform their activities. They would also be in charge of providing different environments (development, test, staging, production) that could be used by the development and testing teams.
With the rise of agile methodologies such as Scrum, XP and Kanban, these three separate "stove-piped" worlds could no longer exist. The term Application Lifecycle Management (or ALM) was the unification of development and testing into a single process, and the logical next step has been the unification of all three disciplines into a single integrated process called DevOps:
The goal of DevOps is to automate as many of the steps as possible between an idea being formed and the finished code being released into production. This shrinks the time between someone coming up with the idea of a new product or business and the new product being available in the marketplace. This means that concerns such as provisioning servers and other infrastructure as well as scaling a successful application need to be as automated and seamless as the software development build process.
There are many different ways of categorizing tools that improve DevOps, however in general it is recognized that the following seven areas need to be considered when looking for different tools that make up what is usually known as the DevOps ToolChain:
Now the relative importance of each of these seven items will vary depending on the type of application (web based, mobile, legacy desktop, micro-services, AI, data warehouses), the methodology being used (continuous build and integration usually requires an an agile methodology), and whether the applications are in MVP, early adoption, mainstream adoption or support and maintenance mode.
One question that we're often asked, is how does DevOps relate to ALM. Well there are many discussions about this topic, but in our minds DevOps is the logical extension of ALM to include the IT / infrastructure that is critical for software development activities to occur, but is often forgotten or taken for granted. The other difference is that for the most part DevOps is such a broad concept that you need a set of different tools to perform all its activities, whereas ALM is often something that a single tool or platform is capable of managing. So ALM tools and vendors are effectively key elements of the overarching DevOps Toolchain.
In each of the installments we shall also have a dedicated section on how we perform DevOps at Inflectra. We shall describe some of the tools and techniques we have used over the past 12 years for DevOps. Over that time, we have grown as a company, changed environments, moved to the cloud and adopted different approaches and methodologies, and we hope that our successes and mistakes will be helpful to you in making good decisions as your teams grow and evolve.
In the next installment, we shall be looking at the Planning aspects of DevOps and how you can use a mixture of Inflectra products and other tools and plugins to improve the Plan aspect of the DevOps Toolchain.