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:
In this post, I describe why software delivery must also be sustainable.
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.
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:
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.
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:
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.
In the next post, I’ll discuss the success triangle, which describes what’s needed to do rapid, frequent, reliable and sustainable software delivery.
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.
Chris teaches comprehensive workshops for architects and developers that will enable 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.
Learn moreChris offers numerous other resources for learning the microservice architecture.
Want to see an example? Check out Chris Richardson's example applications. See code
Got a specific microservice architecture-related question? For example:
Consider signing up for a two hour, highly focussed, consulting session.
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 MECNPWNR to sign up for $120 (valid until May 16th, 2023). There are deeper discounts for buying multiple seats.
Take a look at my Manning LiveProject that teaches you how to develop a service template and microservice chassis.
Engage Chris to create a microservices adoption roadmap and help you define your microservice architecture,
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.
Engage Chris to conduct an architectural assessment.
Note: tagging is work-in-process
anti-patterns · application api · application architecture · architecting · architecture documentation · assemblage · beer · containers · dark energy and dark matter · deployment · design-time coupling · development · devops · docker · eventuate platform · glossary · hexagonal architecture · implementing commands · implementing queries · inter-service communication · kubernetes · 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 · tacos · team topologies · transaction management · transactional messaging