While DevOps is not a set of tools and practices and rather is a mindset and an approach to software delivery, using the must-have DevOps tools makes the workflow much better.
The DevOps workflow consists of several phases that require certain features from the tools used. The phases themselves can be described as planning the next iteration of the product development, building the code to release the next batch of features, testing and deploying them to the production environment automatically, delivering the product updates, monitoring the software along with gathering the customer feedback and planning the next software development sprint based on this feedback.
As DevOps workflow is a natural evolution of Agile software development paradigm, it suggests delivering new software features in rather small chunks of code created during short sprints. This means a schedule-planning and task-tracking tool is needed in order to ensure the team knows what tasks are at hand, what is currently being done and if there are any risks of falling behind the schedule. Tools like Confluence, Jira, Redmine and Trello help DevOps teams achieve seamless and efficient project management cycle and ensure timely product delivery.
Developers need development environments provisioned rapidly and don’t want them repaired for long when something goes wrong. Leveraging Docker containers ensures delivering pre-configured software ecosystems as many times as needed, given they work the same on any machine that runs them, so “works on my machine!” is no longer an issue. This alone is a blessing for software developers. To say even more, implementing the Infrastructure as Code principle, when provisioning a new environment is easier than repairing the broken one — this takes the software development workflow to a whole new level. The tools for this include Kubernetes, Terraform, Chef, Ansible and Puppet, among others.
When the code is written, it must be tested to ensure everything works as intended. As manual testing becomes the thing from the past, automated unit testing is the mainframe approach to software delivery. Once the unit tests are written, the testing and continuous integration/continuous delivery (CI/CD) pipeline can be set, where the testing environments are provisioned automatically, the code is tested and pushed to production if everything went well (or the process is halted and a smart alert is raised if there were any issues). Such workflow helps minimize the time and effort devoted to testing without compromising the code quality or user experience. We recommend Jenkins, CircleCI or Gitlab CI for that matter. This also helps standardize the update process and avoid configuration drift, where different instances have different product versions, resulting in unneeded admin and management overhead.
Once the updated software version is moved to production it must be monitored to ensure stable performance and increased customer satisfaction. This stage also involves performance analysis and logging, raising smart alerts on various issues, gathering customer feedback on the new features, etc. There is a plenitude of tools for performing these tasks, most prominent being Prometheus, ELK Stack, Splunk, Sumo Logic, etc.
Receiving continuous feedback from the end users is essential to align the product development to the expectations of the target audience. Various solutions like SurveyMonkey and Hootsuite help with that task. While these are not strictly DevOps tools, they help the team understand if their effort is applied and perceived correctly, and if they are developing the product or service according to the customer’s expectations.
Each business has a unique operational DNA and might use a varying set of tools. Your company can house a rather small DevOps team responsible for the full software delivery cycle, or quite a few teams working on separate projects. In either case, each software development team can benefit from organizing their workflow according to the best DevOps practices.
The tools you choose for each process stage might vary, as it’s the collaborative approach and bolstering the DevOps culture that really matters. In the end, even the must-have DevOps tools you use do not matter much, as long as the team shares the responsibilities, skills and attitude to improve the software delivery workflow. Thus said, the most important of the DevOps instruments are still git, IDE, and your own brains!
This article was originally published here.