DevOps is a movement and culture that focuses on integration, collaboration and communication between software development teams. The goal is to provide your team with better delivery and faster results.
The origin of DevOps
The DevOps concept was introduced at a Velocity conference by O’Reilly in 2009. One of the conference’s participants, Patrick Debois, an enthusiastic supporter of DevOps, went on to create DevOpsDays. The first meeting took place in Ghent, Belgium at the end of that same year. Following that two-day event, the concept of DevOps began to make its way around the world.
How to get started in DevOps
Testers and sysadmins have an advantage when it comes to the DevOps learning curve, thanks to the skills both roles require. In DevOps, your responsibility is to automate, integrate, stabilize, and scale software deployment. To be a successful DevOps-focused professional, you need to be committed to a constant learning process, expanding your technical knowledge and keeping up-to-date with the most utilized tools, methodologies and practices of automation. Seek certifications in tools such as AWS and Azure. Be a good programmer. Know your scripting languages.
What about DevOps tools?
Choosing the ideal tools is not an easy task, because the right tools should address all of your needs. Your work environment should facilitate jobs, making them faster and less demanding. When exploring and choosing tools, ensure that they suit your work environment. Below, I’ve listed some examples of tools you should consider.
Distributed version control
Version control is essential for companies that practice agile software delivery. Its implementation will affect how new functions are distributed, and the creation of new features enhances stability and reliability in the process of development. Examples of useful tools for this process are Git, SVN and Mercurial (supported by GitHub and Bitbucket).
Software configuration management
Also known as SCM, software configuration management allows insight into the need for changes, and the effect of those changes. SCM is important because an unwanted effect can be rolled back to avoid downtime and end user frustration. Managers can monitor what caused a problem, and quickly determine the best person to address it. Tools such as Pivotal Tracker and Trac help to implement software configuration management.
Automate code deployments
Automating deployments brings many operational advantages to development teams and businesses, and lessens the possibility of errors at the time of deployment. You can use Ansible, Puppet or Chef as deployment tools to automate configuration management and application deployment.
Issue ticketing systems
The right ticketing system will help you improve efficiency, and will serve as a place to list issues and improvements that need to be implemented, making it easier to direct functions to teams and follow what new features need to be deployed. For ticketing, you can use something like Taiga or JIRA.
Another important practice within DevOps is the integration of code, developed with tools that will run tests and automate builds to detect errors more quickly. Recommended tools are Jenkins and Semaphore.
What knowledge is necessary for DevOps?
To be a true professional in DevOps, you need to be the mediator between developers, IT analysts and QA. Understand their needs and create the appropriate, most efficient flow of deliveries. As mentioned above, concentrate on upgrading your skills. Understand the areas of infrastructure, networking, testing and development.
Every day, the need for DevOps in the market increases, but DevOps isn’t easy. DevOps is an endless and focused effort to improve communication. It guarantees higher quality and reduces risks. The correct tools and methods in your work environment will provide your team tangible gains in productivity, the agility to deliver better results, and can help you create more resilient software.