What is DevOps?
The popularity of DevOps has been steadily rising, but confusion remains around what it is and how it can be applied in businesses. At Studio Graphene, we’ve found it to be hugely beneficial to our software development life cycle. So what is it, and how does it work for us?
DevOps is a set of processes that brings development and operations teams together to complete the software development life cycle. It is not a ‘goal’, rather it is a process that is constantly in place, speeding up the process of creating, deploying, monitoring and improving products whilst also creating richer feedback cycles. All of this enables more effective and efficient management and delivery of projects.
What tools do we use at Studio Graphene?
There are a host of tools available that all suit different needs and requirements. Here at the Studio, the following tools work best for us:
- Bitbucket - This is a code repository, so a single place where all the code lives. Having a repository enables everyone to work from the same piece of code at the same time, in a similar way to Google Docs allowing people to edit the same doc at the same time. You can make pull requests (to work on the code) and merge requests (to put the code back together). This avoids confusion or duplication of code.
- JIRA helps with this as it is a Project Management tool. JIRA allows the PM to assign ‘tickets’ e.g. to create a branch of code. When the assignee clicks that ticket, they are taken to bitbucket where they can create the branch and immediately start working on it.
- Jenkins - manages the ‘dev’ side of DevOps. Extremely pluggable, with an ecosystem of more than 1,100 plug-ins which means customers can add necessary functionality, and integrate Jenkins with everything from GitHub to OpenShift Paas. Jenkins works in between the repository and the server and helps make the code deployable. Is a ‘continuous integration and continuous delivery’ solution. Jenkins tracks and logs any changes that are made to code in the repository: what changes were made, who made them etc. This helps from a project management perspective, as any errors can be traced back and rectified.
- One such plugin we use with Jenkins at Studio Graphene is Sonarqube. Sonarqube is an open source tool used to manage code quality - it is able to review code quality, see if there are duplicates, bugs, code smells, vulnerabilities etc before the code is deployed.
- We are using Build Pipeline for auto deployment of continuous modification on corresponding servers.
How has DevOps helped Studio Graphene?
So, with all those new tools under our belt - how have we benefited from using DevOps?
Well, the most striking change is how much faster we can innovate. Speeding up development cycles speeds up innovation. It also stops the Development and Operations teams from working in silos, which slows down processes as there is a lack of communication between the teams. Working as one team has meant that we can create and innovate much faster, which is vital to keep ahead of the curve!
Our deployments also fail less, as DevOps has much more frequent code releases. This means it’s easier to spot defects in code as there is less to go through in each release. If there are errors, they can be fixed quickly. The modular method of development - with tickets being tracked in JIRA - makes it easy to see where errors were made and by who, which in turn makes them easier to resolve. With all projects, errors are going to happen, so being able to promptly fix them is vital.
This transparent process encourages developers to take ownership of their work, and have end to end responsibility throughout the development lifecycle. Furthermore, with Development and Operations working towards a common goal (rather than personal or departmental goals) the team as a whole works much better as there is more communication and trust. This positive environment is not only good for our team's morale but also helps everyone work much more efficiently!