- The Technical Debt Trap by Doc Norton
- Software Architecture vs Code by Simon Brown
- One Hacker Way by Erik Meijer
Can I Haz Name?
All this hype about microservices makes me sad. And not about the concept, but about the name. As I wrote before, “micro” in “microservices” means absolutely nothing. What is worse, it confuses everybody. Again and again I see people focusing on “micro” and falling into nanoservices trap.
Nanoservice is an antipattern where a service is too fine-grained. A nanoservice is a service whose overhead (communications, maintenance, and so on) outweighs its utility.
—Arnon Rotem-Gal-Oz
So I decided to look for a better name. It should be sticky and easy to remember. It should not focus on size, or any other questionable aspect. And it may be fine if it still means nothing - as long as this nothing does not have confusing semantics.
Let start with abbreviation. It probably will end with SA - Service Architecture. Let leave RSA to Reactive Manifesto camp. NSA - too bad association. BSA - should be reserved for BS Architecture.
I think I like USA. Let create Ultra Services Architecture!
Microservices, Macroservices, Shmackroservices: What’s in a Name?
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).
WTH Is SOA?
To start with, we are not discussing Sons of Anarchy or Society of Actuaries. This is about Service-Oriented Architecture. But what is Service-Oriented Architecture?
Our usual suspect, wikipedia, says:
Service-oriented architecture (SOA) is a software design and software architecture design pattern based on distinct pieces of software providing application functionality as services to other applications. This is known as service-orientation. It is independent of any vendor, product or technology.[1] – http://en.wikipedia.org/wiki/Service-oriented_architecture, 09/18/2014
Let try to digest.
architecture […] is a software design and software architecture design pattern
Awesome! After all these years of debates about differences between architecture and design, in one phrase we can see that they are not only the same, but, at least in the case of SOA, also the same as design pattern!
pieces of software providing application functionality as services to other applications
OK. Got it. Services are providing functionality as services. And they are pieces of software. And, looking at definition, they are not necessarily applications, but have to provide application functionality, and have to be used by applications. Basically, “application of service applications as services to application services”
This is known as service-orientation.
What “this”? SOA?