Over the last few years the new hype took over the software industry: “Microservices”. It started slowly, with articles and presentations popping here and there, and now it is everywhere. The most interesting part is that the industry still cannot agree on what “Microservices” really are (or even, how to write them - Microservices, Micro-services or Micro Services)
In March of 2014 James Lewis and Martin Fowler published an article in an attempt to summarize the meaning of this term (and contributing to the hype wide spread).
Interlude: Conspiracy Theory
The term “microservice” was discussed at a workshop of software architects near Venice in May, 2011 to describe what the participants saw as a common architectural style that many of them had been recently exploring. In May 2012, the same group decided on “microservices” as the most appropriate name.— James Lewis & Martin Fowler, March 25, 2014
Yep, anonymous workshop of anonymous architects anonymously decided on “microservices” as the most appropriate name… BTW, were they all from the same anonymous company?
Originally (and, AFAIK, even in the first revision of the Lewis & Fowler article) Microservices had a strong emphasis on Micro, and even referred to a 10-100 LOC size guideline. After getting pretty strong pushback on any size limitations from many practitioners, all the size references were gone (finally a reality check?), and “Micro” part started to be more and more frequently referred as being “just a name”
With “Micro” semantics dropped out of the picture, it became obvious (to many people, though there is no real consensus here neither) that Microservices are just SOA striving for a new identity, because an old one had too bad reputation.
I guess it is easier to use a new name (Microservices) rather than say that this is what SOA actually meant - re http://t.co/gvhxDfDWLG— Arnon Rotem-Gal-Oz (@arnonrgo) March 16, 2014
@UncleGene Micro-Services are just SOA done properly – simple functionality, well-defined interfaces, minimal dependencies— Randy Shoup (@randyshoup) November 7, 2014
So, to understand what “Microservices” really are, we should first understand what is SOA (and what is SOA done properly). Rose may smell sweet by any name, but if you step into [something] - you can name it a rose (or micro[something]), but smell will not change until you clean up your shoes.
You can see my “tongue-in-cheek” definition here, please stay tuned for the real one coming soon.
But for now, just one takeaway: “Micro” in “Microservices” means absolutely nothing.