It’s been two very exciting days at microXchg. The micro(-)service community is fairly young and just had it’s first dedicated conference. It was a great come together of a lot of people who created the most noise around the topic over the last couple of years. I can just highly recommend anyone interested in the field to stay tuned for the second iteration of the conference.
After spending two days in a row hearing about the different angles of micro(-)services one thing really stuck out to me. Apart from the micro level of a micro(-)service architecture, the actual service itself, the term seems to be a little misleading. Chad Fowler kind of found the right words when saying: “Maybe micro hyphen service architecture is just service architecture done right, which in turn is just software architecture done right”.
To me discussions about the size of the actual service or the number of actual services don’t really matter. The general design behind micro(-)service oriented software systems is highly driven by long known and well understood rules, principles and best practices of object oriented design.
It’s more about the certain characteristics that seem to be common among micro(-)service architectures. How easily can a service be deployed? How fast can it be rewritten? How long does it take for the developer to get feedback from the production system, for the business to gain knowledge about the latest changes?
The patterns and techniques that have evolved around the idea of micro(-)services are what makes it such a bleeding edge technology choice. The possibility to choose between the right balance between synchronous and asynchronous processing within a system. The freedom to decide about the right tools for different business needs. The ability to compose a whole system of multiple tiny parts. The safety of a disposable infrastructure. The ease of controlling and monitoring a living piece of software. The ability to execute and test ideas quickly. The speed of development and deployment. The really tight feedback loops. And finally the simple ability to do web scale at large. All those things, to me, are summarised under the probably not descriptive enough term — micro(-)service architecture.