With the development process “shifting left,” DevOps is becoming a crucial part of any software product or service. Therefore, it’s no surprise that the number of tools for DevOps keeps growing to answer all of our working needs.
However, the existence of so many DevOps tools can be confusing. To assist in organizing and choosing the right tools for the right needs, we’re going to cover the top tools over the upcoming weeks and their pros and cons. The tools will be divided into the five stages of the work cycle: plan, develop, test, release, and operate. We will cover a different section each time, for a total of six blog posts (including this introductory one).
For your convenience, you can see the complete DevOps ecosystem infographic here:
So, what does each stage mean?
Planning is the initial stage, and it covers the first steps of project management. The project and product ideas are presented and analyzed, in groups, alone, or on whiteboards. The developer, team, and organization decide what they want and how they want it and assign tasks to developers, QA engineers, product managers, etc. This stage requires lots of analysis of problems and solutions, collaboration between team members, and the ability to capture and track all that is being planned.
Developing is the stage where the ideas from planning are executed into code. The ideas come to life as a product. This stage requires software configuration management, repository management and build tools, and automated Continuous Integration tools for incorporating this stage with the following ones.
A crucial part that examines the product and service and makes sure they work in real time and under different conditions (even extreme ones, sometimes). This stage requires many different kinds of tests, mainly functional tests, performance or load tests, and service virtualization tests. It’s also important to test compatibility and integrations with third-party services. The data from the tests needs to be managed and analyzed in rich reports for improving the product according to test results.
Once a stage that stood out on its own and caused many a night with no sleep for developers, now the release stage is becoming agile and integrating with the Continuous Delivery process. Therefore, the discussion of this part can’t revolve only around tools, but rather needs to discuss methodologies as well. Regarding tools, this stage requires deployment tools.
We now have a working product, but how can we maximize the features we’ve planned, developed, tested, and released? This is what this stage is for. Implementing the best UX is a big part of this, monitoring infrastructure, APMs, and aggregators, and analyzing Business Intelligence (BI). This stage ensures our users get the most out of the product and can use it error-free.
Obviously, this work cycle isn’t one-directional. We might use tools from a certain stage, move on to the next, go back a stage, jump ahead two stages, and so on. Essentially, it all comes down to a feedback loop. You plan and develop. The test fails, so you develop again. The test passes, you release it, and you get information about customer satisfaction through measurement tools like google analytics or A/B testing. Then, you re-discuss the same feature to get better satisfaction out of the product, develop it again, etc. The most important part is that you cover all stages, as we will do in the upcoming weeks.
Which tools do you use for each stage? We want to hear from you, so you’re welcome to write your recommendations for tools in the comments section. We might include your quote in the next few posts!