All too often DevOps is used as shorthand for deployment automation. But this is to miss the point. To truly embrace DevOps and make it work for you, you need to think about your development holistically. Dootrix’s Head of DevOps, Mark Vallins, shows how adjusting your thinking can supercharge your cloud projects.
If you pare DevOps down to its essentials, it’s underpinned by two things.
Firstly, and most importantly, I’d argue that DevOps is a mindset.
More commonly though you’ll hear the term DevOps used to describe the second thing: a skillset. A lot of people see that skillset primarily as everything to do with automation, and that's undoubtedly a key element. But DevOps is also about the full end-to-end process of software delivery (which means that application development skills are equally essential) plus it encompasses the business processes around the software itself.
Above all, it’s essential to remember that the two are linked; adopting a DevOps mindset leads you to developing, or at least understanding and appreciating, the full skillset needed for software delivery.
The mindset is pretty straightforward. It comes down to two ‘O’s: ownership and openness.
Ownership is the willingness to take responsibility end-to-end for the creation, operation and support of the solution that you're designing. It’s a recognition that when you’re designing and coding an element of the solution that you’re working on, you’re doing so with the whole solution in mind throughout its lifecycle. That means avoiding thinking in terms of handing off your element to someone else so that it becomes ‘somebody else’s problem’. In the DevOps way of thinking, there is no ‘somebody else’s problem’.
Openness is about adopting the open-minded attitude necessary to be at one’s most effective working in a multidisciplinary team, taking in a wide variety of different inputs and points of view. If you're fully involved in the process, and truly committed to building something designed to last, you need to bring a wide range of people onboard.
So, if you're the developer, you're wholly aware that you’re not just working with other software developers, but also with security. You might be dealing with an Enterprise Architect, as well as cloud governance or support staff, because you need to incorporate all of their inputs.
You're very much working within a business environment, and so part of your thinking will necessarily be in terms of governance and defining processes so they can be repeated successfully. And you'll be asking yourself and answering questions like: ‘How do I get this source code into a production system?’; ‘What's my environment?’; ‘Where am I developing this?’; ‘Where am I testing it?’; ‘Where am I releasing it for user acceptance testing?’; ‘What are my approval gates in that process?’
And part of your job within DevOps is to fit within those processes and to mould the software you develop so that it fits the organisation you're delivering it to. So there might be specific requirements from first-line support, alerts configured to flag certain ways the system might be misbehaving, or dashboards you need to deliver to display system health.
Even where certain responsibilities are likely to be handed off later down the line, going into it with a sense of ownership makes everything more bulletproof. Thinking in terms of your being on call to fix things when they break is a mindset that produces better results; you're aiming to hand work over in the best possible state, knowing that you've thought about the people who are going to be maintaining it and developing it thereafter. We used to call people who only did their jobs and no more ‘jobsworths’ – DevOps is the antithesis to that.
That mindset leads logically to skillset. Part of the concept of DevOps is that all of the disciplines needed should be present in a single team throughout the development and deployment lifecycle of a solution, without silos or isolated groups.
At Dootrix, we've always been very keen to offer our customers what might have traditionally been called our software engineers as DevOps engineers, delivering both development and operations capabilities. All of our DevOps engineers have a strong software development background as well as the opportunity to understand and apply automation and infrastructure as code as part of their daily development activity.. Within a team people will, of course, have different strengths and levels of experience and focus on different technical areas. However, by ensuring that complementary skills are shared across the team, rather than siloed, you change the dynamic. . Understanding the constraints of the environment you’re deploying into, and being able to consider the application not just in isolation, but connected to everything else related to that project, is very valuable. Your individual tasks can be approached as part of an interconnected whole.
Lastly, I think it's difficult to do something like DevOps without an agile mindset. It's about recognising that the first deployment you make is never the last. And so you need a process that reflects that, that enables a continuous process of maintaining, updating and driving the evolution of your solution.
Armed with this thinking, you’re much better equipped for success than if you treat the various elements of development and deployment as discrete operations.
Want to supercharge your cloud projects? Get in touch