STOP hurting yourself by doing big bang modernizations!

architecting   anti-patterns   refactoring to microservices  

I recently had yet another conversation that described how the rollout of a ‘Next generation’ system was a long painful process. Users encountered all kinds of business impacting showstopper issues. It took months before the system was usable. This, of course, is hardly surprising. Any time you engage in a big bang modernization effort, you are taking a huge risk, and the odds are not in your favor.

That’s especially true when the new system’s name includes the phrase ‘Next generation’. One rare exception is ST:NG, but that’s a TV show, not a software system 😀.

This article discusses at why big bang modernizations are a bad idea. But first, let’s look at why organizations are attracted to big bang modernizations.

Big bang modernizations are appealing

Big bang modernizations are very appealing. For example:

  • You have the illusion of certainty that comes from a project plan
  • You have a big project, which is a good way to get promoted
  • You don’t have to confront the reality of the current system and your past mistakes, which are obstacles to promotions

And, not only are big bang modernizations appealing, they can be agile!

But we are agile!

What’s even more interesting is that organizations undertaking big bang rewrites often describe themselves as agile. For example, they often use Scrum. Development consists of a series of sprints. There’s stand ups, retrospectives, and all the other trappings of agile. What’s missing, of course, is that software is not delivered to customers until the end of the project. An approach that’s distinctly not agile.

Agile Manifesto principles

There are two principles from the Agile Manifesto that are relevant here:

Agile principle #1

Here’s the first principle:

Our highest priority is to satisfy the customer
through early and continuous delivery
of valuable software.

If you are not delivering software until the end of the project, there’s nothing ‘early’ or ‘continuous’ about it.

Agile principle #2

Here’s the second principle:

Deliver working software frequently, from a
couple of weeks to a couple of months, with a
preference to the shorter timescale.

Once again, if you are not delivering software until the end of the project, you are not following this principle. “Not true! We have sprints!”, they might say. But if the software isn’t in the hands of customers, it’s not working software.

Working software = in production, in the hands of customers

The key point here is that working software is software that is in the hands of customers. If it’s not in the hands of customers, then you have not validated your assumptions about user needs. Nor, have you validated any of your technical assumptions. You’ve ran a bunch of tests so in theory, it should work. But theory and practice are two different things.

With a big bang modernization, unvalidated assumptions continuously accumulate until the end of the project.

You then discover gaps in your understanding of both user needs and technology. You might discover, for example, that your service collaborations are broken.

Big changes = series of incremental changes

The only practical way to modernize a complex system is to make a series of incremental changes - the Strangler Fig pattern. This means that you, as the architect, need to determine the sequence of steps that will get you from your AS-IS architecture to your TO-BE architecture. In other words, a series of AS-IS -> Architecture 1 -> Architecture 2 -> ... -> TO-BE that enable you to delivery incrementally and validate all your assumptions. Each increment of the new architecture is deployed into production and released to customers.

An incremental modernization is the least worst option

An incremental modernization is not easy. You might need to jump through numerous hoops to integrate the (growing) Strangler Fig application with the (shrinking) existing system. For example, it’s common to replicate data between the two systems. You will also need figure a migration strategy at each step that minimizes risk and allows you to rollback if necessary.

But while incremental modernization is difficult, it’s the least worst option. After all, doing a big bang rewrite - the wrong thing - repeatedly and expecting different results is the definition of insanity.

Need help with accelerating software delivery?

I’m available to help your organization improve agility and competitiveness through better software architecture: training workshops, architecture reviews, etc.

Learn more about how I can help


architecting   anti-patterns   refactoring to microservices  


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