The practices and approaches known as ‘DevOps’ – strong collaboration between development and operations teams – have helped organisations to re-align their business and technology goals towards sustainable delivery of valuable, working software. One of the key goals of DevOps is to ensure that software runs well in Production, especially in the context of regular changes (deployments).
One of the driving forces behind DevOps is the increasing prevalence of complex, distributed software systems which calls for a substantially different approach to building ‘business’ software systems: an approach that anticipates and expects failures, transient behaviour, emergent states, and unpredictability; and ensures that failure responses are gradual, graceful, and graphable.
‘Making software work well’ in this dynamic, interconnected world is the focus of Software Operability.
What it is
“THE MOST AMAZING ABSTRACTIONS, CLEANEST CODE, OR BEAUTIFUL ALGORITHMS ARE MEANINGLESS IF YOUR CODE DOESN’T RUN WELL ON PRODUCTION.”
In the context of a software systems, Operability is a measure of how well a software system works when operating.
We say that a software system with good operability works well and is operable. A highly operable software system is one that minimizes the time and effort needed for unplanned interventions (whether manual or automated) in order to keep the system running; similarly, a software system with good operability will make diagnosis and anticipation of errors straightforward.
Operable software systems also allow determination of the internal state of the system components, and tend to exhibit faults only when error conditions relate to previously-unseen states or errors in external systems.
The word ‘operability’ relates to the Latin operor, a verb meaning ‘to work’. Cognates of ‘operability’ include ‘opera’ (literally, a musical work), ‘operate’, ‘operational’, ‘inter-operability’, of all which share a sense of ‘work’ or ‘working’.
“Simpler to operate and maintain, with a reduced cost of ownership, and almost certainly fewer operational problems”
A focus on software operability is therefore a recognition of the need to ‘make the software as a system work well’ in the Production environment. Software systems which follow operability good practice will tend to be simpler to operate and maintain, with a reduced cost of ownership, and almost certainly fewer operational problems, compared to those software systems whose owners have prioritised functionality heavily over operational criteria.
Software with a high level of operability is easy to deploy, test, and interrogate in the Production environment. Highly operable software provides the operations team with the right amount of good-quality information about the state of the service being provided, and will exhibit predicable and non-catastrophic failure modes when under high load or abnormal conditions, even if those conditions have not before been encountered. Systems with good software operability also lend themselves to rapid diagnosis and simple recovery following a problem, because they have been built with operational criteria as first-class concerns.
Download free eBook
‘Making software run well’ in this dynamic, interconnected world is the focus of Software Operability.
If you lead a team or department in the development or operation of modern interconnected software systems, and want to understand why and how to make your software systems work better, then this free 6000-word eBook is for you.