"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.
|
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?
PS: when searching for the term "micro service", I
found the term also in the book "Java Web Services Architecture" back
from 2003!
Author: Guy