“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
Microservices are an architecture used by very large, modern IT systems such as LinkedIn, Netflix, Amazon and eBay. There’s all sorts of interesting aspects to Micro Services, e.g. the GUI part, security, transactional integrity, versioning etc.
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.
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!