thing well • Autonomous “Loosely coupled service oriented architecture with bounded contexts” Adrian Cockcroft (Netflix) “SOA done right” Anonymous “… services are independently deployable and scalable, each service also provides a firm module boundary, even allowing for different services to be written in different programming languages.” Martin Fowler (Thoughtworks)
domains • Unified technology choice From horizontal to vertical Change your approach to vertical partitions • Modeled after organization’s domains • Owned by team • Top to bottom • Isolated from each other as much as possible
in other components. No Coupling Error and changes seldom propagate errors and changes to dependent components Low Coupling Errors and changes in one component almost always propagate to other components High Coupling Measurement of dependency between two components • Expressed as sensitivity towards propagation of changes and errors
belong together Levels: Coincidental cohesion (worst) • random Logical cohesion • same in nature Temporal cohesion • executed at a particular time Procedural cohesion • part of fixed execution sequence Informational cohesion • operating on the same data Sequential cohesion • Output of one is used as input by another Functional cohesion (best) • contributing to a single task
teams around a component • Independently deployable • Own data storage Source: http://ottodev.files.wordpress.com/2013/11/teile-und-herrsche- kleine-systeme-fc3bcr-groc39fe-architekturen.pdf
(on website) • Well defined interfaces • No shared code or state • REST interfaces for each vertical – Pull based data replication – Front end integration (JavaScript/Edge includes)
Events are used to notify changes • Systems use events to replicate data • Each system will have it’s own database • Downsides: – Latency in data changes – No central control of business logic
Events Commands MS4 UI UI UI All inter-service communication is asynchronous Mostly resource based REST APIs Teams own UI as well (Don’t) share database schema per partition Elements of Event Driven Architecture Async calls to other services Choose appropriate technology per service UI is resilient to failing or unavailable services
Host Micro Service Micro Service Micro Service Micro Service Host Micro Service Host Micro Service Host Micro Service Host Micro Service Hosting in application container High density hosting One service per host
and practices • Adding complexity for simplicity • No silver bullet or golden hammer • Suitable for modern business oriented apps • A journey to achieve benefits