Develop and deliver the 21st the century way
Why we rely on DevOps in order to create better software products
Why we rely on DevOps in order to create better software products
“Improving daily work is even more important than doing daily work,’’ a character in the 2013 novel The Phoenix Project quotes his martial arts teacher. A sleeper hit, the book took the world of information technology by storm, and has had five editions to date. The subtitle sheds some light on the mystery that the title presents: A Novel about IT, DevOps, and Helping Your Business Win. IT may be infinitely complex, but even the layperson knows what the two letters stand for. And every business wants to win, that’s a no-brainer. What the heck is DevOps, though?
A portmanteau word formed from ‘development’ and ‘operations,’ DevOps is the most recent software development method, one with a much broader scope than the approaches that have preceded it. In fact, it is often defined as a culture rather than just a method. But before we describe why DevOps is such a popular software development method, it’s worth taking a look at what has come before.
The traditional model, called waterfall, which has existed since 1970, is a sequential approach: some output needs to be produced at every stage before you can initiate the next one. For instance, you have to analyze the requirements before you can move on to design, which in turn is followed by coding, and so on. Given its linear nature, waterfall does not allow for adjustments, nor does it facilitate the exchange of feedback between project members.
Seventeen business people got together in Utah in February 2001 to discuss how to improve the waterfall model. The outcome of the three-day event was the Manifesto for Agile Software Development. At only 68 words it defines four fundamental principles, two of which state that the group values “individuals and interactions over processes and tools” and “responding to change over following a plan,” respectively. In other words, the agile methodology enables your teams to interact and communicate with one another, and – since work is broken down into small, manageable increments – projects do not require definitions up front. Moreover, with results being continuously evaluated, it’s easy to react to changes instantly and throughout the entire software development lifecycle. There’s a fundamental issue, however, that agile does not address.
Patrick Debois, a Belgian manager, began working on a government project in 2007. His job was to help with data center migration, but he soon realized that he was caught between two worlds that seemed impossible to bridge. Navigating between the development team and the operations team – two units that should have been working in tandem, but were in fact widely separated – turned out to be a waste of time and effort, as well as a persistent source of frustration for Debois. In 2009, emboldened by a conference and a video presentation which convinced him that others were experiencing the same problem, he organized DevOpsDays. The event made quite a splash in the industry: the news spread like wildfire over Twitter, the term DevOps was born, and the rest is IT history.
The novelty value in the DevOps approach, something that is missing from agile, is that the development and the operation teams are not siloed anymore. On the contrary, the emphasis is on collaboration and integration. As Christophe Capel of Jira Service Management has put it, “DevOps isn’t any single person’s job. It’s everyone’s job.” Ultimately then, DevOps is a shift in mindset, one that promotes active cooperation and sees it as the prerequisite for success. Delivering reliable, high-quality solutions fast is only possible if you have the appropriate development environment. So, how do you go about creating it?
Shared responsibilities are at the heart of DevOps. Whether you’re in development or operations, you’re responsible for the success (or the failure) of a project. The same goes for every individual on both teams – united we stand, divided we fall. The upshot is increased transparency and a common understanding of your business goals and the challenges you may have to face along the road.
To guarantee the effective cooperation of your teams, decision-making and the implementation of changes need to happen fast, without a complicated approval process. You have to establish an environment where your teams, rather than worry about failure, trust their own ability to make decisions, even potentially tough ones under time pressure. In other words, you must give them considerable autonomy.
Another key aspect of the DevOps culture is feedback. By providing it immediately and constantly, members of either team can rest assured that necessary adjustments and improvements will be made. For example, the operations staff about to implement an application monitoring strategy might want the developers to iterate a code. Since the two teams work in concert, communicating this need should pose no challenge whatsoever.
The oft-repeated cooperation which is the defining characteristic of DevOps would be much less effective without automation. The teams rely on a number of practices in order to automate and streamline the processes that eventually lead to software release. The DevOps principles would be of little value without these practices, so let’s explore some of the most important ones.
While agile failed to realize the significance of integrating development and operations, the framework that agile project management provides is used in DevOps, too. We have already described agile in some detail, but it’s worth repeating the main idea: a project is broken down into smaller tasks and teams respond to changes that may occur as their work progresses. This basic concept also applies to DevOps.
Developers merge code changes into a shared repository, after which a variety of tests are run. Through this continuous integration bugs are easily spotted and fixed, and the quality of the software can be improved. Additionally, continuous delivery ensures that code changes are deployed to either a testing environment if further testing is necessary, or a production environment if they are ready for release.
Given that services must be available around the clock and that the update frequency of applications keeps increasing, active monitoring is essential. This way, not only can you identify potential deficiencies, but by capturing and analyzing data, you can also gain a better understanding of the impact your updates have on user experience.
A siloed organizational structure isn’t based on trust or empathy. Teams don’t share areas of ownership and responsibility, which can have repercussions on their morale, engagement and productivity. By pulling down the wall between development and operations, DevOps establishes increased communication and collaboration between the two. That, in turn, speeds up information sharing across the whole organization, making it much easier to define goals to work towards.
The practices described above are likely to remain staple elements of DevOps for the foreseeable future. However, given the ever-changing world of information technology, it’s equally probable that DevOps will continue to evolve as trends keep surfacing.
If DevOps was a person, it would be in its early teens. Adolescence is a testing period and can be tough to navigate. Your identity is in flux, you keep labeling yourself, searching for a group in a desperate attempt to belong. Later, your individuality emerges and you envisage a future for yourself. Turns out it’s much the same with tech methodologies.
Due to the global pandemic, 2020 saw a shift in priorities and developments in most industries. Constant innovation, however, will continue to take precedence. DevOps too can expect to undergo a number of changes in the near future. Indeed, some are already taking place.
Application security will come to the fore and be embedded in DevOps practices. Now that development cycles are often completed within weeks or even days, companies need to make sure that they involve their security team from the word go. The term DevSecOps, already in common usage within the industry, emphasizes the importance of a security foundation.
As the issue of security comes into focus, we can expect the infrastructure to become increasingly cloud-centric. With businesses striving to deliver fast and frequently, it will be necessary to embrace cloud-native technologies. In fact, this is a trend that is being both reinforced and accelerated by COVID-19 as we speak.
Another change the pandemic has turned the spotlight on is the perception of remote work. A study by Worldwide Research has shown that companies willing to reevaluate the work-from-home arrangements and enable their employees to work anywhere will be likely to thrive in the years ahead. A further aspect of a hybrid model is that the teams themselves will undergo a thorough shake-up: members will be required to have a range of skills and knowledge beyond their areas of competence.
While it’s nothing new to DevOps, enhanced automation is set to take center stage. More advanced techniques such as robotic process automation tools will become prevalent and, by eliminating tasks that are manual and/or prone to error, improve both time-to-market and efficiency. As a result, increased customer satisfaction is bound to follow.
Finally, and perhaps most importantly, DevOps will be increasingly valued by business leaders. It is not unusual now for senior executives to credit their technology counterparts for the achievements and the successes of their enterprise. Gene Kim, one of the co-authors of The Phoenix Project, expects this trend to continue and has expressed optimism in this regard: “I believe this bodes well for all technology.” There might well be a new book in the offing.
We at Infinica have found that DevOps helps us collaborate even better and has further improved our already agile development approach. It has made us more efficient and more successful, and has had a beneficial impact on the quality of our products and services.