DevOps Code – Splitting features


Splitting features Introduction

DevOps Articles

This article describes the pro and contras of horizontal and vertical splitting of features.

Splitting features Definitions for DevOps code

Feature

A feature is a description of a piece of functionality that should not cost more than half of a DevOps cycle time. A feature is described in terms of the business terms. Features are the epic building blocks and are differentiated in stories.

Story

A story is a technical description of an object to be realized or the configuration of an object. A story is comparable to a Request for Change (RFC).

Concepts for DevOps Code

Feature splitting

The feature can be split in to stories in order to realise it. This splitting can be performed vertically and horizontally. Vertical splitting means that that one feature is realized by one DevOps team, so all stories are assigned to one DevOps team (see figure 1).

vertical-feature-splitting
Figure 1, Vertical feature splitting.

Horizontal splitting means that one feature is realized by more DevOps teams by distributing the stories of one feature to more than one team (see figure 2).

DevOps Horizontal Feature splitting
Figure 2, Horizontal Feature splitting.

Best Practices for DevOps Code – Splitting features

Large and complex applications often require that more DevOps teams to work together. Ideally, these DevOps teams can work independently from each other. This increases the time to market by reducing waste (waiting on each other). However, there are considerations that allow more than one DevOps team to work on one feature. This article describes both feature splitting forms and finally gives a conclusion.

Vertical split

The advantage of a vertical split is that there are no dependencies in the lifecycle of the feature, from coding to monitoring in production. Therefore, it is necessary that the knowledge and skills needed to realize the feature are present within this DevOps team.

The advantages of a vertical split are:

  • Increase of the time to market because the team is not depending on aligning with other teams during the cycle planning.
  • The quality of the realized service is higher because the flow includes the complete service and no testing is required by more DevOps teams at the same time.
  • The organization is easier to scale because DevOps teams can be expanded easily.
  • The management of the product backlog is simpler because only one DevOps team and one product owner is involved.

A disadvantage of the vertical split is that there may be more than one DevOps team adjusting an application without knowing it from each other. This may result in incidents and loss of changes. An example is Content Management System (CMS) that is used by five independently working DevOps teams. If these five DevOps teams realizes features only for their own product owner (vertical split) and do not take the consequences for the other four DevOps teams into account, then they may cause incidents for the other four DevOps teams and even may overwrite changes of the other DevOps teams.

Horizontal split

The advantage of a horizontal split is that the DevOps team can concentrate on those aspects of a service of which they have a lot of knowledge about. Together with other DevOps teams, they are having the knowledge to realize the entire service.

The disadvantages of the horizontal split are:

  • Reduction of time to market because coordination with other teams is required
  • The quality of service can only be achieved if the teams align their stories well and match in the test phase. However, the quality of the components is high because specialists have been involved in the realization.
  • The teams have specialist knowledge, which means that extra teams are not easy to established.
  • The management of these DevOps teams is very difficult. Consultation with more product owner is required.
  • The go-live decision is more difficult in comparison with the vertical split because the release contains components that are delivered by more teams. To determine the impact of a non-working component is also difficult because it requires knowledge of all products.

The preference

The vertical split is preferred. However, there are situations that make it virtually impossible for a vertical split. An example is an organization that purchases a number of products from a supplier that requires a lot of configuration work. If the learning curve of each product is long (for example, more than a year) and a vertical split requires the knowledge of more of these complex products, then a horizontal split cannot be prevented. The DevOps teams therefore consist of specialists who know everything of one product.

LinkedIn Group

Discuss with us about this article on LinkedIn.

More information

Related Books:

DevOps Best Practices, ISBN: 9789492618078
Agile Service Management with Scrum, ISBN: 9789071501807

Related training sessions:

Related Article:

Service Management

Samenvatting
DevOps Code - Splitting features
Artikel
DevOps Code - Splitting features
Beschrijving
The pro and contras of horizontal and vertical splitting of features in DevOps Code.
Auteur
Publisher Naam
ITpedia
Publisher Logo
Sidebar