From Monolith To Microservices: What We’ve Learned From Helping Clients Make That Journey
Right now, in software development, microservices are trending. Many of the big players in search, entertainment, and online retail have already made the shift. So what’s the appeal?
From mono to micro
Monolithic architecture is built around a single source, so that any changes require an updated version of the application from the server side. Microservices architecture works a little differently.
Rather than combining the user interface and data access code into a single program, microservices are disassembled into loosely coupled, independent services – which offers developers a number of benefits.
Let’s take a closer look at some of the lessons we’ve learned helping clients make the journey from monolith to microservices.
Why go micro?
Resilience: One of the key advantages of microservices is that if one service fails, the application continues to run. So with microservices, if one aspect of a system goes down, the impact on business is much less compared with single service architecture – where there’s always a danger of the entire system going down.
Cost Effectiveness: At the same time, the independence of microservices means they can be scaled autonomously. For example, if a website’s chat service is in high demand, the chat can be scaled independently, saving resources. Separate service scalability is also cost-effective because you’re only scaling something that’s in demand.
Should your startup choose mono or micro?
Microservices facilitate scalability in growing businesses. Doing so too soon may be overkill. They’re not always the right choice for a brand new startup, because their effectiveness only really comes into play when there are larger volumes of users, and you have clear oversight of which services you need to scale.
Also a team’s needed to manage microservices effectively – not ideal for a new startup who needs to move fast and build rather than maintain their tech stack; especially when resources and costs are already stretched.
However, for a growing application or SaaS, microservices make sense because they give you the scope to scale quickly, more frequently, and more selectively. They offer greater flexibility in terms of how you grow, and which direction you take.
Compliments from the cloud
Because microservices architecture is by its very nature granular, and broken down into components, it’s easier to maintain and improve. Having evolved alongside cloud-based solutions, microservices are highly compatible with platforms like Amazon’s AWS and Microsoft’s Azure.
In this way, microservices can be managed and monitored from anywhere, out of the box. This effectively means less time and effort spent on managing the architecture and a greater focus on application.
However, for microservices to work, they need a level of organizational readiness. And workable solutions can only happen with the understanding of everyone involved.
Using micro to go big
For smaller businesses with less than half a million customers, microservices architecture is not a prerequisite for functionality. However, for businesses that want to scale big, it’s a worthwhile investment.
One of our clients approached us because their microservice architecture was unfinished, and their lead developer was leaving. So Proshore was brought in to pick up where the lead developer had left off.
After our first meeting, we were aligned on our ways of thinking, and we met with the technical team. The organization was definitely microservice-ready, but they needed a development team to help continue the transition from monolith to micro.
And then we uncovered some key challenges.
Don’t rush production
The implementation of microservices architecture was taking longer than the client anticipated. Due to the lead developer leaving, they needed a swift handover, and had gone into production too quickly. What we found was just a codebase. It was not a suite of microservices.
As people started using this application, a lot of bugs started to emerge. So the Proshore team reached an impasse: should we focus on building features or monitoring for bugs?
We also uncovered one microservice that was stateful, not stateless. Because it was storing information and reacting differently to the same inputs, it would crash when there were lots of processes taking place at once. In turn, it would then crash the other services.
Scaling back to scale forward
Bringing Proshore on board enabled the client to scale more sustainably – by scaling back. Over the course of several months, we understood that the way we were moving wasn’t the right direction. However, further investigation showed a need to focus on fewer microservices at once, and ensure that effective monitoring was taking place.
Overall, with microservices, there are many aspects to consider depending on your business, and customer demands, from payment to email. Scaling sustainably is a long-term solution that requires robust testing and quality-assured roll-outs.
The value that Proshore offers is true consultancy and expertise. Our experience in scalable software development solutions makes us a valuable partner in your growth.
Our ‘development team as a service’ can help with strategy — as well as the technical stuff.