It is not possible to describe all the actions an organization needs to go through to be a DevOps organization. There is no one way to do it and no right extent in which to do it. The DevOps vision is quite clear, but how an organization moves towards it, varies a lot.
DevOps is one of the current buzzwords in the IT industry, but a well-deserved buzzword. It is a natural next step for an organization that already thinks agile or lean. In the agile and lean methodologies, the idea is to get something through the software development pipeline as quickly as possible. If you could take something into production from development (Dev) team point of view e.g. after every sprint, why wouldn’t you? Why stop and wait for many months. This is where the operations (Ops) must also streamline and build the ability to go to production more easily and more often. Moreover, when you combine these two to DevOps, you have both Dev and Ops working very quickly independently, but also quickly together.
How often should you take software to production then? This question seems to divide people and decide their attitude towards DevOps. You are easily lured to thinking of Amazon, Facebook or Spotify where you may possibly have production deployments every minute. Do we have to be the same? Oh no, we can’t? You don’t have to. Continuous Deployment into production, be it every minute or every hour, is only an extreme that explains the concept, not something you have to do. It fits some company business models better than others. In reality, the question is: can we go to production more often than before.
First, you move from one deployment to two deployments a year. As you keep asking this question, you find ways that enable your organization to make it possible to go to production yet again a little faster. Suddenly you realize you go to production once a month. Maybe that is as often as the customer base is willing to get a new version. Some companies may have bad experiences of too many updates for the end user, so they don’t want to update the system all the time. Then there are some needs, like bug fixes or security updates, that on the other hand require fast update processes. So at times you may want to be able to move ahead extremely fast. You can go for the Continuous Delivery model, where you create the capability to go to production at any given moment, so the customer or release manager can decide to do it as often as is needed, or only once a year if they like.
The ways of getting faster are of course agile and lean principles, as mentioned earlier. There is also the potential to automate anything you can, from builds and tests to deployments and provisioning. There is the potential for better architecture, usually a micro services architecture, which enables smaller changes to code base. There are cloud principles that enable thinking about independent always-ready platforms for your code. Finally, there is the culture of integrating the Ops thinking into Dev thinking, or even applying DevOps into organizational structures. It is really a toolbox of lots of choices that all help you to continuously deliver something a little bit better to your customers.
Therefore, there are gains for any organization from DevOps. You seek for faster feedback about whether you are doing the right thing for the customer and whether you are doing it right. How far you take it on the road of “Full DevOps Maturity” depends on the type of business you are in, the type of organization you are, and the legacy choices your organization has made in previous years, but most of all it depends on where you want to go.
Knowit has created a Knowit DevOps Maturity model that helps you to understand where you want to go on your DevOps journey and what could happen next. See the SlideShare presentation: DevOps - the Challenge and the Opportunity and have a look at the software development services we offer.
Knowit is a Forerunner of DevOps and Agile Skills Association (DASA) and a trainer of DASA DevOps Fundamentals courses. Our excellent courses are for everyone to start or strengthen their DevOps journey.