Organizational ComplexityTeams that are expected to rapidly deploy features and improvements are typically looking for ways to cut down on organizational complexity. If you need to involve 5 teams in a project, there is more overhead such as communication, politics, schedules, technologies and processes.Microservices is an approach to software design and software development based on small, independently deployable services. Such services act as bulkheads that improve operational resilience as they can be deployed independently of all other systems. Microservices also allow a single small team to develop a product alone in a dark room somewhere without involving much organizational complexity.Complex integration platforms tend to be run by a separate team. An organization that runs all service messaging through a single platform would need to involve this team in most projects. This isn't attractive to microservice teams who want to build, own and operate their own small services.Microservices teams may prefer to put communication intelligence such as timeout-retry into communication endpoints, in this case microservices, rather than deal with communication platforms that require specialists to customize and operate.Communication technologies represent a potential single point of failure that can bring down all services at once. As such, time-tested and straightforward asynchronous communication reinforces the resilience of a microservices architecture.
|Overview: Smart Endpoints And Dumb Pipes|
A design principle that favors basic, time-tested, asynchronous communication mechanisms.