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.

Development needs to be rapid, frequent, reliable and sustainable

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 © 2023 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.

Chris helps clients around the world adopt the microservice architecture through consulting engagements, and training workshops.

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.

New 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 JUNVCEJE to sign up for $195 (valid until February 1st, 2023). There are deeper discounts for buying multiple seats.

Learn more

Signup for the newsletter


LEARN about microservices

Chris offers numerous resources for learning the microservice architecture.

Training classes

Chris teaches comprehensive workshops, training classes and bootcamps for executives, architects and developers to help your organization use microservices effectively.

Avoid the pitfalls of adopting microservices and learn essential topics, such as service decomposition and design and how to refactor a monolith to microservices.

Delivered in-person and remotely.


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

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.

ASSESS your architecture

Assess your application's microservice architecture and identify what needs to be improved.

Consulting services

Engage Chris to conduct an architectural assessment.



Join the microservices google group

Topics

Note: tagging is work-in-process

anti-patterns   ·  application api   ·  application architecture   ·  architecting   ·  architecture documentation   ·  dark energy and dark matter   ·  deployment   ·  development   ·  devops   ·  docker   ·  implementing commands   ·  implementing queries   ·  inter-service communication   ·  loose coupling   ·  microservice architecture   ·  microservice chassis   ·  microservices adoption   ·  microservicesio updates   ·  multi-architecture docker images   ·  observability   ·  pattern   ·  refactoring to microservices   ·  resilience   ·  sagas   ·  security   ·  service api   ·  service collaboration   ·  service design   ·  service discovery   ·  service granularity   ·  service template   ·  software delivery metrics   ·  success triangle   ·  team topologies   ·  transaction management   ·  transactional messaging

All content


Posts

24 Jul 2017 » Revised data patterns