Service-Oriented Architecture (SOA) is a very broad term and practically meaningless. Microservices is a subset of SOA with the value being that it allows us to put a label on this useful subset of SOA terminology, Martin Fowler stated in his keynote opening the GOTO Berlin Conference.
Martin finds it hard to come up with a definition of Microservices, instead he prefers to look at common characteristics, i.e. things that most of the people working with Microservices are doing. The most interesting characteristics include:
- Componentization, the ability to replace parts of a system, comparing with stereo components where each piece can be replaced independently from the others.
- Organisation around business capabilities instead of around technology.
- Smart endpoints and dumb pipes, explicitly avoiding the use of an Enterprise Service Bus (ESB).
- Decentralised data management with one database for each service instead of one database for a whole company.
- Infrastructure automation with continuous delivery being mandatory.
One problem with the term Microservice is it’s implication of size, but Martin’s experience is that people are very reluctant to define the size, instead preferring to talk about responsibility which is an equally vague definition. One commonly accepted way limiting the size upwards is using a two-pizza team.
An important Monolith advantage is its relatively simple and familiar approach for many developers; an advantage Martin notes should not be underestimated. Another is refactoring, especially between modules. If boundaries needs to be changed that is relatively easy to do compared with Microservices, where parts of one service may need to be moved to another service, a more complex refactoring.
Two important advantages for Microservices are the ability to deploy different services independently, and reliability, due to the ability for a service to run even if another service is down. One final advantage is the ability to build them on different platforms, e.g. as a way to experiment with a new language.
Earlier this year Martin and James Lewis wrote an article describing Microservices.
InfoQ contains numerous resources about Microservices, including an eMag.
The GOTO Berlin Conference 2014 is the second GOTO conference in Berlin, with around 550 attendees and 80 speakers.