Why microservices: part 2 - the need for sustainable development

This is part 2 in a series of blog posts about why and when to use the microservice architecture. Other posts in the series are:

  • Part 1, the need to deliver software rapidly, frequently, and reliably
  • Part 3, two thirds of the success triangle - process and organization
  • Part 4 - the final third of the success triangle - architecture
  • Part 5 - the monolithic architecture

In this post, I describe why software delivery must also be sustainable.

Many applications live a long time

Many applications die young. Some applications are created to solve a specific short term problem, such as a marketing application for the Superbowl 2020. Others become obsolete because the needs of the business change. Also, many startups fail and their applications die within them.

But many applications, especially those that automate core business processes, tend to live for long time. Even these aging mission critical business applications must support rapid, frequent and reliable software delivery. What’s more, they need to adapt to evolving technologies.

Technology changes

The challenge with developing long-lived applications is that technology changes over time. The importance of a given technology in the market grows over time and then declines as newer technologies are adopted. What’s more, there are typically a series of versions of a given technology that grow and then decline in importance.

For example:

  • Over the 25 years of Java, numerous versions of Java have been released
  • Before Java, 4GLs such as Informix 4GL and Power Builder came and went.
  • Over its 17 year lifetime, there have been numerous versions of the Spring framework https://en.wikipedia.org/wiki/Spring_Framework

Managing technology within an enterprise

A sensible technology strategy is to ensure that the importance of each technology used by an enterprise is aligned with its importance in the market. Enterprises should cautiously adopt new and useful technologies. And, they should sunset technologies that are no longer important.

Sadly, however, it’s not uncommon for billion dollar businesses to be running on applications written using ancient technology stacks. The use either technologies that are no longer important or versions of technologies that are no longer current. The knowledge to use old technologies dissipates as developers retire. Hiring becomes difficult since developers don’t want to use old technologies. As a result, relying on ancient technology is often a business risk.

Need to be able to upgrade the technology stack

To avoid using obsolete technology, we must be able to upgrade an application’s technology stack. An interesting metaphor that I used in my early microservices talks is how cell death and replacement works in multi-cellular organisms. For instance, the human body is comprised of cells that have varying lifetimes:

  • hours - some white blood cells
  • days - stomach lining cells
  • years - bone cells
  • lifetime - brain cells

50 to 70 billion of cells within the human body die each day. Yet you (the system) remains intact.

In the same way that a human body is constantly being renewed, we must be able to keep an application’s technology stack current. An application’s technology stack is comprised of a set of technology versions. When a technology version is no longer current, we must upgrade to a new version. Or, if an entire technology becomes obsolete we must replace it with a newer technology.

Rapid, frequent and reliable software delivery is necessary but insufficient. We need to be able to deliver software over long periods of time. We need to be able to upgrade an application’s technology stack so that it remains current.

What’s next

In the next post, I’ll discuss the success triangle, which describes what’s needed to do rapid, frequent, reliable and sustainable software delivery.



Copyright © 2024 Chris Richardson • All rights reserved • Supported by Kong.

About Microservices.io

Microservices.io is brought to you by Chris Richardson. Experienced software architect, author of POJOs in Action, the creator of the original CloudFoundry.com, and the author of Microservices patterns.

ASK CHRIS

?

Got a question about microservices?

Fill in this form. If I can, I'll write a blog post that answers your question.

NEED HELP?

I help organizations improve agility and competitiveness through better software architecture.

Learn more about my consulting engagements, and training workshops.

LEARN about microservices

Chris offers numerous other resources for learning the microservice architecture.

Get the book: Microservices Patterns

Read Chris Richardson's book:

Example microservices applications

Want to see an example? Check out Chris Richardson's example applications. See code

Virtual bootcamp: Distributed data patterns in a microservice architecture

My virtual bootcamp, distributed data patterns in a microservice architecture, is now open for enrollment!

It covers the key distributed data management patterns including Saga, API Composition, and CQRS.

It consists of video lectures, code labs, and a weekly ask-me-anything video conference repeated in multiple timezones.

The regular price is $395/person but use coupon NPXJKULI to sign up for $95 (valid until December 25th, 2024). There are deeper discounts for buying multiple seats.

Learn more

Learn how to create a service template and microservice chassis

Take a look at my Manning LiveProject that teaches you how to develop a service template and microservice chassis.

Signup for the newsletter


BUILD microservices

Ready to start using the microservice architecture?

Consulting services

Engage Chris to create a microservices adoption roadmap and help you define your microservice architecture,


The Eventuate platform

Use the Eventuate.io platform to tackle distributed data management challenges in your microservices architecture.

Eventuate is Chris's latest startup. It makes it easy to use the Saga pattern to manage transactions and the CQRS pattern to implement queries.


Join the microservices google group