"Micro Services" is a new buzzword in world of IT architects. As it talks about application components communicating over a network and contains "services", it probably has something to do with SOA and integration. So I had to look into it.
Let's bulletize the description from the article by Martin Fowler and James Lewis:
- The Microservices architectural style is an approach to
- developing a single application < application architecture
- as a suite of small services, < componentization, no libraries
- each (service) running in its own process
- and communicating with lightweight mechanisms, < over the network
- often an HTTP resource API. < REST, message bus
- These services are built around business capabilities < Domain Driven Design
- and independently deployable by fully automated deployment machinery.
- There is a bare minimum of centralized management of these services,
- which may be written in different programming languages and
- use different data storage technologies < eventual consistency
Conway law - Integration Competence Center
But there was one aspect that triggered me in particular when learning about Microservices: Conway Law: "any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure".
So this law states that an application architecture will reflect the way an IT department is organized. Microservices advocates refer a lot to it.
Service boundaries reinforced by team boundaries (picture from article by Martin Fowler) |
For Microservices to focus and align with business functionality, the teams developing (and maintaining) the Microservices should therefore be cross-functional, including the full range of skills required for the development: user-experience, database, and project management.
Orthogonal to the view of the Microservices architects, that Conway Law confirms my personal view and opinion that any IT organization that wishes to leverage a central integration platform to a great extent, requires a separate team developing on and managing that integration platform.
How did I learn about MicroServices?
- The Microservices article by Martin Fowler and James Lewis
- Rough cut version of the O'Reilly book "Building Microservices" by Sam Newman
- Software Engineering Radio podcast episode with Stefan Tilkov
- Software Engineering Radio podcast with James Lewis
- SAI evening session I attended with great presentation by Stijn van den Enden and colleagues
PS: when searching for the term "micro service", I found the term also in the book "Java Web Services Architecture" back from 2003!