Changes in the market can have a huge impact on the way you want your software to evolve. Collectiv creates an application architecture that embraces change through informed decisions, modularity and continuous integration.
Why Evolutionary Architecture?
In today’s business world, the pace of change is increasing and business model lifecycles are shortening. As a result, you need an application architecture that is able to keep up with these changes.
Rather than opting for an approach that defines the entire architecture upfront, Collectiv focuses on an architecture that can keep up with the pace of change. Evolvability and Evolutionary Architecture are the answer, because their main goal is to create a system that is able to respond to change.
It’s important to have all information at hand in order to take a good decision about your software. Not having all information or having the wrong information will result in software solutions that are very complex. It might even lead to applications that need to be rolled back later on.
Waiting to take a decision until the last responsible moment is the best option. This way, Collectiv will maximize the information and minimize technical debt. When a decision needs to be made, we implement it in a reversible manner. So when additional insights pop up, we keep the cost of changing our mind low.
By breaking up the architecture into functional domains, we move away from a monolithic application that is no longer maintainable, let alone able to absorb changes. Taking domain-driven design to the heart and focusing on bounded contexts allows us to break up the application into logical parts with few dependencies on each other.
Conway’s law states that “Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure”. Collectiv exploits this law to make a better architecture. We assign bounded contexts to a dedicated team which then has the right focus and responsibility. This results in loosely coupled services, organized around business capabilities, and avoids architectural boundaries in the wrong places.
Collectiv embraces change and designs its systems so that they are tolerant for it. As a service, this is achieved by being conservative in what you do but being liberal in what you accept from others, often referred to as Postel’s law. It allows a lot of change without breaking other parts of the application and results in a short time-to-market.
The continuous integration system helps Collectiv to avoid a big integration phase. It provides rapid feedback to every team on the overall quality by running all automated tests continuously. These tests are also the perfect tool to constantly improve the architecture. Tests require us to think about the contracts and force us to redesign when they become too complex.
Having an Evolutionary Architecture creates a lot of business value. It gives you the opportunity to experiment with features. And because they are so well isolated, it has no impact on other parts of the application.