This article describes the pro and contras of horizontal and vertical splitting of features.
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.
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).
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).
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).
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.
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:
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.
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:
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.
Discuss with us about this article on LinkedIn.
DevOps Best Practices, ISBN: 9789492618078
Agile Service Management with Scrum, ISBN: 9789071501807
Mogelijk is dit een vertaling van Google Translate en kan fouten bevatten. Klik hier om mee te helpen met het verbeteren van vertalingen.