161827306-100259575-large.jpg

A cure for complexity in software development


I recently read Scott Carey’s great InfoWorld article that focuses on application complexity as an agent for reducing developer productivity and livelihood.

The article has some great ideas, including focusing on reining in complexity by using standardized third-party services and other techniques. This is a strategy that I agree has value to many organizations.

However, the article also states that microservice architectures are more complex than the equivalently functional application in a monolithic architecture, and uses this in furthering the cause that “complexity kills.” I disagree with this assessment.

The implied message I take from this point of view is that microservice architectures create complexity that reduces developer efficiency. This is not true. Microservice architectures do create an overall more complex application than an equivalent application built as a monolith—but this does not mean that the job of the developer or the architect is more complex as a result.

Microservice architecture complexity

Many companies have built large monolithic applications only to find that they get weighed down in complexity. Too many developers working in a single code base makes it difficult to independently add features and fix defects. This limits the number of simultaneous projects that developers can work on in a single application. Additionally, individual projects make changes that may have a broad impact on the code base—an impact that becomes more difficult to understand when the application becomes larger and more complex. Together, these issues lead to more defects, lower quality, and increased technical debt as the complexity continues to rise.

When you split an application into separate modules or parts, you are attempting to divide that complexity in order to reduce the number of developers who need to work in a single code base. Additionally, you reduce the breadth of the impact of your changes. This tends to create more stable code, more supportable code, less technical debt, and higher overall application quality and developer productivity.

Copyright © 2021 IDG Communications, Inc.



Source link

Leave a Comment

Your email address will not be published. Required fields are marked *