Microservices and the Goal of Software Development

| by Jan Stenberg Follow 34 Followers on Mar 08, 2015. Estimated reading time: 2 minutes | NOTICE: The next QCon is in San Francisco Nov 5 - 9, 2018. Save an extra $100 with INFOQSF18!

The goal of software is to sustainably minimize lead time to positive business impact, everything else is detail, Dan North claimed in a presentation at the QCon London conference describing ways of reasoning about code and how this leads him into an architecture style that may fit microservices.

For North, a thought leader in the IT industry, the purpose of software development is creating business impact, borrowing the term from Gojko Adzic who has popularized the term in his book Impact Mapping. Business impact is an observable effect within an organisation, e.g. new customers or reducing operating cost. The goal of software development is to achieve this business impact, or more specifically minimizing lead time, the time from when an opportunity is discovered until a solution is created. Doing this is easy a couple of times, the hard part is doing it sustainable, leading to North’s earlier description of the goal for software development.

North distinguishes between three types of code, code you recently wrote and know, code everyone knows i.e. code that is well tested and documented and which North calls fabric, and a third part, code no one knows, it’s just there with unclear dependencies and when changed completely unrelated things may happen. The single largest problem in software development for North is the vast majority of code of the third type, code that no-one knows and which represents a cost and a contention. From this North claims that code should either be stabilized or killed off, never left and becoming of the third part, unknown code. This leads North into a couple of patterns supporting this idea and which will lead into microservices.

The first pattern is short software half-life, referring to physics and how fast unstable atoms decay. North believes that code should have a very short software half-life, and in order to get there it’s important to have code with a clear purpose that can be reasoned about, making it possible to deliberately stabilize it or kill it off. He emphasizes that understanding the purpose of code is very important.

The second pattern North describes is fits in my head, referring to James Lewis for coming up with the expression. The pattern is about the ability to reason about code; one way of reasoning about a large system is to break it down, either by simplifying the problem or by ignoring large parts focusing on a specific smaller part at a time. With the same principles it's also possible to reason at different scales, how a method functions, how a module works, how modules communicate with each other, and so on outwards.

From his reasoning North defines an architectural style he calls replaceable component architecture which nicely weaves in the idea of short software half-life and the idea of things that fits in your head together with contextual consistency. All components are completely replaceable, each wrapped in an API hiding the internal details and communicating with each other by sending messages. These components are like little computers passing messages and North notes that is how Alan Kay defined Object-Oriented (OO) programming 30 years ago.

Microservices can be a replaceable component architecture, if you optimize for replaceability and consistency, both which are daily choices that has to be made. One issue North has is with the term microservices, micro implies smaller which is not always better, more replaceable is better.

Rate this Article

Adoption Stage

Hello stranger!

You need to Register an InfoQ account or or login to post comments. But there's so much more behind being registered.

Get the most out of the InfoQ experience.

Tell us what you think

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread
Community comments

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread

Allowed html: a,b,br,blockquote,i,li,pre,u,ul,p

Email me replies to any of my messages in this thread


Login to InfoQ to interact with what matters most to you.

Recover your password...


Follow your favorite topics and editors

Quick overview of most important highlights in the industry and on the site.


More signal, less noise

Build your own feed by choosing topics you want to read about and editors you want to hear from.


Stay up-to-date

Set up your notifications and don't miss out on content that matters to you