“The vast majority of enterprises we have encountered now using microservices got there by evolving their monolith -- not replacing it.”
Monoliths gained popularity because they were safe: easy to build, easy to operate, and secure. They were in fact the way software was built for a fairly long time. But the way we build things is changing fast. A monolith is not a good platform for fast, radical technological evolution - the sort of evolution that wins new markets. Monoliths lock a business into a particular feature set, putting them at serious risk on multiple fronts. They face pressure from more dynamic competitors stealing away market share because they can deliver faster, or by driving down margins because they can deliver more cheaply. Or the ultimate risk of simply beating them to new customers.
During our research in industry and our work with enterprises like Shell and Adidas, Container Solutions have consistently observed a strong desire to compete and differentiate via rapid experimentation and adaptation. A monolith is not a good platform for this kind of responsive and iterative change, and that is precisely why it is no longer a safe platform at all.
An increasing number of enterprises are adapting flexible architectures that fully support freedom of movement. The most popular of these architectures utilizes a combination of small independent processes (microservices) hosted on flexible infrastructure (cloud) and managed with an automated orchestration framework (for example, Kubernetes). This approach is what we think of as “Cloud Native” and is widely used from hyperscale online businesses like Google and Netflix to younger, fast-growing services like HolidayCheck and Zoover.
Cloud Native is not a single architecture but a set of tools and an overall approach. At Container Solutions we are vendor-neutral. We work with enterprises to teach them about all the tools available and select the right ones for them. We enable enterprises to reconfigure themselves to move quickly, with smaller, nimble steps to
Despite its advantages we believe there are four critical dangers in pursuing Cloud Native without guidance.
It is simply less difficult and less risky to deliver small, iterative projects than huge “big bang” ones. Small projects are also more obviously viable, making it easier to develop buy-in. But is iteration a workable option for getting enterprises from where they are now to a Cloud Native culture and architecture?
In our judgment, the fundamental motivation for microservices and Cloud Native is to transition businesses from a culture of high risk, utopian, “big bang” deliveries to iterative, lower risk releases with quick ROI or speedy failure.
We believe it’s perverse to kick this journey off with a risky big bang by rewriting your monolith. Surely there must be a better way? In fact, the vast majority of enterprises we have encountered now using microservices got there by evolving their monolith not replacing it.
This may be a transitional architecture but often it is not. Many organisations keep their monolith for at least some of their core functionality.
Evolution is not easy, but it is often the most effective strategy.
There are a dizzyingly large number of approaches an enterprise can take to evolving their monolith (models like “llft and shift”, “sidecars”, “API-first” and “ambassadors”). The right mix depends on a company’s existing tech and priorities. Different approaches have different strengths and weaknesses. We believe it is imperative that companies evaluate which evolution strategy works for them based on a solid understanding of the available options.
Container Solutions are vendor neutral and we have a range of proven template plans and step-by-step implementation processes for Mono->MoMi migrations that we tailor for individual businesses. Container Solutions are experts in this field. We’re vendor neutral and have experienced consultants to assess the right strategy and help get the ball rolling. We then have a wide range of teaching materials and courses to allow us to ramp up the client’s engineers and hand over the successful running of their environments ASAP. We have no long term desire to be either a Cloud Native crutch or an impediment.
It makes sense to build a platform for iterative change iteratively, so your platform quickly helps build itself. Start with the fundamentals and add complexity later. Begin with basic automated testing, scripted environment creation, CI/CD and containerisation. Choose the best-fit mono-micro architectural strategy and orchestrator and gradually introduce them into production. Just say no to big bangs.
If you have a successful monolith, start there.
In the long term a more nimble technical platform will enable a more autonomous organisation. As choices become less risky they can be made lower down the chain of command. As any Cloud Native architecture matures, development methodologies will also need to evolve to support faster, more delegated decision making.
The aim is to achieve an adaptive organisation that is comfortable with change. One that is experimental but can still manage risk effectively. There is no reason this can’t start today, and there is no need to start by throwing out the monolith completely - it’s not on fire. Yet.