harisrid Tech News

Spanning across many domains – data, systems, algorithms, and personal

SYSTEMS – Building Micro Services for Enterprise Architectures – Why is this so hard?

“Why is this so hard?”

Hi all,

I want to step back in the realm of enterprise architecture and talk about business workflows. Specifically, the challenges I noticed.

(1) Pre-empting micro-services from becoming an untangled cobweb

A business workflow is more complex than a few lines of code – it’s a singular function ( or multiple functions ), where within each function, we make API service calls. The workflows are conductors who orchestra a business ; the micro services – the musicians – execute a plenitude of supporting business operations : REST operations, data mutation, statistical analysis, or security measures. The intrinsic complexity of workflows and service calls naturally lends itself to a collection of micro services – I’ve once used ten micro services ( back at Capital One ) to process customer assets.

For a singular workflow, managing the undergirding microservices is relatively straightforward. But the number of the complexity of workflows expands in lock step with overarching product complexity. Suddenly, Ia developer gets violently thrusted into a land where each workflow requires a number of services – some similar to others, and some drastically different.

So the question is – how to do we avoid building out to many micro services? Can we make the architecture as clean as possible? Ok, there’s a few things to think about before we build them :

What should I ask ( before I write )

  1. Do we need to create a micro service? The best micro service is no micro service.
  2. Can we create micro services that respect SRP – single responsibility pattern?
  3. Should we create micro services for singular standalone functions? Do we need to create a new module, in case we add further future functionality?
  4. Is it better to create separate micro services – for each workflow – or a shared micro service with workflow-tailored functions or conditional logic?
  5. Can I get rid of an existing micro service? Let’s remove what’s orphaned or unneeded.
  6. Can I make an existing service better and more comprehensive?

Posted in

Leave a comment