Microservices…. yes or no?? Is it even a valid question??

Mark O'Kane
3 min readFeb 10, 2021

The architecture of your application can determine how much benefit you get from deploying to cloud and even if it is worth doing it. If your application is monolithic, it can still be deployed to cloud but you won’t get the full benefits. Moving to a microservices based architecture will bring these benefits… with caveats.

Cloud-native apps i.e. apps that make full use of the benefits of cloud, are highly scalable, highly reliable and make full use of a CI/CD (Continuous Integration/Continuous Deployment) model supporting rapid development velocity, ease of deployment, and ease of management.

A microservices architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. This provides ease of debugging, updating, and rapid deployment with minimal, if any, impact on your running application. These small services can be as simple as a stand-alone login application.

The benefits of using a microservices architecture can be lost as a company expands as Uber discovered. Although they initially enjoyed the flexibility it provided in the form of independent deployments, clear ownership, improvements in system stability, and better separation of concerns they as their company expanded microservices led to greatly increase complexity, sometimes making even trivial features difficult to build. I recommend you look at their blog on “Domain-Oriented Microservice Architecture” (DOMA), where a domain represents a collection of one or more microservices tied to a logical grouping of functionality. Definitely one to look as a template to use for your code development.

Moving a monolithic app to a microservices based architecture can take time and money so make sure it is worth your while doing it. The technical debt can be too large for the benefits you will get and may involve a lot of code refactoring which in itself can cause issue if not done correctly.

When starting the migration, plan how you want to do it in terms of what will give you the most benefit up front. An example would be looking at logging in.. if your application usage is increasing, microservicing this to make it scalable would bring excellent benefits. Another area to look at is which section of the code has the most issues… look at microservicing this first to enable rapid deployment of fixes and use this as a chance to refactor the code for the troublesome section.

So to summarise… if you’re developing a new app, go for a microservices based architecture but plan to follow an approach similar to Ubers DOMA. Refactoring your monolithic application to make it cloud native, start simple and focus on where the most benefit will be gained.

Enjoy cloud to the most.

Next blog… DevOps… love it or hate it, you have to do it.

--

--

Mark O'Kane

Lover of all things technology... and my pets... can't forget about my pets.