Microservices : Small or smaller?

Microservices : Small or smaller?

In a recent project i'm working on we are working with microservices and domain driven design approach. There was quite some discussion on how small or large microservices should be, as always every engineer has their own opinion and arguments :-)

In the project there are multiple teams and plans to scale the project up to even more teams, which is why a microservice approach was chosen in the first place. Interestingly the teams have chosen a different approach for how small or large their microservices should be. So i'm going to explore the consequences of those choices here.

In this blog i'm not going to replicate the arguments for small or large microservices, there is already excellent articles on that subject, i recommend reading for example this article.

Let's look at the choices the teams made and the consequences:

Obviously the above is biased by my personal opinion and not completely factual. I believe though that the choice to make microservices very small means (initially) development of product functionality is slowed down.

Reason for the choice to make microservices so small was to lay a foundation so that the team can be split easily, so bascially frontloading some of the work. When the team with the larger microservice will be split, we'll have to do that work at that time.

I'm going conclude this article with my recommendation to be aware of the consequences of whatever choice you make. If you have personal stories or anecdotes, please comment, i'm interested you hear your experiences and opinions!


Eike, whether many smaller services or a single big service is better, depends on a large number of factors, which we can often not foresee. That's why I would suggest taking the evolutionary approach. Frameworks like AxonFramework help you in achieving that. Start off with a monolith (mainly dictated by bounded context [DDD]) per team. When using the proper messaging abstractions between these components, you can always decide to separate certain components from your monolith and deploy them separately. Usually, the forces in play that 'hint'towards the need of separation are team-split, scalability requirements or an obvious difference in release cycle of these components. So instead of prematurely optimizing (and spending a lot of time on infrastructure), I would recommend delivering into production faster and finding out where exactly the benefits of splitting it up are.

To view or add a comment, sign in

More articles by Eike Dehling

  • Uurtarieven van ZZPers in Kinderopvang

    Worstel jij ook met je uurtarief? Ben je onzeker over je marktwaarde? Julia had hetzelfde probleem en vond een…

  • Scaling up our platform

    we've been working on Tadaah, a gig-economy platform for two and a half years now. Starting from scratch in spare time,…

  • Delivering software

    There is various styles of delivering software to customers, each with their own strong and weak points. You can make…

  • Search Relevance Tricks

    At Textkernel we build software for matching people with jobs, for example extraction, search and recommendation…

    2 Comments
  • Searching with Deep Learning

    Recently i helped my colleague data scientists with engineering a search system based on their Deep Learning models…

    13 Comments
  • Improving search results using Click Metrics

    As users are using a search system, they're constantly leaving clues about result quality. Every time a user clicks on…

  • Big data analysis with Spark

    Did i get your attention with the keywords in the headline? This article is not about setting up multi machine clusters…

  • Heterogeneous microservices

    Microservices architecture is increasingly popular nowadays. One of the promises is flexibility and easier working in…

  • Machine Learning: Predicting house prices

    Recently i have followed an online course on machine learning to understand the current hype better. As with any…

  • Getting (automated) testing right

    In this blog post i am sharing a success and some lessons we had in a recent customer project, regarding our…

Explore content categories