What the F**k is a Microservice? A Reading List for the Perplexed


Alternative Text by Jamie Dobson

Nobody knows what a microservice is because the term is not defined. Or at least, it is defined but it’s defined differently by different people and always in vague terms like ‘small’ and ‘independent’. Small like an ant or a Mini? Independent like Beyonce or the state of Croatia?

The oldest trick in the marketeer’s book is to use vague terms. Think of ‘Accenture’ – FFS – it’s not even a word. Why did they choose this word and not something specific like, say, ‘Container Solutions’? The reason is projection. We all love to project ourselves, our prejudices, our hopes and fears onto everything we see. The more something is like a blank slate, the more we do this. The vagueness of the word ‘Accenture’ allows people to become whimsical as to what that consultancy can do for them. The answer is… well, you fill in the gap yourself.

This is why Apple products speak to so many people – their products are like blank slates. They speak to the old granny who wants simplicity, the hipster who wants to be cool (even though wanting to be cool is the very definition of being un-cool). All Apple users have been duped, tricked by their own ‘projection bias’ that Wikipedia says ‘is a feature in human thinking where one thinks that others [including organisations] have the same priority, attitude or belief that one harbours oneself, even if this is unlikely to be the case’.

I am convinced that the popularity of microservices is at least partially due to projection. Operations engineers breath a sigh of relief and think, ‘ah, no more monoliths’. Developers think, ‘small teams, awesome, no more coordinating with those wankers from Acc…’. Managers think, ‘great, no more gigantic, error prone, weekend releases’. People see what they want to see. (Except for Bruce Willis. He sees dead people.)

That all being said, I am also convinced that although microservices are hard to define, you’ll know them when you see them. The following reading/viewing list should help you to know them when you see them.

  • Take a look a Adrian’s Cockroft’s talk from the Ngnix conference from last year. Also, take a look at Mary Poppendieck’s keynote at the Software Craftsmanship Matters conference. Both these talks do a really good job of contextualising microservices.
  • The next thing to do is read Sam Newman’s book, Building MicroservicesSam does a really good job of explaining microservices. Although he starts with a definition that is pretty vague – “small, autonomous services that work together” – he spends the rest of the book expanding on this definition as well as providing extremely concrete guidance on how to succeed with microservices.
  • While you’re waiting for Sam’s book to arrive, check out Martin Fowler’s blog. Martin doesn’t pull his punches. In his blog entitled ‘MicroservicePremium’, he starts by saying that there’s enough talk about microservices ‘to get everyone’s over-hyped-bullshit detector up and flashing’. He then does a brilliant job of explaining the link between complexity and microservices as well as offering concrete advice.
  • In another blog, entitled Microservices, Martin and James Lewis, have a really good crack at defining the ‘microservice architectural style’.
  • The CEO of Container Solutions, London, Daniel Bryant has prepared an extensive reading list. If you get through his list, you’d be on your way to becoming an expert in microservices.
  • Finally, there’s Cisco’s Microservice Infrastructure project. This is an open source project that ‘is a modern platform for rapidly deploying globally distributed services’. This platform will get you started and introduce you to some of the features of proper microservice architectures. The project is nothing short of amazing. Download it, play with it, poke around.

I hope you find this list useful. My hope is that you see microservices for what they are – a good idea but they should only be used when necessary and with caution.

1 Comment

Leave a Reply

Your email address will not be published. Required fields are marked *