Martin Fowler gave this talk on Microservices at XCONF in which he describes at a high level what Microservices is along with some of the essential things you need to have in place before going live such as being able to spin up machines quickly and having monitoring in place with a DevOps culture.
Fowler explains the contrast and features of monolithic software design and Microservices and how with Microservices you can scale the supply of different services according to needs, allowing more flexibility and also partially deploy, something which encouraged Netflix to use a Microservices approach. The talk also goes into the similarities with service oriented architecture.
It’s as much a team organisational thing as it is a software architecture thing because of course software architecture and team organisation is always heavily coupled together anyone that denies that is leading themselves into trouble
Fowler is someone who listens intently in order to build his own conclusions about something and whilst he has built a deep understanding of Microservices architecture he talks about how he feels it needs a standard definition, something which was missing from service oriented architecture. What Fowler did was to create a list of characteristics which would define Microservices, for example componentization via services, organisation around the business capabilities, how things are connected to one another, decentralisation of data management and decision making and infrastructure automation whilst realising that things are going to fail (chaos monkey).
Each of these characteristics is explained in terms of how Microservices works across different technologies and organisations and processes.
A common question with Microservices is whether it is just SOA rebranded and Fowler also describes how he looks at Microservices as being a subset of SOA and the best way to approach deciding whether to use a monolith or Microservices.