The role of DevOps is to bridge the gap between the development and the operations teams. In the past, the structure of software development companies was split into these two departments, and that created some issues in the long run. When the development team wanted to deliver features, they wanted to deliver as many and as fast as possible. The operations team, however, resisted changes that might break something that was already working. There was this constant conflict and this is where DevOps came in as a solution to ensure better collaboration by using a unified approach to software delivery.
The three methods of DevOps
DevOps makes it faster to push new features and iterations, without compromising the quality, stability, and the security of software.
- Continuous integration removes the rule for changes to be merged only before a release. It makes developers merge their work as often as possible, at least once per day, and after validation and testing. Continuous integration emphasizes automation testing and high test coverage.
- Continuous delivery ensures that the code is always in a deployable state. It introduces a cyclic approach to software development, where engineers build and test periodically, along with automating their release process. The code can be deployed anytime and with the push of a button.
- Continuous deployment is the “next generation” continuous delivery–it ensures that the code is always in a deployable state, while also automating the next steps. Every build that passes testing and validation is automatically deployed to production – there is no need for human intervention.
The tools of DevOps
DevOps is all about efficiency–optimising and automating. But this can’t be done without the use of appropriate tools.
Version control systems (Git)–With DevOps, we perform version control of both the codebase and the infrastructure. Version control is important because it allows tracking history and roll back to a previous system state in case of an incident.
Continuous integration and delivery tools (Bamboo, Jenkins)–These tools automate every part of the software development process that isn’t necessarily performed manually (build jobs and continuous integration).
Test automation tools (like Selenium, JUnit, SoapUI)–Selenium automates web browser interaction by testing screens, forms, buttons, and all other parts of the interface, in the same way that a human user would use them. JUnit (and similar tools of the xUnit type) allows for automated unit testing, while SoapUI automates web services testing.
Configuration management and orchestration tools (Puppet, Chef, Ansible)–These tools are used to automate the setup and configuration of devices, systems, and environments, also known as orchestration.
Virtualisation (VMWare, HyperV, KVM) and containerisation (Docker, Kubernetes) tools–Virtualisation enables separation of a physical machine into multiple logical ones. Such virtual machines can host and run different operating systems and multiple business applications.
Cloud hosting (AWS, Azure, Google Cloud)–Hosting the applications on own hardware environment, on a rented cloud service, or even on a hybrid solution, bringing the best of both worlds.
Monitoring (Nagios, Zabbix, ELK)–Monitoring is key for identifying issues with both the application and the infrastructure.
Workflow management and documentation (JIRA, Confluence, Trello)–DevOps is all about efficiency. Project management tools, such as JIRA and Trello, help visualise various workflows, manage tasks and deadlines, track bugs and bug resolution, and run multiple projects at once.
Originally, DevOps was a methodology built on Agile principles. However, unlike Agile, DevOps encourages a more efficient collaboration. It considers use, scalability, and support as important factors as well as software development.
Do you have a project that requires you to apply DevOps?
Request a free consultation at firstname.lastname@example.org