Evolutionary architecture is an approach to building software that’s designed to evolve over time as business priorities change, customer demands shift, and new technologies emerge.
Traditional software architectures are notoriously rigid, preventing developers from exploring the latest innovations or adapting as priorities change. Evolutionary architecture brings agile practices to software development, helping to create systems that are far more flexible and ready for change.
What is it?
Now more than ever, it’s important that software and systems don’t just meet an organization’s needs today — they need to be able to deliver value and support a business for years to come. Evolutionary architecture is an approach to software development that keeps that in mind, ensuring that everything you build is flexible and able to change as your needs evolve.
It helps developers experiment with new capabilities, and quickly update existing software to meet new needs, instead of constantly redeveloping from the ground up as conditions and capabilities evolve — enabling the business as a whole to respond to change faster, and more effectively.
What’s in for you?
Evolutionary architecture enables you to make rapid changes to the systems and software that support your business. When your priorities or strategy change, your existing tools can change alongside it, accelerating the delivery of new services, and significantly reducing development and deployment costs.
It also helps keep your business at the cutting edge of technology. As new capabilities emerge, you can incorporate them into your systems with ease, helping your systems and software grow stronger over time, instead of holding you back by chaining you to outdated technology.
What are the trade offs?
Finding the right balance between upfront and incremental architecture development can be tricky. The whole point of an evolutionary architecture is to avoid having your architecture set in stone. But you also don’t want your developers to be focused on making architectural changes every day.
It can also be extremely difficult to switch to evolutionary architecture. It demands a flexible technology foundation — forcing you to re-evaluate (and in many cases, change out) huge amounts of your legacy tech. That can clearly also carry an immense price tag.
How is it being used?
Over the last few years, more and more developers have started to rethink how software architectures should work.
Today, we see evolutionary architectures consistently reduce the time it takes to get changes into production, removing slow feedback cycles and other obstacles to adapting to change.
We’ve recently seen GitHub refactor a critical part of its IT infrastructure using evolutionary architecture principles, seamlessly deploying two simultaneous instances of the same system to compare and optimize results.