DevOps: Challenges and considerations

Every few years, a new buzzword appears on the IT canvas that sparks hype and excitement among businesses and technologists alike. DevOps is one such term that has continued to gain momentum and is highly-relevant in today’s digital transformation landscape. It’s also a term that’s quite misunderstood. Here are some thoughts that define this term, while also explaining its benefits and challenges.

What is DevOps?

Very simply put, DevOps embodies Development plus Operations within software development. Traditionally, these two parts of an organisation have operated siloed from each other with marked differences in both ethos and approach. The result: delays in launching products and releases to the market. The fundamental principles of DevOps are to reduce barriers between Development and Operations; increase Development autonomy; and to automate Development and Operations activities in order to reduce wait (and waste from a customer’s perspective) time, thus enabling faster time to market – all while keeping the end customer at the centre of the process. 

Why consider DevOps?

Many teams developing software typically spend more time post-development in deployment activities (including test environment set-up; performance, integration, security and acceptance testing; and release and launch) than actually developing new features. There is obviously more value in realising customer benefits from the developed software than post-development validation cycles (which at times might be repetitive, usually serially planned, and manual). The primary endeavour of DevOps is to make Development and Operations work as closely (and as leanly) as possible to optimise such overheads as cost and time while getting solutions to market faster. In addition, a high proportion of production incidents stem from human errors due to manual validation and release processes. DevOps leverages automation during development, provisioning, test, build and deploy activities which ultimately reduces the opportunity for mistakes while accelerating the release process.

What challenges do modern IT organisations face that DevOps helps to overcome?

Unfortunately, many current IT operating models are not designed for today’s high-velocity business environment because of the ongoing development and post-development divide explained above. This simply doesn’t work in a digital economy in which quick response to changing market and customer needs can both generate significant returns and create meaningful differentiation from competitors.

Development and operations also have different priorities. For example, development typically focuses on creating new features, while operations fixate on system availability and uptime. Hence, both maintain different values and ways of working. To facilitate alignment, DevOps emphasises that development considers system performance, availability and security aspects upfront, and that development teams receive the autonomy of managing development environments to make the delivery pipeline nimble while reducing dependencies. 

What establishes efficient DevOps?

If we properly dissect what goes into effectively establishing DevOps, these tools can be categorised into the following five layers:

  • Collaborative culture – Various parts of the organisation (i.e. Product Management, Architecture, Development, Test and Operations) working in unison to provide for limited “hand-offs” and more inclusiveness through the Software Development Lifecycle (SDLC)
  • Efficient agile development process – Strong development methodology that allows the organisation to respond to market needs quickly while being adaptive to change. Efficient agile process mechanisms and tools that facilitate (not dominate) process efficacy and continuous improvement.
  • Strong engineering practices and automation – Engineering practices and automation through the SDLC that allow organisations to accelerate delivery pipeline are the heart of DevOps. This may include configuration management, testing practices, continuous integration and test automation.
  • Continuous delivery capabilities – Constant endeavours to make the delivery pipeline leaner and faster by harnessing mechanisms to automate and monitor each stage. This would include a combination of engineering, quality, deployment, and system operations parameters.
  • Security – Bringing forward software security testing, including code guidelines set up, and manual and automated inspection during the development cycle.

For organisations aiming to improve time to market, they must first correctly identify where within these five categories their current issues lie. Within these layers, organisations must determine if they have issues that hamper team collaboration and process efficiency. Organisations tend to start thinking of deploying tools and technologies before correctly understanding the fundamental issues that may need to be corrected regarding effective Agile development or engineering practices.

Is DevOps a new name for Agile Development?

Simply put, DevOps is not a new name for Agile. Being Agile refers to how fast a company can react to market needs. DevOps philosophy and techniques instead enable a company to react to market needs faster and more efficiently. Agile Development methodologies like Scrum and XP are software development processes designed to enable teams to address customer requirements faster. Effective Agile development methodologies are fundamental and foundational to DevOps adoption. 

Which DevOps tools are relevant for an organisation?

There are several tools that can be categorised as ones that enable DevOps, covering a wide gamut of process, engineering and project management activities. The choice of tools depends on the specific needs of an organisation and the available budget. The following link below, from XebiaLabs, provides a comprehensive listing of tools categorised by their applicability within SDLC and commercial terms: https://xebialabs.com/periodic-table-of-devops-tools/.

Why has DevOps adoption been slow so far? What is the best way to navigate through the DevOps adoption process?

The journey to successful DevOps adoption requires executive commitment and vision. It also requires both cultural alignment of making different functions (business, technology and operations) work as a unified unit, as well as the creation of processes and introduction of technologies that enable cohesive development. Time taken for the transformation may vary depending on the size of the organisation and its current state, but a two-year horizon for a mid-sized organisation is a reasonable assumption. 

An extensive assessment framework can help IT organisations kick off this journey. The framework contains two broad components: 

  • A Development Pipeline Assessment to study the lifecycle of the code through its journey from a developer’s desk to production to best identify “waste” during the
  • A Continuous Delivery Maturity Assessment to determine an organisation’s current maturity level across several different parameters, including culture and organisation, build management and continuous Integration, environments and deployments, release management, testing and verification, data management, design and architecture, and information and reporting.

These trends would include:

  • Continuous testing techniques that strongly emphasize building an optimal test pyramid while laying emphasis on test-driven development/behaviour-driven development and test automation; and bringing forward performance testing and security testing. In recent years, the first two have gained importance. The last two still largely remain as post development, operations tasks.
  • Microservices inherently propagate DevOps, but rearchitecting monolithic products and platforms to adopt microservices is a big endeavour in and of itself.
  • Environment provisioning, configuration and testing techniques designed to empower developers. There is much focus from tech-savvy teams in this area who are investing in related tools and training for their developers. This also lets the operations teams focus on critical tasks of production system monitoring and maintenance.
  • Unified reporting techniques that would ultimately provide easy and clear visibility into the continuous delivery pipeline.

Amit Gupta, leader of Ness Digital Engineering’s DevOps practice
Image Credit: Profit_Image / Shutterstock