DevOps by example: Tools, Pros and Cons of DevOps Culture

There are several steps between apps and websites being conceived and finally released, including design, programming, QA and deployment. Check out some practices of the DevOps movement.

CONVENTIONAL DEVELOPMENT OF SOFTWARE: DEV VS. OPS

There are traditionally distinct teams and processes for the various states of a project, from the initial stages of analysis and design, to the actual development and testing, to deployment and maintenance. There is a good reason for the differentiation. They all demand different skill sets. Nevertheless, a stringent and in some instances bureaucratic separation of duties could add plenty of unnecessary delays, and experience prove that blurring some of the lines could be beneficial for all parties, as well as for the process as a whole.

THE DEVOPS THING

DevOps is considered a cultural change for the win, as the intersection of development, operations and QA. The same as with agile development, DevOps is not a specific tool or technique that could be implemented and then done. Instead, it is a culture or a mindset even that the organization and the team could adopt and would make processes smoother. What is DevOps exactly? Consider developers able to do some of the tasks that normally are assigned to system admins, like making production sites updates, building new servers and deploying applications. Furthermore, consider sysadmins sharing some tasks with developers and managing multiple servers at once.

BENEFITS OF DEVOPS

Enterprises that embrace DevOps culture report significant enhancements, and various surveys done among some of them seem to confirm the claims. Some of the enhancements include:

Accelerated time-to-market, shortened time it takes from when an idea is conceived until it becomes available for sale or in production.
Cost reduction with reports of an average 20 percent reduction.
Improved productivity with continuous delivery, testers and developers saving time in setting up and fixing working environments, as well as deployments considerably faster.
Building the right product and developers get quicker feedback from users.
Improved quality of product. Companies report a very significant decline in open bugs and other concerns, by over 90 percent.
Reliable releases. With frequent and smaller releases, the code changes, and thus the bugs introduced and the impact are smaller as well.
Enhanced customer satisfaction. Not surprisingly, this is a byproduct of all the previous improvements.
THE CONS OF DEVOPS CULTURE

Switching to DevOps culture could bring several benefits, but also comes with some challenges to overcome as well.

The first is at the organizational level. As development and deployment constraints are removed and sysadmins and programmers have more independency, those who are involved would have to adopt a different mindset, and the right mechanisms for feedback loop from Ops to Dev would have to be set in place, like boards of discussions, issue trackers and the like.

The second key challenge is about the processes. Developers and server administrators no longer use their time to test after changes individually. What is needed is automating the testing processes, to allow various teams to make changes and check that things are still in place quickly, and reverse the changes should problems occur.

There is also the technology challenge. Once an organization has thoroughly reviewed the processes from end to end, one may have to adopt or build a technology that addresses the type of automation and feedback loop that better fits the processes and the organization.

AUTOMATING ENVIRONMENTS CREATION
Automating environment creation is key in DevOps. When a patch or update is needed, the QA team would simply patch the image and changes would be duplicated in each new container that’s launched. This provides independence to designers and programmers for launching environments that are updated frequently and know to work, and even deploy changes to live platforms, since the QA people maintain the environments and have set the appropriate tests already. Also, it provides a communication channel with server administrators, since basically they are working together to have a working environment that is good for production and development alike. This is valid also if development and deployment are done by the same people, as in one freelance developer, as these concerns for testing and implementing a live app in various environments still are valid despite of who is in charge

DEVOPS TOOLS

DOCKER
Everything about Docker is changing IT environments has been said already. It is great, life changing. The tool eases configuration management, scaling by letting containers to be moved from one place to another and control issues.

JENKINS
It is really easy to use and has a great ecosystem of add-ons and plugins. Moreover, it’s optimized for easy customization. It is a great tool for building code, running tons of tests and pushing staging or production.

KANBAN
The software development method is getting plenty of attention lately, particularly for its ability to enable DevOps. Some organizations even are going so far as to move from Scrum to Kanban to boost efficiencies. The end-of-sprint demos to stakeholders and sprint lock are invaluable.

The key is to comprehend that just deploying a tool or a broad solution even without thinking through the unique scenario and the present state of the value stream and the current restraints is foolish. DevOps tools could be used, such as the examples above and yet one never actually be doing DevOps if he or she is unable to relay to the people at the other side of the chain.

No doubt about it, DevOps culture is making waves in the software development industry. There are various tools that could be used for effective DevOps operations.