Customers of business enterprises want them to respond to their changing needs appropriately and quickly. However, various limitations have been preventing businesses from responding to such requirements as quickly as they'd like. One of the most glaring limitations has been the isolated ways different departments have worked. DevOps now enables enterprises to respond to dynamic requirements by removing the silos within organizations. Roles are merged and people are now required to be cross-functional. Organizations are now able to roll out products and services incrementally and more frequently. Since teams are becoming more cross-functional, there is less interdependence now. Various studies have found that DevOps is becoming an important force to be reckoned with. Considering the principles of DevOps, it has been a disruptive force in the world of IT.
What Is DevOps?
DevOps is shortened from "development" and "operations," meaning both development and operations personnel work together or acquire cross-disciplinary skills. However, the scope of the roles should not be restricted to software developers and IT support people. In fact, the scope should include all roles having a stake in software development. The "ops" can include systems engineers, system administrators, operations staff, release engineers, DBAs, network engineers, security professionals, and various other sub-disciplines and job titles.
DevOps is a combination of different philosophies, practices and tools that enables business enterprises to respond to frequently changing market requirements. Previously, various departments would mostly work in isolation with minimal communication or coordination. That resulted in problems such as failure to respond to sudden changes in requirements. The DevOps philosophy requires its practitioners to be cross-functional. For example, a software developer may be expected to know software testing skills as well. Change in perspective results in better quality deliverables and a clearer understanding of market dynamics. DevOps requires its practitioners to acquire diverse skills, which widens perspective and helps in performing a quality job.
Important Trends and Developments
The DevOps domain has been undergoing many important changes. Here we will take a look at the most important changes while avoiding the hype.
The Definition of DevOps Will Be Standardized
While DevOps has been around for some time, there has not been much clarity over its definition and scope. Understandably, organizations practice customized versions of the methodology. Many experts foresee the definition eventually getting standardized. Obviously, this will impact how organizations have been working with the methodology. Expect a little chaos before it settles down.
Software Testers Need to Upgrade or Perish
Principles of continuous delivery and integration as well as the Selenium WebDriver have changed expectations from testers. Testers need to upgrade to other skills such as automation, RESTful API and Selenium wrappers or face the fearful prospect of redundancy.
Rediscovery of the Agile Methodology
Over the past few years, the Agile methodology has lost a little bit of its popularity as many exponents have drifted. The main reason for the disillusionment was its dogmatic principles. Agile is starting to make a comeback in the form of two principles: modern agile and heart of agile.
Popularity of the Cloud Increases but PaaS Wanes
DevOps Tools and Methods
While there are certain principles or methods about DevOps, there are many different tools available for implementing DevOps. These tools are used by various organizations in numerous ways, and some of the most important ones are described below.
IBM coined the phrase “automate everything.” This phrase captures what DevOps is all about. Basically, you can automate almost everything about software development except probably code development. All functions such as builds, versioning, testing, configuration management, deployment, middleware, monitoring, ticketing systems and provisioning can be done in the cloud now. So, all you really need to do is write the code and the remaining steps can be automated in the cloud.
Testing and Versioning
Both testing and versioning are important activities aimed at software quality. In the realm of testing, Netflix can be cited as an example. Netflix's testing team has developed the concept of Chaos Monkey, which basically disrupts the system by introducing bugs or issues that put software developers to the test. As a result, when a legitimate problem appears, it can be handled much more easily.
Versioning pertains to the idea that not only code, but anything related to the software such as artifacts, test cases and infrastructure should be versioned. That way, if an update or patch doesn't go as planned, the program can easily be rolled back to a previous, stable version.
A project dashboard should be created and maintained so that all stakeholders have an idea of the project status. As already stated, there are many different tools used for DevOps. For example, for test and build systems, Chef, Maven, JUnit, Jenkins, Ansible and Puppet can be used. Similarly, for versioning, there are many tools such as GIT and Perforce.
DevOps Case Studies
It has already been mentioned that the definition and scope of DevOps is still being worked out, and the absence of clarity has resulted in customized adoption of the methodology. Obviously, not all organizations have been able to successfully implement it. However, here are cases of successful adoption which can potentially provide guidelines to get the best out of DevOps.
DocuSign is a leading provider of digital signature and document transaction solutions. Since it is in a domain that requires high security and confidentiality, DocuSign needs to be extremely careful about maintaining the privacy and security of transactions. Adoption of the DevOps principles was not easy because it had to not only roll out new features, but also make sure they were tested rigorously. So, before rolling out the actual software, it performed a mock testing process with the help of software. More specifically, it simulated the API used for testing. As a result, things worked faster, incidents and issues were identified and fixed fast or prioritized. DocuSign also put into place a repeatable process that will automate test case simulation and identify software issues.
Forter is a digital signature and transaction solution provider just like DocuSign. It wanted to manage its incidents and issues more efficiently. It prioritized issues and emphasized self-resolution of issues. Forter built an architecture which could prioritize issues and could identify issues for self-resolution or for later resolution. Therefore, it could focus first on high-priority issues and incidents. This automation of repeatable tasks freed up people to concentrate on more creative jobs.
Does DevOps sound the death knell of traditional software development practices? It is not an easy question to answer. DevOps is still in its early stages. It is still being weighed. Of course, there are case studies that point to its benefits over traditional software development practices. Practically, it would take some time before it could take over, because dismantling practices that have taken years to build up is quite a task. Right now, however, DevOps does seem a concept that merits serious attention.